Files
EmailBill/.doc/chart-migration-checklist.md

162 lines
4.6 KiB
Markdown
Raw Normal View History

# 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 插件生态丰富,未来可按需添加更多功能(如导出、缩放等)