Files
X-Financial/document/development/2026-07-16/dev-logs/bugs/savings-insight-baseline-temporal-leak.md

18 lines
2.7 KiB
Markdown
Raw Normal View History

## 修复记录
- 19:24修复历史费用偏离分析可能读取分析截止时间之后才冻结的基线、形成时间穿越的问题。
- Git 提交检查:已执行 `git fetch --all --prune``HEAD..origin/main` 无新提交;本地相对 upstream ahead 17 个既有提交,依次为 `242d68c3``28b834ed``4940ebc4``ee88a36b``6bdf65bc``ae3f02c3``54754b55``211f85d9``5b246307``a662cfe6``5ed34c2b``11275e4b``1347366b``22669a90``a616b30c``653eda05``661990b2`;本次未合并、覆盖或改写共享工作树中的其他变更。
- 修改:`savings_insight_analysis.py` 在历史基线查询中增加 `frozen_at <= as_of`,确保候选分析只能使用截止时间当时已经存在的冻结快照。
- 修改:`test_savings_baseline_insights.py` 新增未来冻结基线回归;确认这类快照不会产生历史价格偏离候选,并返回基线不可用的数据质量提示。
- 操作:全部检查均在 `local-x-financial-linux` 容器内执行,未修改财务规则 XLSX 或历史开发文档。
- 验证Savings 基线/洞察、端点与 CFO 组合回归 `10 passed`;相关 Ruff 检查通过。
- 影响:`as_of` 历史回放不再引用未来才生成的知识CFO 候选洞察和审计结果保持时间一致性。
- 22:50继续修复预算预测读取分析窗口或 `as_of` 之后预算配置与核销流水的问题。
- Git 提交检查:已执行 `git fetch --all --prune``HEAD..origin/main` 无新提交;本地仍相对 upstream ahead 17 个既有提交(`242d68c3``661990b2`,内容为审批任务/风险处置、AI 学习与预审、Expense Case、迁移安全和认证等共享能力未发现新的上游提交也未合并或改写共享工作树。
- 修改:`savings_insight_budget.py``min(as_of, window_end)` 作为预算分析截止点,只读取当时已经创建且最后更新的预算配置,以及预算期间开始至截止点的核销/回滚事实;部门范围优先使用稳定部门 ID缺 ID 才使用部门名称或成本中心。
- 修改:`test_savings_baseline_insights.py` 增加窗口后核销、截止时间后配置、稳定重放与零机会副作用回归。
- 操作:所有 pytest 和 Ruff 均在 `local-x-financial-linux` 容器内以 60 秒超时执行;未接触财务规则 XLSX、商业/连接器/发布迁移或迁移 HEAD。
- 验证Savings/CFO 定向组合 `34 passed, 6 skipped`6 项为未配置 PostgreSQL 专用测试 URL 的预期跳过),相关 Ruff 检查通过。
- 影响:历史预算预测不再使用报告窗口之后才出现的配置或交易,异常归因、政策模拟候选与 CFO 审计回放保持同一时间边界。