# 审计记录:API vs ODS 比对 v3-fixed ## 基本信息 - 日期:2026-02-14(Asia/Shanghai) - Prompt-ID:P20260214-003000 - 原始原因:用户 Prompt — "还是不准,比如assistant_accounts_master(助教账号主数据)的last_update_name,命名Json里就有,再仔细比对下" - 直接原因:v3 比对仅从 JSON 样本提取字段,JSON 样本是单条记录快照,可能缺少条件性返回的字段(如 `last_update_name`),导致误报为"ODS独有"。需改用 API 参考文档(.md)的"响应字段详解"章节作为主要字段来源。 ## 修改方案 完全重写 `scripts/run_compare_v3_fixed.py`: 1. 从 .md 文档"四、响应字段详解"章节精确提取字段(排除请求参数、跨表关联等章节) 2. JSON 样本作为补充来源(union) 3. 对 settlement_records / recharge_settlements 的 siteProfile 子字段不提取(ODS 中存为 siteprofile jsonb 单列) 4. 对 table_fee_discount_records 的 tableProfile/siteProfile 展开字段正确分类 5. 对 stock_goods_category_tree 的 categoryBoxes 正确识别为 ODS jsonb 列 6. 对所有 ODS 独有字段进行详细分类说明 ## Changed | 文件 | 变更类型 | 说明 | |------|----------|------| | `scripts/run_compare_v3_fixed.py` | 重写 | 完全重写字段提取和比对逻辑 | | `docs/reports/api_ods_comparison_v3_fixed.json` | 新建 | JSON 格式比对结果 | | `docs/reports/api_ods_comparison_v3_fixed.md` | 新建 | Markdown 格式比对报告 | | `docs/ai_audit/prompt_log.md` | 追加 | 新增 P20260214-003000 条目 | ## 比对结论 - 22 张 ODS 表全部比对 - API 独有字段:0(所有 API 文档中的响应字段在 ODS 中都有对应列) - ODS 独有字段:51 列,分类如下: - API 后续版本新增字段:38 列(文档快照未覆盖,但 ODS 已通过 ETL 动态发现并入库) - tableProfile/siteProfile 嵌套对象展开字段:8 列(table_fee_discount_records) - ODS 额外添加的 tenant_id:2 列(assistant_cancellation_records、payment_transactions) - ODS jsonb 列(settlelist):2 列(settlement_records、recharge_settlements) - ODS 后续版本新增字段:1 列(site_tables_master.order_id) - 完全对齐表:7 张(assistant_accounts_master、refund_transactions、platform_coupon_redemption_records、stock_goods_category_tree、goods_stock_movements、goods_stock_summary、site_tables_master 除 order_id 外) - 无需 ALTER TABLE ## Risk / Verify - 风险:纯分析脚本和报告,无运行时影响,不修改数据库或 ETL 逻辑 - 验证: 1. 确认 `assistant_accounts_master` 的 `last_update_name` 被正确识别为匹配字段(62:62 完全对齐) 2. 确认 API 独有字段总数为 0 3. 确认 ODS 独有字段全部有分类说明 ## Change Impact Review - 判定:**无逻辑改动** - 本次变更为纯分析脚本(一次性工具)和报告文档,不涉及 ETL Connector、业务规则、数据处理逻辑、API 行为或数据库 schema - 文档同步评估: - `product.md` — 无需更新(产品功能未变) - `tech.md` — 无需更新(技术栈未变) - `structure.md` — 无需更新(目录结构未变,临时分析脚本不列入) - `README.md` — 无需更新(运行方式未变) - `docs/bd_manual/` — 无需更新(无表结构变更) - `gui/README.md` / `scripts/` / `tasks/` / `database/` / `tests/` — 均无需更新 - 回归范围:无(纯分析产出,不影响任何运行时代码路径) - 建议验证:`python scripts/run_compare_v3_fixed.py` 确认输出 API独有=0