文件
shanghaipeiwan/server/tests/backfill-ownership.spec.ts
xcbyy 1ff4da290a feat(data): 新增历史数据归属订正脚本(默认 dry-run,--apply 写库)
- companions.user_id:按昵称唯一匹配用户回填(避免重复占用)

- finance_records.user_id:按充值/提现/订单/对手方规则回填,无法唯一确定则保留不填

- 默认仅预览,幂等可重复执行;新增 npm 脚本 backfill:ownership 与回归护栏

- 文档补充订正说明(79 套件/611 用例全绿)
2026-10-19 08:58:24 +08:00

31 行
1.3 KiB
TypeScript

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

// 已读取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');
});
});