# 项目变更日志(CHANGELOG) > 基于 `docs/audit/changes/` 审计记录整理的项目级版本变更历史。 > 按日期倒序排列,每条记录包含日期、变更摘要和影响范围。 --- ## 2026-02-26 ### 文档审计 — 任务统计、业务口径、SCD2 规则全面校正 - **摘要**:对 `docs/` 下 9 个文档进行系统性审计与修正,以 `task_registry.py` 为唯一事实来源,修复任务数量、域分组、表名、工具链引用等 15 处不一致 - **修正清单**: - `docs/README.md`:移除不存在的 `audit/`、`reports/` 目录引用 - `docs/etl_tasks/README.md`:ODS 22→23、DWS 13→17、补充 `ODS_STAFF_INFO`/`DWS_ASSISTANT_ORDER_CONTRIBUTION`/库存汇总域/SPI - `docs/etl_tasks/ods_tasks.md`:任务总数 22→23 - `docs/etl_tasks/dws_tasks.md`:任务总数 14→17、域分组四组→五组、补充库存汇总域概述表格 - `docs/etl_tasks/base_task_mechanism.md`:DWS 13→17、INDEX 4→5 - `docs/operations/environment_setup.md`:移除重复段落 - `docs/operations/troubleshooting.md`:`pip install -r requirements.txt` → `uv sync` - `docs/business-rules/dws_metrics.md`:完全重写,移除不存在的表、修正表名、补充库存汇总域和指数算法章节 - `docs/business-rules/scd2_rules.md`:完全重写,填充 9 个维度表的实际跟踪字段、补充 `dim_staff` 维度、文档化变更检测机制 - **影响范围**:文档(`docs/` 全目录,无代码变更) - **风险**:极低(纯文档修正) --- ## 2026-02-19 ### 文档全面刷新 — Schema 名称、技术栈、任务统计同步至项目现状 - **摘要**:批量更新 `docs/` 下 144 个文档文件,将旧 schema 名称(`billiards_ods`/`billiards_dwd`/`billiards_dws`/`etl_admin`)统一替换为当前六层架构名称(`ods`/`dwd`/`dws`/`meta`);更新 `system_overview.md` 移除已废弃的 PySide6 GUI 和 Flask 引用,替换为 FastAPI + admin-web;修正 ODS 任务数量(16→23)和 DWD 任务数量(5→2);更新 `environment_setup.md` 安装方式(pip→uv sync)、DDL 路径、运行入口;补充 `scheduling.md` 缺失的 CLI 参数(`--force-full`、`--window-split-unit`、`--window-split-days`、`--window-compensation-hours`);`data_flow.md` 新增 INDEX 层数据流图 - **影响范围**:文档(`docs/` 全目录,含 architecture/、etl_tasks/、operations/、database/、business-rules/ 等) - **风险**:极低(纯文档变更,无代码修改) --- ## 2026-02-15 ### 审计目录整合与 API 文档字段归类修正 - **摘要**:将 `docs/ai_audit/` 旧目录内容统一归入 `docs/audit/`;修正 5 个 API 参考文档(summary/)的字段归类错误;为 3 个已有逻辑变更文件补全 AI_CHANGELOG 注释 - **影响范围**:文档(`docs/api-reference/summary/`、`docs/audit/`)、代码注释(`tasks/base_task.py`、`quality/`) - **风险**:极低(纯文档重组与注释补录) - **详情**:[审计记录](audit/changes/2026-02-15__audit-consolidation-doc-reorg.md) ### docs/bd_manual + docs/dictionary → docs/database 合并 - **摘要**:将分散的 `docs/bd_manual/` 和 `docs/dictionary/` 合并为统一路径 `docs/database/`,按数据层(ODS/DWD/DWS/ETL_Admin/overview)分目录;更新所有路径引用(脚本、steering、hooks) - **影响范围**:文档路径(`docs/database/`)、脚本(`scripts/validate_bd_manual.py`)、配置(`.kiro/steering/`、`.kiro/hooks/`、`.kiro/skills/`) - **风险**:极低(纯路径重组,无运行时代码变更) - **详情**:[审计记录](audit/changes/2026-02-15__docs-database-merge.md) ### docs/index + docs/开发笔记 清理与路径整合 - **摘要**:将 `docs/index/index_algorithm_cn.md` 移至 `docs/database/DWS/`;从 `docs/开发笔记/` 分拣 6 个有价值文件至 `docs/requirements/`,删除过期内容;更新引用和测试 - **影响范围**:文档路径(`docs/database/DWS/`、`docs/requirements/`)、脚本(`scripts/audit/doc_alignment_analyzer.py`)、测试(`tests/unit/test_audit_doc_alignment.py`) - **风险**:低(纯文档重组 + 脚本路径更新) - **详情**:[审计记录](audit/changes/2026-02-15__docs-devnotes-index-cleanup.md) --- ## 2026-02-14 ### API 文档归档至 summary/ + 字段分组修正 - **摘要**:25 个 API 参考文档从根目录移至 `docs/api-reference/summary/`;修正 7 个文档的"响应字段详解"章节字段归类错误(非时间字段混入"时间"组等) - **影响范围**:文档(`docs/api-reference/summary/`、`docs/api-reference/README.md`) - **风险**:极低(纯文档分组调整) - **详情**:[审计记录](audit/changes/2026-02-14__api-doc-reorg-field-grouping.md) ### API vs ODS 比对 v3-fixed - **摘要**:重写比对脚本,改用 API 参考文档(.md)的"响应字段详解"章节作为主要字段来源(替代 JSON 样本),解决 v3 中条件性字段误报问题;22 张 ODS 表全部比对,API 独有字段 0 个 - **影响范围**:脚本(`scripts/run_compare_v3_fixed.py`)、报告(`docs/reports/`) - **风险**:极低(纯分析脚本和报告) - **详情**:[审计记录](audit/changes/2026-02-14__api-ods-comparison-v3-fixed.md) ### API vs ODS 逐表比对 v3 - **摘要**:从 JSON 样本直接提取字段并与数据库实际列精确比对,逐表重做(替代 v2 不准确的结果) - **影响范围**:脚本(`scripts/run_compare_v3.py`、`scripts/compare_api_ods_v3.py`)、报告(`docs/reports/`) - **风险**:极低(纯分析脚本和报告) - **详情**:[审计记录](audit/changes/2026-02-14__api-ods-comparison-v3.md) ### API 参数校对 + ODS 设计方案输出 - **摘要**:验证 25 个 API 的 .md 文档请求体参数与 API.txt 一致性(全部通过);输出 tenant_member_balance_overview 的主表+子表 ODS 设计方案(待用户确认后执行) - **影响范围**:文档(`docs/ai_audit/`) - **风险**:极低(纯审计日志 + 对话输出) - **详情**:[审计记录](audit/changes/2026-02-14__api-param-audit-ods-design.md) ### 删除 DWD 层 settle_list 冗余列 - **摘要**:删除 `dwd_settlement_head_ex.settle_list` JSONB 列(与 ODS `payload` 中的 `settleList` 重复);同步移除 DWD 加载映射 - **影响范围**:数据库(`billiards_dwd.dwd_settlement_head_ex`)、ETL(`tasks/dwd/dwd_load_task.py`)、迁移脚本 - **风险**:中(DB schema 变更,需确认下游无引用) - **详情**:[审计记录](audit/changes/2026-02-14__drop-dwd-settle-list.md) ### 删除 ODS 层 settlelist 冗余列 - **摘要**:删除 `settlement_records` 和 `recharge_settlements` 的 `settlelist` jsonb 列(与 `payload` 列数据重复);DWD 加载改为从 `payload->'settleList'` 提取 - **影响范围**:数据库(`billiards_ods`)、ETL(`tasks/dwd/dwd_load_task.py`)、脚本、报告 - **风险**:中(DB schema 变更,历史 `payload IS NULL` 的行将永久丢失 settleList) - **详情**:[审计记录](audit/changes/2026-02-14__drop-ods-settlelist.md) ### DWS 基类 bugfix — 绩效档位兜底 + safe_decimal 异常捕获 - **摘要**:修复 `get_performance_tier()` 在封顶场景下返回 None 的 bug;修复 `safe_decimal()` 未捕获 `decimal.InvalidOperation` 的问题;修复 3 处测试 bug - **影响范围**:业务代码(`tasks/dws/base_dws_task.py`)、测试(`tests/unit/test_dws_tasks.py`) - **风险**:低(防御性修复,不改变正常路径行为) - **详情**:[审计记录](audit/changes/2026-02-14__dws-bugfix-tier-safedecimal.md) ### 全量 JSON 刷新 + MD 文档补全 + 数据路径修正 - **摘要**:全部 24 个 JSON 样本刷新为 100 条数据;10 个 MD 文档补全共 39 个缺失字段;修正 `api_registry.json` 中 17 个端点的 `data_path` - **影响范围**:文档(`docs/api-reference/`)、脚本(`scripts/refresh_json_and_audit.py`)、报告 - **风险**:极低(纯文档和脚本变更) - **详情**:[审计记录](audit/changes/2026-02-14__json-refresh-md-patch.md) ### JSON 样本 vs MD 文档全面排查 - **摘要**:编写比对脚本验证 24 个表的 .md 文档与 JSON 样本字段一致性,全部通过(4 个表有条件性字段差异属正常) - **影响范围**:脚本(`scripts/check_json_vs_md.py`)、报告(`docs/reports/`) - **风险**:极低(纯分析脚本和报告) - **详情**:[审计记录](audit/changes/2026-02-14__json-vs-md-audit.md) ### 废弃独立 ODS/DWD 任务代码清理 + 文档同步 - **摘要**:清理 14 个废弃独立 ODS 任务和 3 个废弃 DWD 任务的残留引用(注册表重复循环、测试工具废弃定义、过时文档);重写 `docs/etl_tasks/` 文档 - **影响范围**:调度(`orchestration/task_registry.py`)、测试工具(`tests/unit/task_test_utils.py`)、文档(`docs/etl_tasks/`)、配置(`.kiro/steering/tech.md`) - **风险**:中(task_registry.py 是核心入口,需确认 52 个任务全部正确注册) - **详情**:[审计记录](audit/changes/2026-02-14__legacy-ods-dwd-cleanup.md) ### MD 占位符修正 + 临时文件清理 - **摘要**:修正 5 个 API 文档中 v2 脚本自动插入的占位符描述为正式中文说明;合并/去重字段;清理 25 个临时 JSON 文件和 3 个临时脚本 - **影响范围**:文档(`docs/api-reference/`)、报告 - **风险**:极低(纯文档修正) - **详情**:[审计记录](audit/changes/2026-02-14__md-placeholder-fix-cleanup.md) ### ODS 清理与文档标注 - **摘要**:删除 ODS 层 2 个全 NULL 冗余列(`option_name`、`able_site_transfer`);4 个 API 独有字段标记"暂不入 ODS";补充 8 个 tableProfile 展开字段文档 - **影响范围**:数据库(`billiards_ods`)、DDL(`database/schema_ODS_doc.sql`)、文档、脚本、报告 - **风险**:低(删除的列全 NULL,无数据丢失) - **详情**:[审计记录](audit/changes/2026-02-14__ods-cleanup-doc-update.md) ### ODS vs Summary 字段比对 - **摘要**:编写脚本直接查询 PostgreSQL `billiards_ods` schema 与 25 个 summary MD 文档逐表比对;多轮修复比对脚本 bug(skip_words 误过滤、siteProfile 误跳过等),最终完全匹配 17 张表 - **影响范围**:脚本(`scripts/compare_ods_vs_summary_v2.py`)、报告 - **风险**:极低(纯分析脚本) - **详情**:[审计记录](audit/changes/2026-02-14__ods-vs-summary-comparison.md) ### api/recording_client.py 默认时区修正 - **摘要**:将 `build_recording_client` 默认时区从 `Asia/Taipei` 改为 `Asia/Shanghai`,语义更准确(实际偏移量无差异) - **影响范围**:API 客户端(`api/recording_client.py`) - **风险**:极低(两个时区当前 UTC 偏移相同) - **详情**:[审计记录](audit/changes/2026-02-14__recording-client-timezone-fix.md) ### 替换 role_area_association 为 member_consumption_statistics - **摘要**:用会员消费统计 API(QueryMemberConsumptionStatistics)替换权限配置查询 API(role_area_association);新建 JSON 样本和参考文档;输出 2 个新表的 ODS 设计方案 - **影响范围**:文档(`docs/api-reference/`) - **风险**:极低(纯文档变更) - **详情**:[审计记录](audit/changes/2026-02-14__replace-role-area-new-api-doc.md) ### skip_words 误过滤 remark 业务字段修复 - **摘要**:修复比对脚本中 `skip_words` 误过滤 `remark`/`note`/`type` 等真实业务字段的问题;最终用 Markdown 表格分隔行检测替代 skip_words 方案;修复 siteProfile 子节跳过逻辑和 goodsCategoryList 包装器忽略 - **影响范围**:脚本(`scripts/compare_ods_vs_summary_v2.py`)、报告 - **风险**:极低(纯分析脚本) - **详情**:[审计记录](audit/changes/2026-02-14__skip-words-remark-fix.md) --- ## 2026-02-13 ### API vs ODS 对比 v2 - **摘要**:重写比对脚本(v1 存在嵌套结构解析 bug),从 API 参考文档提取字段与 PostgreSQL `billiards_ods` 实际列比对;22 张 ODS 表全部对齐,0 张漂移 - **影响范围**:脚本(`scripts/compare_api_ods_v2.py`)、报告(`docs/reports/`) - **风险**:极低(纯分析脚本 + 报告文档) - **详情**:[审计记录](audit/changes/2026-02-13__api-ods-comparison-v2.md) ### API JSON 字段 vs ODS 表列对比 - **摘要**:编写 Python 脚本查询 `billiards_ods` 的 `information_schema.columns`,与 API 参考文档做 camelCase→snake_case 归一化匹配;22 张 ODS 表全部对齐,无需 ALTER - **影响范围**:脚本(`scripts/compare_api_ods.py`)、报告(`docs/reports/`)、迁移脚本(空操作) - **风险**:低(纯分析工具,不修改数据库) - **详情**:[审计记录](audit/changes/2026-02-13__api-ods-comparison.md) ### API 参考文档批量生成(第二批 6 个) - **摘要**:按标杆文档格式生成 6 个高质量 API 参考文档(member_profiles、member_stored_value_cards、member_balance_changes、platform_coupon_redemption_records、group_buy_packages、group_buy_redemption_records) - **影响范围**:文档(`docs/api-reference/`) - **风险**:极低(纯文档变更) - **详情**:[审计记录](audit/changes/2026-02-13__api-reference-batch2.md) ### API 参考文档全面重构 - **摘要**:对 23+ API 文档进行全面重构,创建结构化的 `docs/api-reference/` 目录体系(endpoints/、samples/);生成 25 个端点文档、24 个响应样本、标准化 API 注册表;废弃旧 `test-json-doc` 目录 - **影响范围**:文档(`docs/api-reference/`)、配置(`.kiro/steering/structure.md`) - **风险**:极低(纯文档生成和目录结构调整) - **详情**:[审计记录](audit/changes/2026-02-13__api-reference-overhaul.md) ### BD_Manual 文档整理与 DDL 同步 - **摘要**:修复 DDL 对比脚本 bug;同步 ODS/DWD/DWS 三层共 13 项 DDL 差异;生成 ODS 23 张表的表级文档、映射文档和数据字典;创建 BD_Manual 根索引和文档验证脚本 - **影响范围**:DDL(`database/schema_ODS_doc.sql`、`database/schema_dws.sql`)、脚本(`scripts/compare_ddl_db.py`、`scripts/validate_bd_manual.py`)、文档(`docs/bd_manual/`、`docs/dictionary/`)、测试 - **风险**:中(DDL 文件修正,虽未变更数据库结构但被其他脚本引用) - **详情**:[审计记录](audit/changes/2026-02-13__bd-manual-docs-consolidation-ddl-sync.md) ### API 字段漂移报告修正更新 - **摘要**:用正确的 `limit` 参数重新调用 3 个端点(settlement_records、recharge_settlements、payment_transactions),更新字段漂移报告;发现 5 个新增字段(电费、商户券/平台券相关) - **影响范围**:报告(`docs/reports/`) - **风险**:极低(纯文档更新) - **详情**:[审计记录](audit/changes/2026-02-13__field-drift-report-update.md) ### 移除旧版指数(RECALL/INTIMACY)+ ML last-touch 清理 - **摘要**:彻底删除已被 WBI+NCI 替代的 RecallIndexTask 和已被 RelationIndexTask 替代的 IntimacyIndexTask;修复 WBI `STOP_HIGH_BALANCE` 评分 bug;移除 ML last-touch 备用路径;清理 GUI、调度注册、数据库对象和文档中的所有引用 - **影响范围**:业务代码(`tasks/dws/index/`)、调度(`orchestration/task_registry.py`)、GUI(`gui/`)、数据库(DDL + seed + 迁移脚本)、文档、测试 - **风险**:中(不可逆的 DROP TABLE,但用户确认不需要向后兼容) - **详情**:[审计记录](audit/changes/2026-02-13__remove-legacy-index-cleanup.md)