feat(data): 新增历史数据归属订正脚本(默认 dry-run,--apply 写库)

- companions.user_id:按昵称唯一匹配用户回填(避免重复占用)

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

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

- 文档补充订正说明(79 套件/611 用例全绿)
这个提交包含在:
xcbyy
2026-10-19 08:58:24 +08:00
父节点 c90b0bd44e
当前提交 1ff4da290a
共有 4 个文件被更改,包括 205 次插入 和 1 次删除

查看文件

@@ -130,3 +130,19 @@ MYSQL_DATABASE=peiwan
## 九、回滚
本轮改动遵循"边界内最小改动",无破坏性数据库结构变更。如需回滚,按部署前的文件/库备份还原即可。
## 附:历史数据归属订正(可选,一次性)
用于修复历史数据(新数据已自动带归属,无需执行):
- `companions.user_id` 为空 → 按"昵称唯一匹配用户"回填;
- `finance_records.user_id` 缺失(0/NULL) → 按充值/提现/订单/对手方规则回填。
默认只**预览**,确认无误后再 `--apply`(脚本幂等,可重复执行):
```bash
cd server
npx tsx scripts/backfill-ownership.ts # 预览(不写库)
npx tsx scripts/backfill-ownership.ts --apply # 写库
```
输出会给出 `total / linked / ambiguous / noUser / filled / skipped` 统计与样例,便于核对。