168 lines
6.3 KiB
Markdown
168 lines
6.3 KiB
Markdown
|
|
# 财务看板口径重构与画像模拟概念文档
|
|||
|
|
|
|||
|
|
## 功能一句话
|
|||
|
|
|
|||
|
|
把财务看板从“审批过程展示”调整为“财务费用经营分析”,并让半年模拟数据自然形成部门、预算、风险和员工画像。
|
|||
|
|
|
|||
|
|
## 背景与问题
|
|||
|
|
|
|||
|
|
当前财务看板存在三类偏差:
|
|||
|
|
|
|||
|
|
- 费用结构里直接展示 `travel_application` 等技术枚举,业务用户无法理解,且申请类口径不应混入报销费用结构。
|
|||
|
|
- 风险异常分布缺少完整中文映射,`missing_material`、`budget_pressure` 等风险信号以英文或半翻译方式泄露到页面。
|
|||
|
|
- 趋势图和底部卡片仍围绕审批量、审批时长展开,不符合财务看板的核心诉求。
|
|||
|
|
|
|||
|
|
半年模拟数据也需要服务于看板分析,不能只堆单据。它必须能支撑多部门费用排行、预算消耗、风险分布和员工画像。
|
|||
|
|
|
|||
|
|
## 目标
|
|||
|
|
|
|||
|
|
- 费用结构只展示费用科目中文名称,申请类技术值不裸露。
|
|||
|
|
- 风险异常分布统一中文化,并覆盖预算压力、材料缺失、预算超支等常见信号。
|
|||
|
|
- 趋势图改为每日报销数量和每日报销金额。
|
|||
|
|
- “审批瓶颈”改为财务关注项,展示预算、待付款、材料待补、风险金额等财务指标。
|
|||
|
|
- 部门排行按费用金额统计,而不是只看待处理审批金额。
|
|||
|
|
- 模拟数据在写入后可生成员工行为画像快照,画像与报销单据、预算压力和风险观察一致。
|
|||
|
|
|
|||
|
|
## 非目标
|
|||
|
|
|
|||
|
|
- 不重做财务看板整体视觉框架。
|
|||
|
|
- 不新增一套独立画像算法。
|
|||
|
|
- 不修改生产环境数据;所有批量修复只作用于 `SIM2026`、`SIM-EXP-2026`、`SIM-BUD-2026` 等模拟前缀数据。
|
|||
|
|
|
|||
|
|
## 用户与场景
|
|||
|
|
|
|||
|
|
- 财务经理:查看半年费用趋势、部门费用结构、预算执行和风险异常。
|
|||
|
|
- 部门负责人:理解本部门费用消耗和预算压力。
|
|||
|
|
- 审批人:查看员工画像时,能看到基于半年模拟数据形成的费用和流程质量画像。
|
|||
|
|
- 系统演示人员:用 100 人规模的模拟数据演示端到端效果。
|
|||
|
|
|
|||
|
|
## 功能能力
|
|||
|
|
|
|||
|
|
### 费用结构
|
|||
|
|
|
|||
|
|
输入为当前时间范围内有效报销单。
|
|||
|
|
|
|||
|
|
输出为费用科目金额占比:
|
|||
|
|
|
|||
|
|
- 排除草稿、退回、驳回、删除等非有效支出状态。
|
|||
|
|
- `travel_application` 等申请类值不直接展示;若历史数据仍存在,则归一为“差旅费”或从费用结构中排除申请类虚拟项。
|
|||
|
|
- 所有展示名称必须是中文。
|
|||
|
|
|
|||
|
|
### 风险异常分布
|
|||
|
|
|
|||
|
|
输入为风险观察和报销单风险标记。
|
|||
|
|
|
|||
|
|
输出为中文风险类型分布:
|
|||
|
|
|
|||
|
|
- `missing_material`:材料不完整
|
|||
|
|
- `budget_pressure`:预算压力偏高
|
|||
|
|
- `budget_overrun`:预算超支
|
|||
|
|
- `duplicate_invoice`:重复发票
|
|||
|
|
- `split_billing`:拆分报销
|
|||
|
|
- `amount_outlier`:金额异常
|
|||
|
|
|
|||
|
|
未知枚举用“风险观察”兜底,不能把英文下划线文案直接展示给用户。
|
|||
|
|
|
|||
|
|
### 每日报销趋势
|
|||
|
|
|
|||
|
|
趋势图按天返回:
|
|||
|
|
|
|||
|
|
- `claimCount`:每日有效报销单数量
|
|||
|
|
- `claimAmount`:每日有效报销金额
|
|||
|
|
|
|||
|
|
前端使用柱线组合图展示,左轴为单量,右轴为金额。
|
|||
|
|
|
|||
|
|
### 财务关注项
|
|||
|
|
|
|||
|
|
替代原“审批瓶颈”:
|
|||
|
|
|
|||
|
|
- 预算超支:超支预算池数量和金额。
|
|||
|
|
- 预算预警:预算使用率接近上限的池数量。
|
|||
|
|
- 材料待补:材料不完整风险数量。
|
|||
|
|
- 风险金额:当前范围内风险单据金额。
|
|||
|
|
- 待付款:已审批待付款金额。
|
|||
|
|
|
|||
|
|
### 员工画像
|
|||
|
|
|
|||
|
|
模拟数据写入后触发现有 `EmployeeBehaviorProfileService`:
|
|||
|
|
|
|||
|
|
- 生成 30、90、180 天画像快照。
|
|||
|
|
- 画像类型沿用费用支出、流程质量、AI 使用和审批行为。
|
|||
|
|
- 不伪造画像结果,只用模拟报销单、审批记录和风险数据驱动算法。
|
|||
|
|
|
|||
|
|
## 方案设计
|
|||
|
|
|
|||
|
|
### 后端
|
|||
|
|
|
|||
|
|
- 在 `FinanceDashboardService` 中新增费用类型与风险信号归一化方法。
|
|||
|
|
- 将 `_trend` 改为统计每日有效报销数量和金额,同时保留旧字段兼容前端灰度。
|
|||
|
|
- 将 `_department_ranking` 改为按有效费用金额统计。
|
|||
|
|
- 将 `_bottlenecks` 的返回语义改为财务关注项,字段名暂保留,降低接口破坏面。
|
|||
|
|
- 模拟数据脚本增加画像刷新入口,调用现有画像服务生成快照。
|
|||
|
|
|
|||
|
|
### 前端
|
|||
|
|
|
|||
|
|
- `TrendChart` 文案改为“报销单量”和“报销金额”。
|
|||
|
|
- `OverviewView` 标题改为:
|
|||
|
|
- 报销数量与金额趋势
|
|||
|
|
- 部门报销排行(费用金额)
|
|||
|
|
- 财务关注项
|
|||
|
|
- 底部列表继续复用现有紧凑卡片样式,不引入新视觉体系。
|
|||
|
|
|
|||
|
|
### 数据
|
|||
|
|
|
|||
|
|
- 部门分布按业务权重分配,避免只有市场部或技术部。
|
|||
|
|
- 近 10 日和本月窗口保证各核心部门都有可见费用。
|
|||
|
|
- 风险样本覆盖材料缺失、预算压力、重复发票、金额异常等类型。
|
|||
|
|
- 预算台账与报销单金额一致,能体现预警和超支。
|
|||
|
|
|
|||
|
|
## 算法与公式
|
|||
|
|
|
|||
|
|
费用金额:
|
|||
|
|
|
|||
|
|
$$
|
|||
|
|
amount_d = \sum_{c \in C_d} claimAmount(c)
|
|||
|
|
$$
|
|||
|
|
|
|||
|
|
其中 \(C_d\) 为某日有效状态报销单集合。
|
|||
|
|
|
|||
|
|
部门费用排行:
|
|||
|
|
|
|||
|
|
$$
|
|||
|
|
deptSpend_i = \sum_{c \in C_i} claimAmount(c)
|
|||
|
|
$$
|
|||
|
|
|
|||
|
|
预算使用率:
|
|||
|
|
|
|||
|
|
$$
|
|||
|
|
usageRate = \frac{reservedAmount + consumedAmount}{totalAmount} \times 100\%
|
|||
|
|
$$
|
|||
|
|
|
|||
|
|
风险金额:
|
|||
|
|
|
|||
|
|
$$
|
|||
|
|
riskAmount = \sum_{c \in C, hasRisk(c)=true} claimAmount(c)
|
|||
|
|
$$
|
|||
|
|
|
|||
|
|
## 测试方案
|
|||
|
|
|
|||
|
|
- 后端单元测试:验证费用类型中文化、风险信号中文化、趋势字段、部门排行和财务关注项。
|
|||
|
|
- 容器接口测试:在 `x-financial-main:/app` 调用 `/api/v1/analytics/finance-dashboard`。
|
|||
|
|
- 前端构建:使用项目现有 `npm.cmd` 构建路径。
|
|||
|
|
- 数据脚本 dry-run:确认模拟修复仅作用于 `SIM` 前缀数据。
|
|||
|
|
- 画像验证:确认 `employee_behavior_profile_snapshots` 生成模拟员工的快照。
|
|||
|
|
|
|||
|
|
## 指标与验收
|
|||
|
|
|
|||
|
|
- 财务看板接口不再返回 `travel_application`、`missing material`、`budget pressure` 等裸英文展示名。
|
|||
|
|
- 趋势字段包含 `claimCount` 和 `claimAmount`,前端标题不再出现“审批趋势”。
|
|||
|
|
- 部门排行至少覆盖 6 个核心部门的有效费用金额。
|
|||
|
|
- 财务关注项不再显示审批节点或平均处理时长。
|
|||
|
|
- 半年模拟数据可生成 100 人规模下的员工画像快照。
|
|||
|
|
|
|||
|
|
## 风险与开放问题
|
|||
|
|
|
|||
|
|
- 历史非模拟数据可能仍有 `待补充` 部门,当前方案只保证模拟数据合理,不强行修复历史数据。
|
|||
|
|
- 批量修复模拟数据涉及数据库更新和重建模拟预算台账,执行 `--apply` 前需要用户明确确认。
|
|||
|
|
- 前端浏览器验证若环境不稳定,可降级为接口 JSON、构建和容器内测试证据。
|