55 lines
2.0 KiB
JavaScript
55 lines
2.0 KiB
JavaScript
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").replace("mysql://", "mariadb://");
|
|
const sep = base.includes("?") ? "&" : "?";
|
|
const connectionString = `${base}${sep}connection_limit=20&pool_timeout=30`;
|
|
const adapter = new PrismaMariaDb(connectionString);
|
|
const prisma = new PrismaClient({ adapter });
|
|
|
|
const NON_AI_PATTERNS = [
|
|
"book", "guide", "tutorial", "awesome", "interview",
|
|
"notes", "handbook", "cheatsheet", "cheat-sheet", "roadmap",
|
|
"everything you need to know",
|
|
"StableDiffusionBook",
|
|
"Claude-Code-Everything-You-Need-to-Know",
|
|
"Snailclimb/JavaGuide",
|
|
"pathwaycom/pathway",
|
|
"Shubhamsaboo/awesome-llm-apps",
|
|
];
|
|
|
|
async function main() {
|
|
console.log("🧹 清理误入库的非AI技能数据\n");
|
|
|
|
const skills = await prisma.skill.findMany({
|
|
select: { id: true, name: true, sourceUrl: true, status: true },
|
|
});
|
|
|
|
let cleaned = 0;
|
|
for (const skill of skills) {
|
|
const name = skill.name.toLowerCase();
|
|
const isNonAI = NON_AI_PATTERNS.some((p) => name.includes(p.toLowerCase()));
|
|
if (isNonAI && skill.status === "draft") {
|
|
await prisma.skillReview.deleteMany({ where: { skillId: skill.id } });
|
|
await prisma.reviewGenerationLog.deleteMany({ where: { skillId: skill.id } });
|
|
await prisma.skill.delete({ where: { id: skill.id } });
|
|
console.log(`🗑️ 已删除: ${skill.name}`);
|
|
cleaned++;
|
|
} else if (isNonAI) {
|
|
await prisma.skill.update({
|
|
where: { id: skill.id },
|
|
data: { status: "draft" },
|
|
});
|
|
console.log(`📝 已标记为draft: ${skill.name}`);
|
|
cleaned++;
|
|
}
|
|
}
|
|
|
|
if (cleaned === 0) console.log("✅ 没有需要清理的误入数据");
|
|
else console.log(`\n✅ 已清理 ${cleaned} 条数据`);
|
|
}
|
|
|
|
main()
|
|
.catch((e) => { console.error("💥 清理失败:", e.message); process.exit(1); })
|
|
.finally(() => prisma.$disconnect()); |