From c28698cd5c4f96a012516d60e188d05f82f0c8ba Mon Sep 17 00:00:00 2001 From: koreacomp5 Date: Thu, 9 Oct 2025 18:50:02 +0900 Subject: [PATCH] =?UTF-8?q?10.6=20=EC=B9=B4=ED=85=8C=EA=B3=A0=EB=A6=AC=20?= =?UTF-8?q?=EC=9C=A0=ED=98=95/=EC=84=A4=EC=A0=95=20=EA=B4=80=EB=A6=AC(?= =?UTF-8?q?=EC=9D=BC=EB=B0=98/=ED=8A=B9=EC=88=98/=EC=8A=B9=EC=9D=B8/?= =?UTF-8?q?=EB=A0=88=EB=B2=A8/=EC=9D=B5=EB=AA=85/=ED=83=9C=EA=B7=B8)=20o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/admin/boards/page.tsx | 9 +++++++++ src/app/api/admin/boards/[id]/route.ts | 8 +++++++- todolist.txt | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/app/admin/boards/page.tsx b/src/app/admin/boards/page.tsx index caa9efa..3f8b9ce 100644 --- a/src/app/admin/boards/page.tsx +++ b/src/app/admin/boards/page.tsx @@ -27,6 +27,8 @@ export default function AdminBoardsPage() { 익명 비밀댓 승인 + 유형 + 성인 정렬 @@ -66,6 +68,13 @@ function Row({ b, onSave, saving }: { b: any; onSave: (b: any) => void; saving: setEdit({ ...edit, allowAnonymousPost: e.target.checked })} /> setEdit({ ...edit, allowSecretComment: e.target.checked })} /> setEdit({ ...edit, requiresApproval: e.target.checked })} /> + + + + setEdit({ ...edit, isAdultOnly: e.target.checked })} /> setEdit({ ...edit, sortOrder: Number(e.target.value) })} style={{ width: 80 }} /> diff --git a/src/app/api/admin/boards/[id]/route.ts b/src/app/api/admin/boards/[id]/route.ts index 0924bc2..a962eb6 100644 --- a/src/app/api/admin/boards/[id]/route.ts +++ b/src/app/api/admin/boards/[id]/route.ts @@ -5,9 +5,15 @@ export async function PATCH(req: Request, context: { params: Promise<{ id: strin const { id } = await context.params; const body = await req.json().catch(() => ({})); const data: any = {}; - for (const k of ["name", "slug", "description", "sortOrder", "readLevel", "writeLevel", "allowAnonymousPost", "allowSecretComment", "requiresApproval", "status"]) { + for (const k of ["name", "slug", "description", "sortOrder", "readLevel", "writeLevel", "allowAnonymousPost", "allowSecretComment", "requiresApproval", "status", "type", "isAdultOnly"]) { if (k in body) data[k] = body[k]; } + if ("requiredTags" in body) { + try { data.requiredTags = typeof body.requiredTags === "string" ? JSON.parse(body.requiredTags) : body.requiredTags; } catch { /* ignore invalid */ } + } + if ("requiredFields" in body) { + try { data.requiredFields = typeof body.requiredFields === "string" ? JSON.parse(body.requiredFields) : body.requiredFields; } catch { /* ignore invalid */ } + } const updated = await prisma.board.update({ where: { id }, data }); return NextResponse.json({ board: updated }); } diff --git a/todolist.txt b/todolist.txt index 3dc3fd2..d384f4b 100644 --- a/todolist.txt +++ b/todolist.txt @@ -74,7 +74,7 @@ 10.3 사용자 검색/정지/권한 변경 o 10.4 공지/배너 등록 및 노출 설정 o 10.5 감사 이력/신고 내역/열람 로그 o -10.6 카테고리 유형/설정 관리(일반/특수/승인/레벨/익명/태그) +10.6 카테고리 유형/설정 관리(일반/특수/승인/레벨/익명/태그) o [테스트/품질] 11.1 유닛 테스트(서비스/리포지토리)