// 已读取AGENTS.md import * as fs from 'fs'; import * as path from 'path'; /** * 第六十三批回归闸门:历史数据归属订正脚本(默认 dry-run,需 --apply 才写库) */ describe('第六十三批历史数据订正脚本闸门', () => { const rootDir = path.resolve(__dirname, '../../'); const scriptPath = path.join(rootDir, 'server/scripts/backfill-ownership.ts'); const script = fs.readFileSync(scriptPath, 'utf-8'); const pkg = JSON.parse(fs.readFileSync(path.join(rootDir, 'server/package.json'), 'utf-8')); it('脚本默认只预览,需 --apply 才写库', () => { expect(script).toContain("process.argv.includes('--apply')"); expect(script).toContain('DRY-RUN'); expect(script).toContain('APPLY(写库)'); }); it('覆盖 companions.user_id 与 finance_records.user_id 的订正', () => { expect(script).toContain('backfillCompanions'); expect(script).toContain('UPDATE companions SET user_id = ? WHERE id = ? AND user_id IS NULL'); expect(script).toContain('backfillFinanceRecords'); expect(script).toContain('UPDATE finance_records SET user_id = ? WHERE id = ?'); }); it('提供 npm 脚本入口', () => { expect(pkg.scripts['backfill:ownership']).toContain('scripts/backfill-ownership.ts'); }); });