Files
Neo-ZQYY/docs/prd/specs/P2-etl-dws-miniapp-extensions.md

75 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P2ETL 扩展层 — etl-dws-miniapp-extensions
> 优先级P2依赖 P1
> 预估工作量:大
---
## 需求Requirements
### 用户故事
1. 作为产品经理,我需要 SPI 消费力指数来评估客户消费层级,替代现有的 `customer_tier` 分层。
2. 作为产品经理,我需要助教订单流水四项统计(订单总流水/订单净流水/时效贡献流水/时效净贡献),以便评估助教个人能力。
3. 作为产品经理,我需要客户 30/60/90 天充值次数和金额、次均消费,以便在客户看板中展示。
4. 作为产品经理,我需要定档折算惩罚数据,以便在绩效页面展示折算详情。
### 验收标准
- AC1`dws_member_spending_power_index` 表存在SPI 展示分 0-10 分布合理
- AC2`dws_assistant_order_contribution` 表存在,四项统计数值可对照 PRD 示例验算
- AC3`dws_member_consumption_summary` 新增字段有值(`recharge_count_30d/60d/90d``recharge_amount_30d/60d/90d``avg_ticket_amount`
- AC4`dws_assistant_daily_detail` 新增字段在符合惩罚条件的订单上正确填充
- AC5新表的 RLS 视图和 FDW 映射已同步创建
- AC6`cfg_index_parameters` 中新增 `SPI` 类型的配置行 ✅已完成26 个参数effective_from=2026-02-23
---
## 设计要点
### SPI 指数
- 完整算法见 `docs/prd/SPI 消费力指数.md`
- 新建 ETL 任务 `SpendingPowerIndexTask`,继承 `BaseIndexTask`
- 粒度:`(site_id, member_id)`,每日计算
### 助教订单流水四项统计
- 新建 ETL 任务 `AssistantOrderContributionTask`
- 粒度:`(site_id, assistant_id, stat_date)``stat_date` 为营业日(以 08:00 为日切点08:00 前的记录归属前一天)
- 完整算法与表结构见 `docs/database/BD_Manual_dws_assistant_order_contribution.md`
- 数据来源已校准数据源DWD-DOC 01-业务全景 + 02-账务全景):
- `dwd.dwd_settlement_head`:结算单信息,筛选 `settle_type IN (1, 3)`
- `dwd.dwd_table_fee_log`:台桌使用时长、台费金额
- `dwd.dwd_assistant_service_log`:助教服务时长、服务流水、分成
- 消费金额口径:使用 `items_sum` 相关字段table_charge_money + goods_money + assistant_pd_money + assistant_cx_money不使用 `consume_money`
### 命名方案
| 中文名 | 字段名 | 含义 |
|--------|--------|------|
| 订单总流水 | `order_gross_revenue` | 助教参与订单的全部流水 |
| 订单净流水 | `order_net_revenue` | 总流水 - 助教服务分成 |
| 时效贡献流水 | `time_weighted_revenue` | 按服务时长折算的个人贡献 |
| 时效净贡献 | `time_weighted_net_revenue` | 时效贡献 - 助教服务分成 |
### 定档折算惩罚
- 扩展 `dws_assistant_daily_detail``penalty_minutes``penalty_reason``is_exempt``per_hour_contribution`
- 检测逻辑:同一台桌同一时段 >2 名助教 → 计算单人贡献流水 → <24 元则按比例折算
- 豁免标记:在订单级别打标(`is_exempt` 字段)
- 每日 ETL 自动计算
---
## 任务清单
- [x] T1设计并创建 `dws_member_spending_power_index` 表 ✅已完成24 字段 + 2 索引,迁移脚本 `2026-02-23_create_dws_member_spending_power_index.sql`测试库已建表0 行待跑数)
- [x] T2实现 `SpendingPowerIndexTask`(含 Level/Speed/Stability 子分)✅(已完成,代码 `tasks/dws/index/spending_power_index_task.py`,已注册 task_registry含单元测试 + 属性测试 + BD_Manual 文档)
- [x] T3`cfg_index_parameters` 中插入 SPI 默认参数 ✅已完成27 个参数含 Level/Speed/Stability 权重、压缩基数、窗口天数等)
- [ ] T4设计并创建 `dws_assistant_order_contribution`
- [ ] T5实现 `AssistantOrderContributionTask`
- [ ] T6扩展 `dws_member_consumption_summary`(充值窗口 + 次均消费字段)
- [ ] T7修改 `MemberConsumptionSummaryTask` 填充新字段
- [ ] T8扩展 `dws_assistant_daily_detail`(定档折算惩罚字段)
- [ ] T9实现定档折算惩罚检测与计算逻辑
- [ ] T10为新表创建 RLS 视图 + FDW 映射
- [ ] T11影子跑数验证SPI 分布、流水统计对账)