Story 005.001: 移动端股票图表组件适配优化
父史诗: 史诗005 - 移动端股票训练系统适配优化
docs/prd/epic-005-mobile-stock-training-adaptation.md
Status
In Progress
Story
As a 移动端股票交易用户
I want 在移动设备上获得流畅、直观的股票图表交互体验
so that 我能够高效地进行股票训练、技术分析和交易决策
Acceptance Criteria
- 移动端图表显示优化 - 股票K线图在移动端清晰显示,图表元素大小适配移动屏幕,加载时间<2秒
- 触摸交互优化 - 支持手势缩放、平移操作,触摸目标尺寸≥44px,交互响应时间<150ms
- 顶部行情信息适配 - 移动端ProfitDisplay组件布局合理,信息显示清晰,触摸友好
- 交易面板触摸优化 - 交易按钮和输入框触摸友好,防误触设计,操作反馈清晰
- 绘图工具栏移动端适配 - 绘图工具在移动端可用,工具栏布局紧凑,操作便捷
- 性能优化和内存管理 - 移动端内存占用<100MB,图表渲染性能稳定,无卡顿现象
Tasks / Subtasks
Dev Notes
现有技术栈分析 [Source: 架构文档和代码分析]
- 前端框架: React 19.1.0 + TypeScript (严格模式)
- 图表库: ECharts 5.x (已集成移动端手势支持)
- 样式框架: Tailwind CSS 4.1.11 (原子化CSS框架)
- 移动端框架: 基于React Router 7的移动端SPA
- 构建工具: Vite 7.0.0 (支持热重载)
- 状态管理: React Query 5.83.0 (服务端状态管理)
- 现有组件: StockChart、TradePanel、DrawingToolbar等已实现桌面端基础功能
- 触摸支持: ECharts内置移动端手势支持,需要配置优化
移动端适配技术方案
1. 统一移动端检测机制
// 使用项目统一的移动端检测Hook
import { useIsMobile } from '@/client/hooks/use-mobile';
// 在组件中使用
const isMobile = useIsMobile(); // 返回boolean值,基于768px断点
2. 响应式图表配置
// 移动端专属的ECharts配置
const mobileChartConfig = {
grid: {
top: '10%',
right: '3%',
bottom: '15%',
left: '3%'
},
textStyle: {
fontSize: 12
},
dataZoom: [
{
type: 'inside',
start: 0,
end: 100
}
]
};
3. 触摸交互优化
- 使用ECharts的
gesture配置支持移动端手势
- 实现自定义触摸事件处理,防止误操作
- 添加触摸反馈和动画效果
4. 移动端布局重构
- 使用CSS媒体查询适配不同屏幕尺寸
- 采用移动优先的设计思路
- 优化组件层级和渲染性能
关键组件分析
StockChart组件现状
- ✅ 已实现基础K线图功能
- ✅ 已集成绘图工具
- ❌ 移动端显示适配不足
- ❌ 触摸交互体验待优化
ProfitDisplay组件现状
- ✅ 已实现基础行情信息显示
- ✅ 显示累计收益率和每日行情数据
- ❌ 移动端布局未适配,信息显示拥挤
- ❌ 缺乏响应式设计,小屏幕体验差
TradePanel组件现状
- ✅ 已实现买卖交易功能
- ✅ 支持快捷键操作
- ❌ 移动端触摸目标过小
- ❌ 缺乏防误触机制
DrawingToolbar组件现状
- ✅ 已实现多种绘图工具
- ✅ 支持线条绘制和编辑
- ❌ 移动端操作不便
- ❌ 工具栏布局需优化
性能优化策略
图表数据优化
- 实现数据分页加载
- 使用Web Workers处理大数据量
- 优化ECharts渲染性能
内存管理
- 及时销毁不需要的图表实例
- 使用React.memo优化组件重渲染
- 实现虚拟化渲染长列表
网络优化
- 实现数据缓存机制
- 使用Service Worker支持离线访问
- 优化API请求频率
Testing
测试策略
- 设备覆盖: iOS Safari、Android Chrome主流版本
- 屏幕尺寸: 覆盖小屏手机到大屏平板
- 网络环境: 3G/4G/5G/WiFi不同网络条件测试
- 交互测试: 手势操作、多点触控、滑动测试
测试验证点
- 图表在不同设备上的显示效果
- 触摸操作的准确性和响应速度
- 顶部行情信息在不同屏幕尺寸的显示效果
- 交易操作的防误触效果
- 性能指标(加载时间、内存占用)
自动化测试 [Source: 架构文档和实际配置]
- E2E测试框架: 使用Playwright进行移动端UI测试
- 测试文件位置:
tests/e2e/specs/
- 测试设备模拟: Mobile Chrome (Pixel 5), Mobile Safari (iPhone 12) [实际配置已验证]
- 测试覆盖: 手势操作、触摸交互、响应式布局
- 配置位置:
tests/e2e/playwright.config.ts
- 性能基准测试:
- 使用Chrome DevTools Performance面板进行性能分析
- 监控指标: 加载时间、内存占用、FPS帧率
- 测试工具: Lighthouse性能测试
- 跨浏览器兼容性测试:
- 测试框架: Playwright跨浏览器测试
- 覆盖浏览器: iOS Safari、Android Chrome、移动端Edge
- 测试重点: 图表渲染一致性、触摸事件兼容性
- 手动测试验证:
- 实际移动设备测试(iOS/Android)
- 不同网络环境测试(3G/4G/5G/WiFi)
- 用户体验测试和反馈收集
Change Log
| Date |
Version |
Description |
Author |
| 2025-09-27 |
1.0 |
初始故事创建 |
Claude Code |
| 2025-09-28 |
1.1 |
修复po验证报告中的关键问题:修正文件路径、补充技术栈细节、添加Dev Agent Record、细化任务-AC映射、完善测试策略 |
Bob (SM) |
| 2025-09-28 |
1.2 |
修复PO验证问题:移除移动端专属样式文件需求(使用Tailwind响应式类)、更新测试配置信息、明确实际测试设备 |
Bob (SM) |
| 2025-09-28 |
1.3 |
修复PO验证报告关键问题:统一技术栈版本格式(Tailwind CSS 4.1.11)、确认测试设备配置、移除不必要的文件创建需求 |
Bob (SM) |
| 2025-09-28 |
1.4 |
修复移动端检测Hook逻辑问题,统一使用matchMedia.matches确保检测准确性 |
James (Dev) |
| 2025-09-28 |
1.5 |
修正故事内容:去掉技术指标面板任务,添加ProfitDisplay移动端适配任务 |
Bob (SM) |
| 2025-09-28 |
1.6 |
实现ProfitDisplay组件移动端适配:响应式布局、信息优先级调整、触摸优化 |
James (Dev) |
Risk Assessment
技术风险
- ECharts移动端兼容性: 可能存在特定设备的兼容性问题
- 触摸交互复杂性: 手势操作可能影响现有桌面端功能
- 性能优化难度: 移动端性能优化需要深入的技术调优
缓解措施
- 渐进式开发,分模块测试
- 保持桌面端功能完整性
- 充分的跨设备测试
- 性能监控和优化迭代
依赖关系
- 依赖现有股票图表组件库的稳定性
- 需要移动端布局框架的支持
- 依赖ECharts移动端扩展的可用性
Success Metrics
定量指标
- 移动端图表加载时间减少50%(目标<2秒)
- 触摸交互响应时间<150ms
- 移动端内存占用<100MB
- 用户操作成功率>95%
定性指标
- 移动端用户体验评分>4.5/5
- 用户反馈积极,操作流畅
- 无明显的性能问题报告
- 跨设备兼容性良好
Implementation Timeline
Phase 1: 基础适配 (1周)
Phase 2: 功能完善 (1周)
Phase 3: 体验优化 (1周)
Phase 4: 测试验收 (0.5周)
总周期: 3.5周
Files to be Modified
核心组件文件
src/client/mobile/components/stock/components/stock-chart/src/components/StockChart.tsx - 股票图表主组件
src/client/mobile/components/stock/components/stock-chart/src/components/ProfitDisplay.tsx - 顶部行情信息组件
src/client/mobile/components/stock/components/stock-chart/src/components/TradePanel.tsx - 交易面板组件
src/client/mobile/components/stock/components/stock-chart/src/components/DrawingToolbar.tsx - 绘图工具栏组件
src/client/mobile/components/stock/stock_main.tsx - 股票主页面组件
样式优化
- 使用Tailwind CSS响应式类优化移动端布局(sm:, md:, lg:断点)
- 优化现有组件的移动端样式适配
- 确保触摸目标尺寸≥44px,符合移动端标准
工具函数
Dev Agent Record
Agent Model Used
Claude Code (d8d-model)
Debug Log References
- 移动端适配调试日志
- 性能优化调试记录
- 触摸交互调试信息
Completion Notes List
File List
src/client/mobile/components/stock/components/stock-chart/src/components/StockChart.tsx - 股票图表主组件适配
src/client/mobile/components/stock/components/stock-chart/src/components/ProfitDisplay.tsx - 顶部行情信息组件移动端适配(已实现)
src/client/mobile/components/stock/components/stock-chart/src/components/TradePanel.tsx - 交易面板触摸优化
src/client/mobile/components/stock/components/stock-chart/src/components/DrawingToolbar.tsx - 绘图工具栏移动端适配
src/client/mobile/components/stock/stock_main.tsx - 股票主页面响应式布局
- 使用Tailwind CSS响应式类实现移动端样式适配(无需新增专属样式文件)
Next Steps
- 详细技术方案设计
- 移动端原型开发
- 跨设备测试验证
- 性能优化迭代
- 用户验收测试