From 6ae590b3b283ad717a9e8deae45b91d0bf10e576 Mon Sep 17 00:00:00 2001 From: mota Date: Mon, 13 Oct 2025 07:23:08 +0900 Subject: [PATCH] =?UTF-8?q?=EC=8B=A4=EC=A0=9C=20=EC=B9=B4=ED=85=8C?= =?UTF-8?q?=EA=B3=A0=EB=A6=AC=EC=97=90=20=EB=A7=9E=EA=B2=8C=20seed=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prisma/seed.js | 45 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/prisma/seed.js b/prisma/seed.js index 27defae..8978486 100644 --- a/prisma/seed.js +++ b/prisma/seed.js @@ -3,11 +3,15 @@ const { PrismaClient } = require("@prisma/client"); const prisma = new PrismaClient(); async function upsertCategories() { + // 카테고리 트리 (projectmemo 기준 상위 그룹) const categories = [ - { name: "운영", slug: "ops", sortOrder: 1, status: "active" }, - { name: "커뮤니티", slug: "community", sortOrder: 2, status: "active" }, - { name: "특수", slug: "special", sortOrder: 3, status: "active" }, - { name: "제휴", slug: "partners", sortOrder: 4, status: "active" }, + { name: "암실소문 (메인)", slug: "main", sortOrder: 1, status: "active" }, + { name: "명예의 전당", slug: "hall-of-fame", sortOrder: 2, status: "active" }, + { name: "주변 제휴업체", slug: "nearby-partners", sortOrder: 3, status: "active" }, + { name: "제휴업소 정보", slug: "partner-info", sortOrder: 4, status: "active" }, + { name: "방문후기", slug: "reviews", sortOrder: 5, status: "active" }, + { name: "소통방", slug: "community", sortOrder: 6, status: "active" }, + { name: "광고/제휴 문반", slug: "ads-affiliates", sortOrder: 7, status: "active" }, ]; const map = {}; for (const c of categories) { @@ -130,12 +134,33 @@ async function upsertBoards(admin, categoryMap) { const created = []; for (const b of boards) { - // 카테고리 매핑 규칙 - let categorySlug = "community"; - if (["notice", "bug-report"].includes(b.slug)) categorySlug = "ops"; - if (["attendance", "nearby-partners", "ranking", "free-coupons", "monthly-stats"].includes(b.slug)) categorySlug = "special"; - if (["partners-photos"].includes(b.slug)) categorySlug = "partners"; - + // 카테고리 매핑 규칙 (트리 기준 상위 카테고리) + const mapBySlug = { + // 암실소문 (메인) + notice: "main", + greetings: "main", + "bug-report": "main", + event: "main", + attendance: "main", + // 명예의 전당 + ranking: "hall-of-fame", + "free-coupons": "hall-of-fame", + "monthly-stats": "hall-of-fame", + // 주변 제휴업체 + "nearby-partners": "nearby-partners", + // 제휴업소 정보 + "partners-photos": "partner-info", + // 방문후기 + reviews: "reviews", + // 소통방(기본값 community로 처리) + free: "community", + qna: "community", + tips: "community", + anonymous: "community", + "find-therapist": "community", + "blue-house": "community", + }; + const categorySlug = mapBySlug[b.slug] || "community"; const category = categoryMap[categorySlug]; const board = await prisma.board.upsert({ where: { slug: b.slug },