# 变更审计:合并 ETL Hook 为统一分析入口 - 日期:2026-03-02 00:39:12 - Prompt-ID:P20260301-235954 - 风险标签:dir:etl, root-file - 审计人:Kiro AI ## 变更概述 将两个功能重叠的 Kiro Hook("Data Flow Structure Analysis" 和 "ETL Data Consistency Check")合并为一个统一入口 "ETL Unified Analysis"。新入口支持 `--mode structure|consistency|full`(默认 full),同时为一致性检查增加每表数据截止日期展示。 ## 变更文件清单 | 文件 | 变更类型 | 说明 | |------|----------|------| | `scripts/ops/etl_unified_analysis.py` | 新增 | 统一编排脚本 | | `scripts/ops/etl_consistency_check.py` | 修改 | 新增截止日期功能 | | `.kiro/hooks/etl-unified-analysis.kiro.hook` | 新增 | 统一 hook 入口 | | `.kiro/hooks/dataflow-analyze.kiro.hook` | 修改 | 设置 enabled=false | | `.kiro/hooks/etl-data-consistency.kiro.hook` | 修改 | 设置 enabled=false | | `scripts/ops/monitor_etl_run.py` | 修改 | 引用文本更新 | | `scripts/ops/export_etl_result.py` | 修改 | 引用文本更新 | ## 改动注解 ### `scripts/ops/etl_unified_analysis.py` - 变更类型:新增 - 原始原因:用户发现 "Data Flow Structure Analysis" 和 "ETL Data Consistency Check" 两个 hook 功能重叠,希望合并为一个统一入口,减少操作步骤 - 思路分析:采用编排模式,`etl_unified_analysis.py` 本身不实现分析逻辑,而是通过 `subprocess.run` 依次调用已有的 `analyze_dataflow.py`、`gen_dataflow_report.py`、`etl_consistency_check.py`。通过 `--mode` 参数控制执行哪些阶段,`--source` 参数控制数据来源(主动调 API 或读 ETL 落盘 JSON)。full 模式下两阶段完成后合并报告输出到 `ETL_REPORT_ROOT` - 修改结果:用户只需运行一个脚本或触发一个 hook 即可完成全部 ETL 分析。报告路径通过 `_env_paths.get_output_path()` 获取,符合产出物路径规范。支持 `--date-from`、`--date-to`、`--limit`、`--tables` 等参数透传 ### `scripts/ops/etl_consistency_check.py` - 变更类型:修改 - 原始原因:一致性检查报告中缺少每张表的数据截止日期信息,用户无法直观判断数据新鲜度 - 思路分析:新增 `_CUTOFF_DATE_COLUMN` 字典映射每张 ODS 表的时间截止字段(大部分用 `create_time`,`goods_stock_summary` 和 `stock_goods_category_tree` 用 `fetched_at`,部分表用 `createtime`)。新增 `get_data_cutoff_date()` 函数查询 `MAX(col)::date::text`。在 `check_api_vs_ods` 和 `check_ods_vs_dwd` 的返回结果中增加 `data_cutoff` 字段,报告汇总表增加"数据截止"列 - 修改结果:一致性检查报告的 API↔ODS 和 ODS↔DWD 汇总表中新增"数据截止"列,展示每表数据的最后截止日期。查询失败时静默回退显示"—",不阻断主流程 ### `.kiro/hooks/etl-unified-analysis.kiro.hook` - 变更类型:新增 - 原始原因:为统一编排脚本提供 Kiro hook 触发入口 - 思路分析:`userTriggered` 类型 hook,prompt 中描述了默认行为(full 模式三阶段)和可选参数。继承原两个 hook 的白名单规则(ETL 元数据列、SCD2 管理列、siteProfile 嵌套字段、时间格式等价) - 修改结果:用户可通过 Kiro 手动触发统一分析,替代原来需要分别触发两个 hook 的操作 ### `.kiro/hooks/dataflow-analyze.kiro.hook` - 变更类型:修改 - 原始原因:功能已合并到统一入口,需禁用避免重复 - 思路分析:仅将 `enabled` 字段从 `true` 改为 `false`,保留完整配置以备回退 - 修改结果:hook 不再出现在可触发列表中,但配置文件保留 ### `.kiro/hooks/etl-data-consistency.kiro.hook` - 变更类型:修改 - 原始原因:功能已合并到统一入口,需禁用避免重复 - 思路分析:同上,仅设置 `enabled: false` - 修改结果:hook 不再出现在可触发列表中,但配置文件保留 ### `scripts/ops/monitor_etl_run.py` - 变更类型:修改(简要) - 报告模板中"下一步"引用文本从 "ETL Data Consistency Check" 更新为 "ETL Unified Analysis(统一分析)" ### `scripts/ops/export_etl_result.py` - 变更类型:修改(简要) - 报告模板中"下一步"引用文本从 "ETL Data Consistency Check" 更新为 "ETL Unified Analysis(统一分析)" ## 本次对话文件变更 ### 新增文件 - `docs/audit/prompt_logs/prompt_log_20260301_235954.md` ### 修改文件 - `NeoZQYY.code-workspace` - `docs/h5_ui/pages/customer-detail.html` ## 合规检查 - ⚠️ 迁移 SQL:无 - ⚠️ DDL 基线:不涉及 - ⚠️ OpenAPI spec:不涉及(本次变更不涉及接口代码) - ⚠️ 文档同步:无缺失项(`compliance.code_without_docs` 为空)