# 财务与风险看板卡片重组

## 功能一句话

将财务看板的预算执行率合并进预算指标卡片，并重组风险看板尾部卡片，让异常排行和风险占比成为主要分析信息。

## 背景与问题

当前分析看板存在两个体验问题：

- 财务看板底部同时有“预算指标”和“预算执行率（本月）”两个预算卡片，信息相近但占用两块空间。
- 风险看板中“算法闭环效果”和“近期高风险观察”对当前看板判断价值较低；“来源分布”展示 `unknown` 时会让用户误以为数据异常，实际用户想看每类风险占比。

## 目标与非目标

目标：

- 将预算执行率仪表图整合进“预算指标”卡片，取消单独的预算执行率卡片，并把整合后的预算指标卡放在“高额单据”右侧空白位。
- 风险看板把“来源分布”改为“风险占比”，展示风险信号或风险类型占比。
- 风险看板移除“算法闭环效果”和“近期高风险观察”卡片。
- 异常排行重新设计为占满整张卡片的图表化内容，减少碎片列表感。

非目标：

- 不改后端接口，不新增风险或预算接口。
- 不改顶部 KPI 和风险趋势图数据口径。
- 不引入新的图表库，继续复用现有 `DonutChart`、`BarChart` 和 `GaugeChart`。

## 用户与场景

用户：

- 财务分析人员、风险复核人员、管理员。

场景：

- 财务人员查看预算指标时，一眼看到预算执行率、预算总额、已用和剩余额度。
- 风险人员查看风险看板时，优先看到风险类型占比和异常维度排行，而不是来源未知或低价值尾部卡片。

## 功能能力

财务看板：

- “预算指标”卡片包含预算执行率仪表图和预算指标列表，桌面端与“高额单据”同处底部半宽行，避免预算信息独占新行造成留白。
- `budgetSummary` 仍作为仪表图数据源。
- `budgetMetrics` 仍作为指标列表数据源。
- 单独 `budget-panel` 不再渲染。

风险看板：

- “来源分布”改为“风险占比”，数据来自 `signalDistribution` 或 `topRiskSignals`。
- 异常排行卡片横跨整行，主图表填满卡片，下面只保留紧凑排行明细。
- 删除算法闭环效果和近期高风险观察两个卡片。

## 方案设计

前端：

- `OverviewView.vue`
  - 删除独立预算执行率卡片。
  - 在预算指标卡片内部增加 `GaugeChart` 区域，与指标列表左右布局。

- `overview-view.css`
  - 调整 `budget-metrics-panel` 的布局宽度和内部栅格，桌面端占 6 栅格贴合“高额单据”右侧。
  - 新增预算整合布局样式，移动端自动单列。

- `useOverviewView.js`
  - 将 `riskSourceLegend` 改为风险占比 legend，优先使用风险信号分布。

- `RiskObservationDashboard.vue`
  - 风险占比卡片标题改为“风险占比”。
  - 异常排行卡片改为整行大卡。
  - 移除算法闭环效果和近期高风险观察模板与样式。

## 算法与公式

本次不改变后端算法，只改变前端展示。

风险占比：

$$
share_i = \frac{count_i}{\sum_{j=1}^{n} count_j}
$$

预算执行率沿用已有 `budgetSummary.ratio`：

$$
budgetUsageRate = \frac{usedBudget}{totalBudget}
$$

## 测试方案

- 前端源码测试：
  - 财务看板不再渲染独立 `budget-panel`。
  - 预算指标卡片包含 `GaugeChart`。
  - 风险看板标题为“风险占比”，不再使用“来源分布”。
  - 风险看板不再渲染算法闭环效果和近期高风险观察。
  - 异常排行卡片使用整行样式和图表填充样式。
- 构建验证：
  - `node web/tests/risk-observation-dashboard.test.mjs`
  - 如有财务看板测试则补充运行。
  - `npm.cmd --prefix web run build`

## 指标与验收

- 财务看板底部不再多出单独“预算执行率（本月）”卡片。
- 预算指标卡片内部能看到预算执行率和预算指标，并在桌面端填充“高额单据”右侧空白位。
- 风险看板不再显示“算法闭环效果”和“近期高风险观察”。
- 风险占比不再显示来源未知，而是展示具体风险占比。
- 异常排行卡片占满整行，图表区域明显成为主内容。

## 风险与开放问题

- 当前工作区已有未提交改动，提交时必须只纳入本次相关文件。
- 本次只改前端展示，如果后端风险信号为空，则仍需要显示“暂无数据”兜底。
