开发机迁移

This commit is contained in:
Neo
2026-04-10 06:24:13 +08:00
parent f65c1d038b
commit 79d3c2e97e
50 changed files with 1565 additions and 318 deletions

View File

@@ -0,0 +1,171 @@
# 财务看板优化 PRD
> 日期2026-04-08
> 触发:财务看板数据评估,发现数据失真、展示缺陷、指标缺失
---
## 一、Bug 修复
### 1.1 [P2] 会员卡余额快照不变动
**问题**`dws_finance_recharge_summary` 表中 `cash_card_balance`62,674`total_card_balance`67,760连续多日完全相同。当前实际余额约 118KETL 快照值 67K数字严重失真。
**根因**(已调研确认):
`finance_recharge_task.py` 中:
1. `_extract_card_balances()` 只调用一次(传入 `end_date`),所有日期复用同一快照(第 64、89 行)
2. SQL 查询只取 `scd2_is_current = 1``stat_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_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 | 小 |