5.6 KiB
财务看板优化 PRD
日期:2026-04-08 触发:财务看板数据评估,发现数据失真、展示缺陷、指标缺失
一、Bug 修复
1.1 [P2] 会员卡余额快照不变动
问题:dws_finance_recharge_summary 表中 cash_card_balance(62,674)和 total_card_balance(67,760)连续多日完全相同。当前实际余额约 118K,ETL 快照值 67K,数字严重失真。
根因(已调研确认):
finance_recharge_task.py 中:
_extract_card_balances()只调用一次(传入end_date),所有日期复用同一快照(第 64、89 行)- SQL 查询只取
scd2_is_current = 1,stat_date参数传入但未使用(第 197-216 行) - 赠送卡余额同样受影响
DWD 维度表验证(已确认可用):
dim_member_card_accountSCD2 版本充足(主卡类 55,526 个版本,覆盖 53 天)- 按日有明确余额变化(4/6: ¥3,745 → 4/7: ¥9,291 → 4/8: ¥1,587)
- 可通过
scd2_start_time <= stat_date AND scd2_end_time > stat_date做 as-of 查询
修复方案:
_extract_card_balances()改为按日遍历,每天查该日生效的 SCD2 版本transform()中按stat_date查表,不再共用同一快照
状态:待实施
1.2 [P2] 充值首充/续费笔数全为 0
问题:dws_finance_daily_summary 中 first_recharge_count 和 renewal_count 全为 0,但 recharge_count 有值。
DWD 验证(已确认源数据正确):
dwd_recharge_order.is_first字段完好- 3 月:首充 6 笔 ¥14,996 / 续费 43 笔 ¥204,998
- ETL 聚合时未读取
is_first字段进行分类统计
修复方案:finance_recharge_task.py 中按 is_first 分组统计,写入 first_recharge_count / renewal_count
状态:待实施
二、文案优化
2.1 "储值卡结算冲销" → "储值卡消费抵扣"
位置:
board_service.py:984— 空降级值board_service.py:1023— 正常取值fdw_queries.py:2898— 查询层
状态:待实施
三、新增指标
3.1 经营一览 — 补充效率指标
在经营一览板块"实收流水"数据下方新增一行,3 个指标横向排列:
┌──────────┬──────────┬──────────┐
│ 开台数 │ 客单价 │ 日均额 │
│ 3,262 │ ¥128.7 │ ¥13,991 │
└──────────┴──────────┴──────────┘
计算方案
注意:客单价和日均额的分子使用确认收入(发生额-优惠后的实际入账),与所在位置"实收流水"语境一致。
| 指标 | 公式 | 数据来源 | 说明 |
|---|---|---|---|
| 开台数 | SUM(order_count) |
dws_finance_daily_summary.order_count |
日期范围内结算单总数 |
| 客单价 | SUM(confirmed_income) / SUM(order_count) |
同上 | 确认收入 / 开台数 |
| 日均额 | SUM(confirmed_income) / COUNT(DISTINCT stat_date) |
同上 | 确认收入 / 营业天数 |
3 月实测值:开台 3,262 | 客单价 ¥128.7 | 日均额 ¥13,991
展示方案
- 位置:经营一览板块"实收流水"数据下方
- 样式:3 列等宽卡片,灰色标签 + 黑色数值
- 环比:支持(compare=1 时显示环比变化)
- 区域过滤:area!=all 时,从
dws_finance_area_daily对应 area_code 取order_count+confirmed_income
实现影响
- 后端:
fdw_queries.get_finance_overview()追加返回order_count;board_service._build_overview()计算avg_per_order和avg_daily - 前端:
board-finance.wxml经营一览实收流水下方加一行三列
3.2 预收资产 — 补充充值笔数
在储值卡充值实收行追加笔数信息:
储值卡充值实收 ¥222,994 50笔
首充/续费区分待 Bug 1.2 修复后展开为
50笔(首充6 / 续费44)
计算方案
| 指标 | 公式 | 数据来源 |
|---|---|---|
| 充值笔数 | SUM(recharge_count) |
dws_finance_recharge_summary.recharge_count |
展示方案
- 位置:储值卡充值实收金额右侧
- 格式:
50笔 - 环比:暂不做
3.3 应计收入 — 优惠扣减增加占比
每个优惠项显示金额 + 占总优惠的百分比:
团购优惠 ¥48,231 23.6%
会员折扣 ¥89,102 43.6%
手动调整 ¥31,540 15.4%
赠送卡抵扣 ¥28,230 13.8%
其他优惠 ¥7,209 3.5%
────────────────────────
总优惠 ¥204,312 100%
计算方案
| 指标 | 公式 |
|---|---|
| 各项占比 | 该项金额 / discount_total * 100 |
展示方案
- 位置:每个优惠项金额右侧
- 格式:
23.6%,灰色小字 - 仅在总优惠 > 0 时显示占比
3.4 团购展示优化
背景
团购数据上传时已上传的是结算金额(扣除平台各种扣费后的实际回款),因此不需要额外展示手续费和面值拆分。
方案
将现金流入板块中"团购平台"标签改为"团购结算",明确表达该金额是平台结算后到账金额,避免与核销面值混淆。
位置:后端 board_service.py / fdw_queries.py 中 cashflow 板块的团购项 label
状态:待实施
四、实施优先级
| 优先级 | 事项 | 工作量 |
|---|---|---|
| P1 | 文案优化(储值卡消费抵扣) | 小 |
| P1 | 经营一览补充效率指标(开台数/客单价/日均额) | 中 |
| P1 | 团购标签改为"团购结算" | 小 |
| P2 | 优惠占比展示 | 小 |
| P2 | 充值笔数展示 | 小 |
| P2 | 卡余额快照修复(Bug 1.1) | 中 |
| P2 | 充值首充/续费识别修复(Bug 1.2) | 小 |