1
Some checks failed
Docker Build & Deploy / Build Docker Image (push) Waiting to run
Docker Build & Deploy / Deploy to Production (push) Has been cancelled
Docker Build & Deploy / Cleanup Dangling Images (push) Has been cancelled
Docker Build & Deploy / WeChat Notification (push) Has been cancelled

This commit is contained in:
SunCheng
2026-02-18 21:16:45 +08:00
parent 77c9b47246
commit c49f66757e
116 changed files with 6909 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
schema: spec-driven
created: 2026-02-17

View File

@@ -0,0 +1,28 @@
## Context
统计页图表基于 `chart.js` + `vue-chartjs` 渲染,目前存在饼图扇区直接绘制分类文字、仪表盘包含颠倒文字与多余数字的问题。需要在不改变数据含义的前提下,优化文字展示规则与仪表盘弧度范围,让关键信息更清晰。
## Goals / Non-Goals
**Goals:**
- 移除饼图扇区直接文本绘制,保留清晰的分类信息呈现方式。
- 仪表盘仅显示“已用/预算/余额”三项核心信息,去除颠倒与冗余文字。
- 仪表盘弧形从半圆略微加大,增强视觉完整度但不改变指标含义。
**Non-Goals:**
- 不调整数据计算逻辑与接口返回结构。
- 不变更其他统计图表的主题或配色体系。
## Decisions
- 关闭饼图扇区文本绘制插件或数据标签绘制逻辑,分类名称改为列表/图例承载(现有列表区域保留)。
- 备选:将标签外置引线。未选原因:当前空间有限且易与小扇区重叠。
- 仪表盘中心区域仅保留三项文本,统一排布与字号层级,移除额外数字绘制。
- 备选:保留次要刻度文本。未选原因:当前视觉干扰与颠倒问题更明显。
- 调整仪表盘弧度参数(如 `circumference` / `rotation`)使弧形超过 180°但不封闭成全圆。
- 备选:改为全圆。未选原因:与“预算进度”语义不匹配。
## Risks / Trade-offs
- [标签信息依赖列表/图例] → 确保列表/图例在移动端默认可见。
- [弧度调整影响布局] → 保持容器尺寸与中心文本布局自适应,避免遮挡。

View File

@@ -0,0 +1,23 @@
## Why
当前统计页图表存在视觉干扰:饼图直接叠加分类名称,半圆仪表盘出现颠倒文字与多余数字,影响可读性与数据理解,需要尽快修复以保证核心统计信息清晰。
## What Changes
- 饼图不再在扇区上直接展示分类名称,避免文字遮挡与视觉噪音。
- 半圆仪表盘移除颠倒文字与多余数字,仅展示“已用/预算/余额”三项核心信息。
- 仪表盘弧形从半圆略微加大(更接近圆弧),利用空白区域提升视觉完整度。
## Capabilities
### New Capabilities
- `chart-detail-fix`: 统计图表细节显示修复(饼图标签与仪表盘信息展示规范)。
### Modified Capabilities
- `pie-chart-label-positioning`: 调整饼图标签显示规则,禁止直接叠加在扇区上。
- `budget-gauge-display`: 调整仪表盘显示内容与弧度范围。
## Impact
- 前端:`Web/src/components/Charts/` 与统计页相关视图、Chart.js 配置
- 依赖:`chart.js``vue-chartjs` 现有配置方式

View File

