Sprint 2 收尾指标:门店级累计 GMV(与 #1-#4 会员级粒度不同),新建
sandbox_replay/finance_replay.py 模块。无原 fdw_queries.get_total_gmv
函数(0 现有调用方),不写 thin wrapper(spec §5.5 决策原则)。
数据源 dws_finance_daily_summary.gross_amount(门店日度财务汇总,daily 累计)。
SQL 模式 SUM(gross_amount) WHERE stat_date <= ctx.business_date,与 #1-#4
取最新单行不同,是多行累计 SUM。SQL 层 COALESCE(SUM(...), 0) 兜底,无数据
返回 Decimal('0')(开店前累计 GMV = 0,业务语义)。
口径 gross_amount = table_fee + goods + assistant_pd + assistant_cx,**不含
electricity_money**(与会员级 items_sum 略有差异,docstring 明确防止交叉验证)。
双口径数值验证 PASS(直接 Python,site=2790685415443269 朗朗桌球):
- 4a live(today=2026-05-05): ¥5,725,837.51
- 4b sandbox=2026-04-20: ¥5,653,063.37(差异 ¥72,774,即 4-21~4-27 七天合计)
新增防御性回归测试 test_get_total_gmv_no_member_ids_param 阻断未来误加
member_id 参数(门店级粒度强约束)。
unit test sprint1+sprint2 累计 28/28 PASS,无回归。
Sprint 2 收尾(4 项迁移 + #3 推迟 Sprint 3 等 ETL 配合)。
详见 docs/audit/changes/2026-05-06__f1_6_sprint2_total_gmv.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
审计目录(docs/audit/)
项目级统一审计落地点。所有模块(ETL、后端、小程序、管理后台等)的审计产物均写入此目录。
子目录与文件
| 目录/文件 | 说明 |
|---|---|
changes/ |
AI 逐次变更审计记录(<YYYY-MM-DD>__<slug>.md) |
prompt_logs/ |
Prompt 日志文件(每次 prompt 生成一个独立文件,按时间戳命名) |
session_logs/ |
全量会话记录(按 YYYY-MM/DD/ 分层),含双索引和 LLM 操作摘要。详见 SESSION-LOG-GUIDE.md |
audit_dashboard.md |
审计一览表(自动生成,勿手动编辑) |
SESSION-LOG-GUIDE.md |
Session 日志使用指南(索引字段、查询方法、典型场景) |
维护约定
prompt_logs/由prompt-audit-logHook 自动管理,请勿手动编辑session_logs/由agentStopHook 自动提取,索引由提取脚本自动更新audit_dashboard.md由/audit流程自动刷新,也可通过python scripts/audit/gen_audit_dashboard.py手动重新生成- 变更审计记录由
/audit流程(audit-writer 子代理)生成,包含session_id字段与 Session 日志双向关联 - 历史记录(迁移前 ETL 子项目的审计)已合并至此目录
审计追溯链
Prompt 日志 ←→ Session 日志 ←→ 变更审计记录
(用户说了什么) (AI 做了什么) (正式变更文档)
通过 Prompt-ID 和 Session-ID 可在三者之间双向追溯。详见 SESSION-LOG-GUIDE.md。