Files
Neo-ZQYY/docs/audit/changes/2026-02-14__drop-ods-settlelist.md

37 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 审计记录:删除 ODS 层 settlelist 冗余列
## 溯源
- 日期2026-02-14Asia/Shanghai
- Prompt-IDP20260214-023000
- Prompt 原文:删除 ODS 层 settlement_records / recharge_settlements 的 settlelist jsonb 列settlelist 与 payload 列数据重复)
## 直接原因
`settlelist` jsonb 列与 `payload` jsonb 列存储内容重复。`payload` 存储完整 API 响应 JSON已包含 `settleList` 对象),`settlelist` 是入库时额外提取的副本。DWD 加载逻辑已改为从 `payload` 提取,`settlelist` 列不再被消费,属于冗余存储。
## Changed
| 文件/对象 | 变更类型 | 说明 |
|-----------|----------|------|
| `database/migrations/20260214_drop_ods_settlelist.sql` | 新增 | 迁移脚本DROP COLUMN settlelist2 张表) |
| `billiards_ods.settlement_records` | DDL | 删除 `settlelist` jsonb 列 |
| `billiards_ods.recharge_settlements` | DDL | 删除 `settlelist` jsonb 列 |
| `tasks/dwd/dwd_load_task.py` | 修改 | FACT_MAPPINGS 中 `dwd_settlement_head_ex.settle_list` 改为从 `payload->'settleList'` 提取 |
| `scripts/ods_columns.json` | 修改 | 移除两表的 `settlelist` 列 |
| `scripts/run_compare_v3_fixed.py` | 修改 | 移除 `classify_ods_only``settlelist` 的特殊分类 |
| `docs/reports/api_ods_comparison_v3_fixed.md` | 自动生成 | 重新生成比对报告ODS 独有 49→47完全对齐 7→9 |
| `docs/bd_manual/ODS/20260214_drop_ods_settlelist.md` | 新增 | BD 手册变更记录 |
| `docs/README.md` | 修改 | 子目录索引新增 ai_audit/、api-reference/、bd_manual/ODS/test-json-doc/ 标记废弃 |
| `database/README.md` | 修改 | 迁移脚本列表新增 20260214_drop_ods_settlelist.sql |
## Risk / Verify
- 风险:若 DWD 加载逻辑尚未改为从 `payload` 提取 settleList删列后 DWD 装载将失败 → 已修复(`dwd_load_task.py` 映射改为 `payload->'settleList'`
- 风险:历史数据中 `payload IS NULL` 的行将永久丢失 settleList 信息
- 验证:迁移已执行,`information_schema.columns` 确认 `settlelist` 列不存在0 行返回)
- 验证:两表各 71 列66 业务 + 5 meta符合预期
- 验证:`payload->'settleList'` 可正常提取settlement_records: 54937 行recharge_settlements: 3259 行)
- 验证比对报告重新生成ODS 独有从 49 降至 47settlement_records 和 recharge_settlements 均完全对齐
- 回滚:`ALTER TABLE ... ADD COLUMN settlelist jsonb` + `UPDATE ... SET settlelist = payload->'settleList'`