v0.11.1: 权限体系重构 + AI管线优化 + 内容整理
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
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");
|
||||
|
||||
const [skillCount, publishedSkillCount, draftSkillCount, reviewCount, publishedReviewCount, draftReviewCount, dailyReportCount, publishedDailyCount, toolCount, publishedToolCount, pendingToolCount, pendingSkillCount] = await Promise.all([
|
||||
prisma.skill.count(),
|
||||
prisma.skill.count({ where: { status: "published" } }),
|
||||
prisma.skill.count({ where: { status: "draft" } }),
|
||||
prisma.skillReview.count(),
|
||||
prisma.skillReview.count({ where: { status: "PUBLISHED" } }),
|
||||
prisma.skillReview.count({ where: { status: "DRAFT" } }),
|
||||
prisma.dailyReport.count(),
|
||||
prisma.dailyReport.count({ where: { status: "published" } }),
|
||||
prisma.tool.count(),
|
||||
prisma.tool.count({ where: { status: "published" } }),
|
||||
prisma.pendingTool.count(),
|
||||
prisma.pendingSkill.count(),
|
||||
]);
|
||||
|
||||
console.log("=== 技能 ===");
|
||||
console.log(` 总数: ${skillCount} | 已发布: ${publishedSkillCount} | 草稿: ${draftSkillCount}`);
|
||||
console.log(` 待审核: ${pendingSkillCount}`);
|
||||
|
||||
console.log("\n=== 评测 ===");
|
||||
console.log(` 总数: ${reviewCount} | 已发布: ${publishedReviewCount} | 草稿: ${draftReviewCount}`);
|
||||
|
||||
console.log("\n=== 日报 ===");
|
||||
console.log(` 总数: ${dailyReportCount} | 已发布: ${publishedDailyCount}`);
|
||||
|
||||
console.log("\n=== 工具 ===");
|
||||
console.log(` 总数: ${toolCount} | 已发布: ${publishedToolCount} | 待审核: ${pendingToolCount}`);
|
||||
|
||||
console.log("\n=== 技能详情 ===");
|
||||
const skills = await prisma.skill.findMany({
|
||||
select: {
|
||||
id: true, name: true, status: true, rating: true,
|
||||
sourceUrl: true, description: true,
|
||||
skillReview: { select: { id: true, overall: true, status: true, longArticle: true, videoScript: true, socialCards: true } },
|
||||
},
|
||||
orderBy: { id: "desc" },
|
||||
});
|
||||
|
||||
for (const s of skills) {
|
||||
const r = s.skillReview;
|
||||
const hasContent = !!(r?.longArticle || r?.videoScript || r?.socialCards);
|
||||
console.log(` #${s.id} [${s.status}] ${s.name} ⭐${s.rating} | 评测:${r ? `${r.overall}(${r.status})` : "无"} | 内容:${hasContent ? "✅" : "❌"} | ${s.description?.substring(0, 60) || "无描述"}`);
|
||||
}
|
||||
|
||||
console.log("\n=== 评测详情 ===");
|
||||
const reviews = await prisma.skillReview.findMany({
|
||||
include: { skill: { select: { name: true } } },
|
||||
orderBy: { id: "desc" },
|
||||
});
|
||||
|
||||
for (const r of reviews) {
|
||||
const reviewsData = r.reviews;
|
||||
const dims = reviewsData ? {
|
||||
cap: reviewsData.capability?.score,
|
||||
dev: reviewsData.devExp?.score,
|
||||
cost: reviewsData.costLicense?.score,
|
||||
comm: reviewsData.community?.score,
|
||||
perf: reviewsData.performance?.score,
|
||||
} : {};
|
||||
console.log(` #${r.id} [${r.status}] ${r.skill.name} | overall:${r.overall} | cap:${dims.cap} dev:${dims.dev} cost:${dims.cost} comm:${dims.comm} perf:${dims.perf}`);
|
||||
console.log(` 长文:${r.longArticle ? `${String(r.longArticle).length}字` : "无"} | 脚本:${r.videoScript ? `${String(r.videoScript).length}字` : "无"} | 卡片:${r.socialCards ? "有" : "无"}`);
|
||||
}
|
||||
|
||||
console.log("\n=== 日报详情 ===");
|
||||
const reports = await prisma.dailyReport.findMany({
|
||||
orderBy: { id: "desc" },
|
||||
take: 5,
|
||||
});
|
||||
for (const r of reports) {
|
||||
console.log(` #${r.id} [${r.status}] ${r.title} | ${r.reportDate?.toISOString().split("T")[0]}`);
|
||||
}
|
||||
}
|
||||
|
||||
main()
|
||||
.catch((e) => { console.error("💥", e.message); process.exit(1); })
|
||||
.finally(() => prisma.$disconnect());
|
||||
Reference in New Issue
Block a user