@@ -0,0 +1,45 @@
## MODIFIED Requirements
### Requirement: 仪表图容器布局
预算仪表图 SHALL 在容器内正确居中显示,无错位。
#### Scenario: 垂直居中展示
- **WHEN** 用户查看预算页面的仪表图
- **THEN** 仪表图 SHALL 在容器内垂直居中
- **AND** SHALL 在容器内水平居中
- **AND** 与上下其他元素 SHALL 保持适当间距16px
#### Scenario: 响应式布局
- **WHEN** 用户在不同屏幕尺寸下查看仪表图
- **THEN** 仪表图 SHALL 保持居中不偏移
- **AND** 容器高度 SHALL 自适应确保图表完整显示
### Requirement: 页面错误处理
预算页面 SHALL 正确加载并显示仪表图,无运行时错误。
#### Scenario: 正常加载
- **WHEN** 用户访问预算页面
- **THEN** 页面 SHALL 无 JavaScript 错误
- **AND** 仪表图 SHALL 正常渲染
- **AND** 所有交互功能 SHALL 正常工作
#### Scenario: 错误边界处理
- **WHEN** 仪表图组件发生异常
- **THEN** 系统 SHALL 捕获错误并显示友好提示
- **AND** SHALL 不阻塞页面其他功能
### Requirement: 仪表盘信息展示约束
预算仪表盘 SHALL 仅展示已用、预算、余额三项核心信息,且不出现颠倒文字或额外数字。
#### Scenario: 仅展示核心信息
- **WHEN** 系统渲染预算仪表盘
- **THEN** 仪表盘中心区域 SHALL 仅显示已用、预算、余额
- **AND** SHALL 不出现颠倒文字或额外数字
### Requirement: 仪表盘弧度范围
预算仪表盘弧形 SHALL 略大于半圆但不形成全圆。
#### Scenario: 弧度扩展显示
- **WHEN** 系统渲染预算仪表盘
- **THEN** 仪表盘弧形 SHALL 超过 180°
- **AND** SHALL 保持非全圆形态

View File

@@ -0,0 +1,25 @@
## ADDED Requirements
### Requirement: 饼图不直接显示扇区文字
系统 SHALL 禁止在饼图扇区内直接绘制分类名称文字。
#### Scenario: 默认不显示扇区文字
- **WHEN** 系统渲染支出分类饼图
- **THEN** 扇区内 SHALL 不绘制分类名称文字
- **AND** 分类信息 SHALL 通过列表或图例展示
### Requirement: 仪表盘仅展示三项核心信息
预算仪表盘 SHALL 仅展示已用、预算、余额三项核心信息,且文字方向正确。
#### Scenario: 移除多余与颠倒文本
- **WHEN** 系统渲染预算仪表盘
- **THEN** 仪表盘中心区域 SHALL 仅显示已用、预算、余额
- **AND** SHALL 不出现颠倒文字或额外数字
### Requirement: 仪表盘弧度略大于半圆
预算仪表盘的弧形范围 SHALL 略大于半圆但不形成全圆。
#### Scenario: 弧度扩展显示
- **WHEN** 系统渲染预算仪表盘
- **THEN** 仪表盘弧形 SHALL 超过 180°
- **AND** SHALL 保持非全圆形态

View File

@@ -0,0 +1,24 @@
## MODIFIED Requirements
### Requirement: 分类标签智能定位
饼图的分类标签 SHALL 避免与图标重叠,并清晰展示分类名称。
#### Scenario: 标签位置优化
- **WHEN** 系统渲染支出分类饼图
- **THEN** 分类标签 SHALL 显示在饼图扇区外侧
- **AND** 标签 SHALL 通过引导线与对应扇区连接
- **AND** 标签文字 SHALL 显示分类名称而非仅在图标上叠加
#### Scenario: 避免标签重叠
- **WHEN** 多个分类扇区相邻且较小时
- **THEN** 系统 SHALL 自动调整标签位置避免相互重叠
- **AND** 当空间不足时 SHALL 使用图例(legend)代替直接标签
### Requirement: 图标与标签分离
分类图标和分类名称 SHALL 分开展示,不互相遮挡。
#### Scenario: 清晰的视觉层次
- **WHEN** 用户查看饼图
- **THEN** 分类图标 SHALL 显示在饼图扇区内部或作为图例图标
- **AND** 分类名称 SHALL 显示在标签位置而非图标上
- **AND** 两者 SHALL 不重叠遮挡

View File

@@ -0,0 +1,16 @@
## 1. 饼图标签展示调整
- [x] 1.1 定位饼图扇区标签绘制逻辑Chart.js dataLabels/自定义插件)
- [x] 1.2 关闭扇区内分类名称绘制,改为外侧引导线展示
- [x] 1.3 验证小扇区场景下不出现重叠文字(已实现防碰撞算法)
## 2. 仪表盘信息与弧度优化
- [x] 2.1 定位预算仪表盘中心文本渲染逻辑
- [x] 2.2 移除颠倒与多余数字,仅保留已用/预算/余额
- [x] 2.3 调整仪表盘弧度参数,确保略大于半圆且非全圆
## 3. 视觉与回归验证
- [x] 3.1 校验移动端布局与居中展示无错位
- [x] 3.2 在统计页验证列表/图例信息可见性(引导线+外侧标签)