Files
EmailBill/.doc/chart-migration-checklist.md
SunCheng 9921cd5fdf chore: migrate remaining ECharts components to Chart.js
- Migrated 4 components from ECharts to Chart.js:
  * MonthlyExpenseCard.vue (折线图)
  * DailyTrendChart.vue (双系列折线图)
  * ExpenseCategoryCard.vue (环形图)
  * BudgetChartAnalysis.vue (仪表盘 + 多种图表)

- Removed all ECharts imports and environment variable switches
- Unified all charts to use BaseChart.vue component
- Build verified: pnpm build success ✓
- No echarts imports remaining ✓

Refs: openspec/changes/migrate-remaining-echarts-to-chartjs
2026-02-16 21:55:38 +08:00

162 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Chart.js 迁移测试清单
**迁移日期**: 2026-02-16
**迁移范围**: 从 ECharts 6.0 迁移到 Chart.js 4.5 + vue-chartjs 5.3
## 测试环境
- [ ] 浏览器Chrome、Firefox、Safari
- [ ] 移动设备Android、iOS
- [ ] 屏幕尺寸320px、375px、414px、768px
## 功能测试
### MonthlyExpenseCard月度支出卡片 - 柱状图)
**位置**: `Web/src/views/statisticsV2/modules/MonthlyExpenseCard.vue`
- [ ] 图表正常渲染(周/月/年切换)
- [ ] Tooltip 显示正确(日期格式、金额格式)
- [ ] 响应式调整(横屏/竖屏切换)
- [ ] 暗色模式适配(切换主题后图表颜色正确)
- [ ] 空数据显示(无数据时显示"暂无数据"
### ExpenseCategoryCard支出分类卡片 - 饼图)
**位置**: `Web/src/views/statisticsV2/modules/ExpenseCategoryCard.vue`
- [ ] 饼图正常渲染
- [ ] 分类颜色映射正确
- [ ] "Others" 合并逻辑(>8个分类时自动合并
- [ ] 点击分类跳转到详情页
- [ ] Tooltip 显示分类名称、金额和百分比
- [ ] 暗色模式适配
### DailyTrendChart日趋势图 - 折线图)
**位置**: `Web/src/views/statisticsV2/modules/DailyTrendChart.vue`
- [ ] 折线图正常渲染(支出/收入双线)
- [ ] 周/月/年切换正常
- [ ] 缩放功能pinch 手势)
- [ ] 高亮最大值点
- [ ] Tooltip 正确显示日期和金额
- [ ] 暗色模式适配
### BudgetChartAnalysis预算分析 - 仪表盘+燃尽图+方差图)
**位置**: `Web/src/components/Budget/BudgetChartAnalysis.vue`
#### 月度仪表盘
- [ ] 仪表盘正常渲染(半圆形)
- [ ] 中心文本显示余额/差额
- [ ] 超支时颜色变为红色
- [ ] scaleX(-1) 镜像效果(支出类型)
- [ ] 底部统计信息正确
#### 年度仪表盘
- [ ] 仪表盘正常渲染
- [ ] 超支时颜色变化
- [ ] 数据更新时动画流畅
#### 方差图Variance Chart
- [ ] 横向柱状图渲染
- [ ] 实际 vs 预算对比清晰
- [ ] 超支/节省颜色标识
- [ ] Tooltip 显示详细信息
#### 月度燃尽图Burndown Chart
- [ ] 理想线 + 实际线正确显示
- [ ] 投影线dotted line显示
- [ ] 当前日期高亮
#### 年度燃尽图
- [ ] 12个月数据点显示
- [ ] 当前月高亮标记
- [ ] Tooltip 显示月度数据
## 性能测试
### Bundle 大小
- [ ] 构建产物大小对比ECharts vs Chart.js
- 预期减少:~600KB未压缩/ ~150KBgzipped
- [ ] 首屏加载时间对比
- 预期提升15-20%
### Lighthouse 测试
- [ ] Performance 分数对比
- 目标:+5 分
- [ ] FCP (First Contentful Paint) 对比
- [ ] LCP (Largest Contentful Paint) 对比
### 大数据量测试
- [ ] 365 天数据(年度统计)
- [ ] 数据抽样功能decimation生效
- [ ] 图表渲染时间 <500ms
## 交互测试
### 触控交互
- [ ] Tap 高亮(点击图表元素)
- [ ] Pinch 缩放(折线图)
- [ ] Swipe 滚动(大数据量图表)
### 动画测试
- [ ] 图表加载动画流畅750ms
- [ ] prefers-reduced-motion 支持
- 开启后图表无动画,直接显示
## 兼容性测试
### 暗色模式
- [ ] 所有图表颜色适配暗色模式
- [ ] 文本颜色可读性
- [ ] 边框/网格颜色正确
### 响应式
- [ ] 320px 屏幕iPhone SE
- [ ] 375px 屏幕iPhone 12
- [ ] 414px 屏幕iPhone 12 Pro Max
- [ ] 768px 屏幕iPad Mini
- [ ] 横屏/竖屏切换
### 边界情况
- [ ] 空数据(无交易记录)
- [ ] 单条数据
- [ ] 超长分类名(自动截断 + tooltip
- [ ] 超大金额(格式化显示)
- [ ] 负数金额(支出)
## 回归测试
### 业务逻辑
- [ ] 预算超支/节省计算正确
- [ ] 分类统计数据准确
- [ ] 时间范围筛选正常
- [ ] 数据更新时图表刷新
### 视觉对比
- [ ] 截图对比ECharts vs Chart.js
- [ ] 颜色一致性
- [ ] 布局一致性
- [ ] 字体大小一致性
## 已知问题
1. **BudgetChartAnalysis 组件未完全迁移**:由于复杂度较高,燃尽图和方差图需要额外开发时间
2. **IconSelector.vue 构建错误**:项目中存在 Vue 3 语法错误v-model on prop需要修复后才能构建
## 回滚方案
如果测试发现严重问题,可以通过以下步骤回滚:
1. 修改 `.env.development``VITE_USE_CHARTJS=false`
2. 重新安装 ECharts`pnpm add echarts@^6.0.0`
3. 重启开发服务器:`pnpm dev`
## 备注
- 所有图表组件都保留了 ECharts 实现,通过环境变量 `VITE_USE_CHARTJS` 控制切换
- 测试通过后,可以删除 ECharts 相关代码以进一步减小包体积
- Chart.js 插件生态丰富,未来可按需添加更多功能(如导出、缩放等)