import { PrismaClient } from "@prisma/client"; import { PrismaMariaDb } from "@prisma/adapter-mariadb"; import "dotenv/config"; const base = process.env.DATABASE_URL || "mysql://localhost:3306/zhuiguang_ai?charset=utf8mb4"; const sep = base.includes("?") ? "&" : "?"; const connectionString = `${base}${sep}connection_limit=20&pool_timeout=30`; const adapter = new PrismaMariaDb(connectionString); const prisma = new PrismaClient({ adapter }); async function main() { console.log("🔧 内容整理脚本\n"); // 1. 删除 JavaGuide 的评测(非AI项目不应有评测) const javaGuide = await prisma.skillReview.findFirst({ where: { skill: { name: { contains: "JavaGuide" } } }, include: { skill: true }, }); if (javaGuide) { await prisma.skillReview.delete({ where: { id: javaGuide.id } }); console.log(`🗑️ 已删除 JavaGuide 评测 #${javaGuide.id}`); } // 2. 删除 system-prompts 评测(纯资源收集,非AI工具) const sysPrompts = await prisma.skillReview.findFirst({ where: { skill: { name: { contains: "system-prompts" } } }, include: { skill: true }, }); if (sysPrompts) { await prisma.skillReview.delete({ where: { id: sysPrompts.id } }); console.log(`🗑️ 已删除 system-prompts 评测 #${sysPrompts.id}`); } // 3. 发布所有 DRAFT 评测 const draftReviews = await prisma.skillReview.findMany({ where: { status: "DRAFT" }, include: { skill: { select: { name: true } } }, }); for (const r of draftReviews) { await prisma.skillReview.update({ where: { id: r.id }, data: { status: "PUBLISHED" }, }); console.log(`✅ 已发布评测 #${r.id}: ${r.skill.name} (overall: ${r.overall})`); } // 4. 发布所有 DRAFT 技能 const draftSkills = await prisma.skill.findMany({ where: { status: "draft" }, }); for (const s of draftSkills) { await prisma.skill.update({ where: { id: s.id }, data: { status: "published" }, }); console.log(`✅ 已发布技能 #${s.id}: ${s.name}`); } // 5. 统计最终状态 const [skillTotal, publishedSkills, reviewTotal, publishedReviews] = await Promise.all([ prisma.skill.count(), prisma.skill.count({ where: { status: "published" } }), prisma.skillReview.count(), prisma.skillReview.count({ where: { status: "PUBLISHED" } }), ]); console.log(`\n📊 整理后状态:`); console.log(` 技能: ${publishedSkills}/${skillTotal} 已发布`); console.log(` 评测: ${publishedReviews}/${reviewTotal} 已发布`); } main() .catch((e) => { console.error("💥", e.message); process.exit(1); }) .finally(() => prisma.$disconnect());