Files
Neo-ZQYY/docs/prd/2026-04-08__board-finance-optimization.md
2026-04-10 06:24:13 +08:00

5.6 KiB
Raw Blame History

财务看板优化 PRD

日期2026-04-08 触发:财务看板数据评估,发现数据失真、展示缺陷、指标缺失


一、Bug 修复

1.1 [P2] 会员卡余额快照不变动

问题dws_finance_recharge_summary 表中 cash_card_balance62,674total_card_balance67,760连续多日完全相同。当前实际余额约 118KETL 快照值 67K数字严重失真。

根因(已调研确认):

finance_recharge_task.py 中:

  1. _extract_card_balances() 只调用一次(传入 end_date),所有日期复用同一快照(第 64、89 行)
  2. SQL 查询只取 scd2_is_current = 1stat_date 参数传入但未使用(第 197-216 行)
  3. 赠送卡余额同样受影响

DWD 维度表验证(已确认可用):

  • dim_member_card_account SCD2 版本充足(主卡类 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_summaryfirst_recharge_countrenewal_count 全为 0recharge_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_countboard_service._build_overview() 计算 avg_per_orderavg_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