# 变更审计记录:lookback_days 从 60 天扩大到 90 天 | 字段 | 值 | |------|-----| | 日期 | 2026-03-24 10:28:13 | | Prompt-ID | P20260324-102813 | | Session-ID | 8d0daac8 | | Session 路径 | docs/audit/session_logs/2026-03/24/36_e6cfbf4c_085324 | ## 操作摘要 将关系指数(RS/MS/ML)及全局 INDEX 层的 `lookback_days` 默认值从 60 天扩大到 90 天。原因:助教小燕历史服务过的客户中有 3 个(梅、蔡总、罗先生)因超出 60 天回溯窗口不在关系指数表中,扩大到 90 天覆盖更多有效关系对。 ## 变更原因 调查发现助教小燕历史服务过 6 个客户,但其中 3 个因超出 60 天回溯窗口而不在关系指数表中。扩大到 90 天可覆盖更多有效关系对,减少因窗口过窄导致的客户丢失。 ## 影响范围 ### 数据库(ETL 库 `dws.cfg_index_parameters`) - RS `lookback_days`: 60 → 90 - MS `lookback_days`: 60 → 90 - ML `lookback_days`: 60 → 90 ### 代码变更 | 文件 | 变更内容 | |------|----------| | `apps/etl/connectors/feiqiu/tasks/dws/index/relation_index_task.py` | `DEFAULT_PARAMS_RS/MS/ML["lookback_days"]` 60→90;`.get()` fallback 60→90 | | `apps/etl/connectors/feiqiu/tasks/dws/index/base_index_task.py` | `DEFAULT_LOOKBACK_DAYS` 60→90 | | `apps/etl/connectors/feiqiu/tasks/verification/index_verifier.py` | 默认参数 `lookback_days=60` → 90 | | `apps/etl/connectors/feiqiu/orchestration/flow_runner.py` | verifier fallback 60→90 | | `apps/etl/connectors/feiqiu/config/defaults.py` | `index_lookback_days` 60→90 | | `apps/etl/connectors/feiqiu/.env` | `INDEX_LOOKBACK_DAYS=60` → 90 | | `.env.template` | `INDEX_LOOKBACK_DAYS=60` → 90 | ### 文档变更 | 文件 | 变更内容 | |------|----------| | `apps/etl/connectors/feiqiu/docs/etl_tasks/index_tasks.md` | RS/MS/ML 参数清单 lookback_days 60→90 | | `apps/etl/connectors/feiqiu/docs/business-rules/index_algorithm_cn.md` | 默认天数描述 60→90 | | `docs/architecture/etl-feiqiu-architecture.md` | RS lookback_days 60→90 | ### 未变更(不在范围内) - WBI/NCI 的 `lookback_days_recency=60`:会员活跃判定窗口(NEW/OLD/STOP 分群),与 RS/MS/ML 的服务回溯窗口是不同概念 - `member_index_base.py` 的 `DEFAULT_RECENCY_LOOKBACK_DAYS=60`:同上 - DDL 基线 `docs/database/ddl/etl_feiqiu__dws.sql`:种子数据中的旧值保留作为历史记录,实际值由数据库 UPDATE 覆盖 - PRD 文档 `关系指数PRD.txt`:原始需求文档,保留历史原貌 ## 本次对话文件变更 ### 新增文件 - `docs/audit/prompt_logs/prompt_log_20260324_102813.md` - `docs/audit/session_logs/2026-03/24/36_e6cfbf4c_085324/main_01_8d0daac8.md` ### 删除文件 - `docs/audit/session_logs/2026-03/24/36_e6cfbf4c_085324/main_01_fd2ad307.md`(被 8d0daac8 supersede) ## 改动注解 ### `apps/etl/connectors/feiqiu/tasks/dws/index/relation_index_task.py` - 变更类型:修改 - 原始原因:RS/MS/ML 三个指数的默认回溯窗口 60 天不足以覆盖部分低频但有效的客户关系对 - 思路分析:`DEFAULT_PARAMS_RS`/`DEFAULT_PARAMS_MS`/`DEFAULT_PARAMS_ML` 三个字典中的 `lookback_days` 从 60 改为 90;`execute()` 方法中 `.get("lookback_days", ...)` 的 fallback 值同步从 60 改为 90,确保即使配置表未加载也使用新默认值 - 修改结果:RS/MS/ML 计算时回溯 90 天的服务记录和充值记录,覆盖更多有效关系对 ### `apps/etl/connectors/feiqiu/tasks/dws/index/base_index_task.py` - 变更类型:修改 - 原始原因:基类常量 `DEFAULT_LOOKBACK_DAYS` 作为所有指数任务的全局默认值,需与子类保持一致 - 思路分析:单行常量修改 `DEFAULT_LOOKBACK_DAYS = 60` → `90` - 修改结果:所有继承 `BaseIndexTask` 的指数任务默认回溯天数统一为 90 ### `apps/etl/connectors/feiqiu/tasks/verification/index_verifier.py` - 变更类型:修改 - 原始原因:校验器的 `lookback_days` 默认值需与计算任务一致,否则校验窗口与计算窗口不匹配 - 思路分析:`__init__` 参数 `lookback_days: int = 60` → `90` - 修改结果:INDEX 层覆盖率校验和补齐操作使用 90 天窗口 ### `apps/etl/connectors/feiqiu/orchestration/flow_runner.py` - 变更类型:修改 - 原始原因:编排层创建 verifier 时的 fallback 值需同步 - 思路分析:`flow_runner.py` 中构造 `IndexVerifier` 时的 fallback `60` → `90` - 修改结果:编排层与校验器默认值一致 ### `apps/etl/connectors/feiqiu/config/defaults.py` - 变更类型:修改 - 原始原因:配置默认值字典是所有配置的最终 fallback 层 - 思路分析:`DEFAULTS["run"]["index_lookback_days"]` 从 60 改为 90 - 修改结果:即使 `.env` 和环境变量均未设置,配置系统也返回 90 ### `apps/etl/connectors/feiqiu/.env` - 变更类型:修改 - 原始原因:ETL 模块本地环境变量需同步 - 思路分析:`INDEX_LOOKBACK_DAYS=60` → `90` - 修改结果:ETL 模块运行时环境变量为 90 ### `.env.template` - 变更类型:修改 - 原始原因:模板文件是新环境部署的参考,需反映当前默认值 - 思路分析:`INDEX_LOOKBACK_DAYS=60` → `90` - 修改结果:新部署环境默认使用 90 天窗口 ### `apps/etl/connectors/feiqiu/docs/etl_tasks/index_tasks.md` - 变更类型:修改(文档同步) - 修改结果:RS/MS/ML 参数清单中 lookback_days 描述更新为 90 ### `apps/etl/connectors/feiqiu/docs/business-rules/index_algorithm_cn.md` - 变更类型:修改(文档同步) - 修改结果:算法说明文档中默认天数描述更新为 90 ### `docs/architecture/etl-feiqiu-architecture.md` - 变更类型:修改(文档同步) - 修改结果:架构文档中 RS lookback_days 描述更新为 90 ## 回滚方式 ```sql UPDATE dws.cfg_index_parameters SET param_value = 60 WHERE index_type IN ('RS', 'MS', 'ML') AND param_name = 'lookback_days'; ``` 代码侧将所有 90 改回 60 即可。 ## 验证 SQL ```sql SELECT index_type, param_name, param_value FROM dws.cfg_index_parameters WHERE param_name = 'lookback_days' AND index_type IN ('RS', 'MS', 'ML'); -- 预期:三行均为 90.000000 ```