全项目扫描修复: Docker数据卷修复+安全requireAdmin+12页SEO+API白名单+脚本超时+常量提取+假数据删除

This commit is contained in:
ZhuiGuangAI Dev
2026-06-12 17:27:47 +08:00
parent 464924aea0
commit 4c325c8699
454 changed files with 33647 additions and 980 deletions
+100
View File
@@ -0,0 +1,100 @@
// 把新加的 33 个数字路人同步到数据库
// 只插入 user 表里还不存在的 bot_<key>@zhuiguang.ai
import { PrismaClient } from "@prisma/client";
import { PrismaMariaDb } from "@prisma/adapter-mariadb";
import { readFileSync } from "fs";
import { resolve, dirname } from "path";
import { fileURLToPath } from "url";
import "dotenv/config";
const __dirname = dirname(fileURLToPath(import.meta.url));
const base = process.env.DATABASE_URL.replace("mysql://", "mariadb://");
const sep = base.includes("?") ? "&" : "?";
const connectionString = `${base}${sep}connection_limit=5&pool_timeout=10`;
const adapter = new PrismaMariaDb(connectionString);
const prisma = new PrismaClient({ adapter });
const BOT_DATA_PATH = resolve(__dirname, "..", "data", "bot-characters.json");
async function main() {
const raw = readFileSync(BOT_DATA_PATH, "utf-8");
const { characters } = JSON.parse(raw);
const passersby = characters.filter((c) => c.role === "passerby");
console.log(`观察者总数(JSON): ${passersby.length}`);
let created = 0;
let skipped = 0;
for (const char of passersby) {
const existing = await prisma.user.findUnique({
where: { email: char.email },
include: { botConfig: true },
});
if (existing && existing.botConfig) {
// 已经存在,更新一下 primaryForums / activeHours
await prisma.botConfig.update({
where: { userId: existing.id },
data: {
displayName: char.displayName,
personality: char.personality,
primaryForums: char.primaryForums,
activeHours: char.activeHours,
},
});
skipped++;
continue;
}
if (existing && !existing.botConfig) {
await prisma.botConfig.create({
data: {
userId: existing.id,
displayName: char.displayName,
personality: char.personality,
primaryForums: char.primaryForums,
activeHours: char.activeHours,
},
});
skipped++;
continue;
}
// 完全新用户
const user = await prisma.user.create({
data: {
email: char.email,
name: char.displayName,
oauthProvider: "bot",
oauthId: `bot_${char.key}`,
role: "user",
isBot: true,
},
});
await prisma.botConfig.create({
data: {
userId: user.id,
displayName: char.displayName,
personality: char.personality,
primaryForums: char.primaryForums,
activeHours: char.activeHours,
},
});
created++;
}
console.log(`新增路人用户: ${created}, 跳过(已存在): ${skipped}`);
const totalBots = await prisma.user.count({ where: { isBot: true } });
console.log(`数据库中 bot 用户总数: ${totalBots}`);
}
main()
.catch((e) => {
console.error(e);
process.exit(1);
})
.finally(() => prisma.$disconnect());