#!/usr/bin/env node /** * 清库重建的显式闸门。 * * `prisma migrate reset --force` 会清空全部表并重新 seed,所有账号密码都会 * 回到初始值;开发/联调中误执行会直接丢掉本地改过的密码与业务数据。 * 因此必须显式设置 ALLOW_DB_RESET=1 才放行,日常初始化请用 `pnpm db:init`。 */ import { spawnSync } from 'node:child_process'; const allowed = process.env.ALLOW_DB_RESET === '1'; if (!allowed) { console.error(` ⛔ 已阻止 pnpm db:reset。 该命令会清空本地数据库并重新 seed,所有账号密码都会回到初始密码 (admin / jiang.lan 等种子账号 → lingxi2026,且 must_change_password=true)。 - 日常迁移 + 幂等种子(不改已有密码):pnpm db:init - 确实需要清库时,显式执行: ALLOW_DB_RESET=1 pnpm db:reset `); process.exit(1); } console.warn('⚠️ ALLOW_DB_RESET=1:即将清空数据库并重新 seed,所有账号密码会重置为初始值。'); const command = process.platform === 'win32' ? 'pnpm.cmd' : 'pnpm'; const result = spawnSync(command, ['exec', 'prisma', 'migrate', 'reset', '--force'], { stdio: 'inherit', }); if (result.error) { console.error('执行 prisma migrate reset 失败:', result.error.message); process.exit(1); } process.exit(result.status ?? 1);