# 审计记录:API JSON 字段 vs ODS 表列对比 - 日期:2026-02-13 (Asia/Shanghai) - Prompt-ID:P20260213-210000 - 原始 Prompt: > 用新梳理的API返回的JSON文档docs\api-reference,比对数据库的ODS层是否和Json一致? > 给我个对比结论文档。将不同的内容,通过SQL语句,将ODS各表与返回的JSON字段结构对齐。 > (续接:不是,你需要查询数据库,不要依赖DDL) ## 直接原因 用户需要验证 ODS 层数据库表结构是否与上游 API 返回的 JSON 字段一致。 方案:编写 Python 脚本查询 `billiards_ods` schema 的 `information_schema.columns`, 解析 `docs/api-reference/endpoints/*.md` 中的响应字段表,做 camelCase→snake_case 归一化匹配。 ## 修改文件清单 | 文件 | 操作 | 说明 | |------|------|------| | `scripts/compare_api_ods.py` | 新建 | 比对脚本(查询 DB + 解析 MD + 归一化匹配) | | `docs/reports/api_ods_comparison.md` | 新建 | Markdown 对比报告 | | `docs/reports/api_ods_comparison.json` | 新建 | JSON 格式对比数据 | | `database/migrations/20260213_align_ods_with_api.sql` | 新建 | 迁移文件(结论:无需变更) | | `docs/ai_audit/prompt_log.md` | 追加 | Prompt 日志 | | `docs/ai_audit/changes/2026-02-13__api-ods-comparison.md` | 新建 | 本审计记录 | ## 比对结论 - 22 张 ODS 表全部与 API JSON 字段对齐,无需任何 ALTER 操作 - 大量字段差异为 camelCase vs lowercase 命名风格差异,归一化后全部匹配 - `stock_goods_category_tree` 的 2 个"缺失"为响应包装层字段(`goodsCategoryList`/`total`),ODS 已正确展开存储 - 66 个 ODS "多余"列为 ETL 框架自行添加的辅助列(如 `tenant_id`、`settlelist`、`real_service_money` 等) ## 风险评估 - 风险等级:低 - 本次无逻辑改动,无数据库结构变更,无 ETL 行为变化 - 新建的比对脚本为只读分析工具,不修改任何数据 - 回归范围:无 - 验证方式:`python scripts/compare_api_ods.py` 重新执行确认输出一致 ## 回滚要点 无需回滚(未执行任何数据库变更)。如需清理: - 删除 `scripts/compare_api_ods.py` - 删除 `docs/reports/api_ods_comparison.md` 和 `.json` - 删除 `database/migrations/20260213_align_ods_with_api.sql`