MP-2 经 4 轮调研 + Neo 反馈,采纳方案 C(推迟到 F1-6 沙箱时光机阶段 B): - 第 1 轮原方案 D(双口径) → 第 2 轮 D'(单口径) - 第 3 轮 Neo 架构纠正:不读 DWD,走 Core/DWS/app - 第 4 轮 DWS 视图靠谱性审计:dws_assistant_daily_detail 是计费明细 (ledger_amount),不是助教工资(gross_salary 需等级时薪 + 抽成 + 罚分),且缺 effective_hours / work_days - 结论:MP-2 真正实施需要新建 dws_assistant_daily_salary 表(ETL 改造),跟其他 14 个 P1 指标一起做更高效 → 推迟到 F1-6 本次 Wave B 只做 prep:DB schema + 模块 spec + tasks.md 状态调整。 DB 迁移(zqyy_app): - db/zqyy_app/migrations/20260505__add_effective_date_for_excel_adjustments.sql - 3 张 Excel 暂存表(全空,Neo 确认尚无 Excel 上传)ADD COLUMN effective_date DATE NOT NULL(无 DEFAULT,强制未来 Excel 上传必须带): * biz.salary_adjustments(助教薪资扣款/奖励) * biz.stg_finance_expense(月度支出) * biz.stg_platform_income(平台结算收入) - 3 个复合索引 (site_id, effective_date) 支持后续 daily 截断查询 - biz.stg_recharge_commission 已有 recharge_date,无需改造 测试库执行 + 5/5 校验 PASS: - 字段存在(NOT NULL DATE 无 default) - 复合索引存在 + 列序正确 - 字段注释含 'F1-5b MP-2 prep' - INSERT 不带 effective_date 触发 NotNullViolation docs/database/ 同步: - docs/database/changes/2026-05-05__add_effective_date_for_excel_adjustments.md 完整变更说明 + 兼容性 + 回滚 + 5 条校验 SQL + 正式库执行说明 沙箱时光机模块 spec(主干任务排期登记): - docs/_overview/sandbox-replay-engine-spec.md - 22 个相关指标分 P1/P2/P3 优先级: * P1 14 项(daily 视图已有,后端切换) * P2 5 项(算法重算,含 MP-2 完整 daily salary) * P3 3 项(状态算法 + sandbox_audit_log 用户行为) - 4 阶段实施路径: * 阶段 0(本次 prep) * 阶段 A(F1-5a/b 已完成) * 阶段 B(F1-6,2-3 周)— MP-2 真正实施在此 * 阶段 C(F1-7+,1-2 周) - sandbox_replay 模块结构 + runtime_aware decorator 接口契约 - 性能 + 测试 + 前置依赖清单 F1-5b-tasks.md 状态调整: - §4.3 顺序 15:MP-2 从"待开始/C4" → "延期 F1-6" - §6 进度表 MP-2 行同步标"延期 F1-6 + 改方向说明" - 关联到 mp2_prep.md 审计 业务影响: - board-coach sandbox 行为暂遗留(F1-6 解决) - 旧 Excel 模板上传将因 NOT NULL 失败,需 F1-6 同期 ETL UI 改造 + 操作员培训 - 跨页面已 audit:board-finance / customer-records / coach-service-records / customer-service-records 等已合规(F1-5b A1/A3 + MP-1/3/5 收益) 审计:docs/audit/changes/2026-05-05__wave1_f1_5b_mp2_prep.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
db/ — 数据库资产目录
当前状态(2026-04-06 更新)
项目 v1,DDL 不存在迭代更新。完整 schema 定义在 schemas/ 目录(按 schema 分文件,从测试库导出)。
同一份 DDL 也保留在 docs/database/ddl/(文档视角)。
目录结构
db/
├── etl_feiqiu/
│ ├── schemas/ — 六层完整 DDL(meta/ods/dwd/core/dws/app)
│ ├── migrations/ — 未来增量迁移(v1 已全部归档)
│ ├── ods/ — ODS 补充脚本
│ └── scripts/
│ └── create_test_db.sql
├── zqyy_app/
│ ├── schemas/ — 三层完整 DDL(public/auth/biz)
│ ├── migrations/ — 未来增量迁移(v1 已全部归档)
│ └── scripts/
│ └── create_test_db.sql
├── fdw/ — FDW 跨库映射配置
│ ├── setup_fdw.sql — 正向(zqyy_app → etl_feiqiu.app)
│ ├── setup_fdw_test.sql — 正向(测试环境)
│ ├── setup_fdw_reverse.sql — 反向(etl_feiqiu → zqyy_app.member_retention_clue)
│ └── setup_fdw_reverse_test.sql — 反向(测试环境)
└── _archived/ — 归档
├── ddl_baseline_2026-02-22/ — 旧基线
└── migrations_v1_merged/ — v1 全部迁移(39 个,已合并进 schemas/)
├── etl_feiqiu/ — 11 个迁移
└── zqyy_app/ — 28 个迁移
Schema 文件
db/etl_feiqiu/schemas/ 和 db/zqyy_app/schemas/ 是权威的完整 DDL,包含建表、索引、约束、种子数据。
| 文件 | 数据库 | Schema | 对象数 |
|---|---|---|---|
etl_feiqiu/schemas/meta.sql |
etl_feiqiu | meta | 3 表 |
etl_feiqiu/schemas/ods.sql |
etl_feiqiu | ods | 23 表 |
etl_feiqiu/schemas/dwd.sql |
etl_feiqiu | dwd | 42 表 |
etl_feiqiu/schemas/core.sql |
etl_feiqiu | core | 7 表(跨平台统一维度层,由 CORE_DIM_SYNC 任务从 DWD 同步) |
etl_feiqiu/schemas/dws.sql |
etl_feiqiu | dws | 38 表 |
etl_feiqiu/schemas/app.sql |
etl_feiqiu | app | 仅视图 |
zqyy_app/schemas/public.sql |
zqyy_app | public | 12 表 |
zqyy_app/schemas/auth.sql |
zqyy_app | auth | 9 表 |
zqyy_app/schemas/biz.sql |
zqyy_app | biz | 21 表 |
重新生成:PYTHONUTF8=1 python tools/db/gen_consolidated_ddl.py
迁移管理
v1 阶段的 39 个迁移已全部合并进 schemas/ 完整 DDL,原文件归档在 _archived/migrations_v1_merged/。
后续新增迁移放 migrations/,文件名格式 YYYY-MM-DD__描述.sql。
执行后重新运行 DDL 生成脚本刷新 schemas/ 基线。
文档分工
| 位置 | 管辖范围 |
|---|---|
docs/database/ |
业务库(zqyy_app) BD_Manual + 跨模块(FDW/RLS) + DDL 基线副本 |
apps/etl/connectors/feiqiu/docs/database/ |
ETL 专属(ODS/DWD/DWS 表级文档) |
db/(本目录) |
权威 DDL + 运行时资产(迁移/FDW/建库脚本) |
tools/db/ |
数据库工具(DDL 生成/验证/一致性检查) |