2
0

005.001.story.md 13 KB

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

  1. 移动端图表显示优化 - 股票K线图在移动端清晰显示,图表元素大小适配移动屏幕,加载时间<2秒
  2. 触摸交互优化 - 支持手势缩放、平移操作,触摸目标尺寸≥44px,交互响应时间<150ms
  3. 顶部行情信息适配 - 移动端ProfitDisplay组件布局合理,信息显示清晰,触摸友好
  4. 交易面板触摸优化 - 交易按钮和输入框触摸友好,防误触设计,操作反馈清晰
  5. 绘图工具栏移动端适配 - 绘图工具在移动端可用,工具栏布局紧凑,操作便捷
  6. 性能优化和内存管理 - 移动端内存占用<100MB,图表渲染性能稳定,无卡顿现象

Tasks / Subtasks

  • 移动端图表显示优化 (AC: #1 - 移动端图表显示优化)
    • 分析现有StockChart组件在移动端的显示问题 - 识别字体过小、间距不足、图表元素重叠等问题
    • 优化图表容器响应式布局,适配不同屏幕尺寸 - 使用CSS媒体查询实现不同屏幕尺寸适配
    • 调整K线图元素大小和间距,确保移动端清晰度 - 增大K线宽度、调整间距,确保触摸友好
    • 优化图表字体大小和颜色对比度 - 使用rem单位,确保在不同设备上字体清晰可读
    • 实现移动端专属的图表缩放比例配置 - 为移动端设置不同的默认缩放比例和交互参数
    • 统一移动端检测机制 - 使用src/client/hooks/use-mobile.ts替代重复的检测逻辑
  • 触摸交互优化 (AC: #2 - 触摸交互优化)
    • 集成ECharts移动端手势支持(缩放、平移) - 配置ECharts手势参数,支持双指缩放和平移操作
    • 优化触摸事件处理,防止误操作 - 添加触摸延迟和防抖机制,防止误触
    • 实现双击重置视图功能 - 双击图表区域重置到默认视图状态
    • 添加触摸反馈动画效果 - 为触摸操作添加视觉反馈,提升用户体验
    • 优化长按操作支持 - 实现长按显示详细信息或快捷操作菜单
  • 顶部行情信息适配 (AC: #3 - 顶部行情信息适配)
    • 分析ProfitDisplay组件在移动端的显示问题 - 识别信息显示不全、文字过小、布局拥挤等问题
    • 设计移动端ProfitDisplay组件布局 - 采用响应式设计,优化小屏幕信息显示
    • 实现移动端信息显示优先级调整 - 移动端优先显示关键信息(累计收益率、涨跌幅)
    • 优化字体大小和触摸目标尺寸 - 确保移动端文字清晰可读,触摸目标≥44px
    • 添加移动端专属的交互功能 - 支持点击展开/收起详细信息
  • 交易面板触摸优化 (AC: #4 - 交易面板触摸优化)
    • 优化TradePanel组件移动端布局 - 重新设计布局,确保在小屏幕上操作便捷
    • 增大交易按钮触摸目标尺寸 - 确保所有按钮尺寸≥44px,符合移动端标准
    • 优化输入框触摸交互 - 使用移动端友好的输入控件,支持数字键盘
    • 添加交易确认防误触机制 - 实现二次确认或滑动确认机制
    • 实现触摸反馈效果 - 为按钮和输入框添加触摸状态反馈
  • 绘图工具栏移动端适配 (AC: #5 - 绘图工具栏移动端适配)
    • 分析DrawingToolbar组件移动端适配需求 - 识别工具栏过大、工具选择不便等问题
    • 设计移动端绘图工具栏布局 - 采用紧凑布局,支持滑动显示更多工具
    • 优化绘图工具触摸交互 - 改进绘图工具的触摸精度和操作流畅度
    • 实现绘图工具快速切换 - 提供常用绘图工具的快速切换机制
    • 添加绘图操作撤销功能 - 支持手势或按钮撤销绘图操作
  • 性能优化和内存管理 (AC: #6 - 性能优化和内存管理)
    • 分析移动端性能瓶颈 - 使用性能分析工具识别内存泄漏和渲染性能问题
    • 优化图表数据加载策略 - 实现数据分页加载,避免一次性加载大量数据
    • 实现虚拟滚动和懒加载 - 对长列表使用虚拟滚动,图表数据懒加载
    • 优化内存使用,防止内存泄漏 - 及时销毁不需要的图表实例和事件监听器
    • 添加性能监控和调试工具 - 集成性能监控,便于调试和优化

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组件现状

  • ✅ 已实现多种绘图工具
  • ✅ 支持线条绘制和编辑
  • ❌ 移动端操作不便
  • ❌ 工具栏布局需优化

性能优化策略

  1. 图表数据优化

    • 实现数据分页加载
    • 使用Web Workers处理大数据量
    • 优化ECharts渲染性能
  2. 内存管理

    • 及时销毁不需要的图表实例
    • 使用React.memo优化组件重渲染
    • 实现虚拟化渲染长列表
  3. 网络优化

    • 实现数据缓存机制
    • 使用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

  • 移动端图表显示优化完成 - 已实现统一移动端检测机制,修复了Hook逻辑问题
  • 触摸交互功能实现 - 已集成ECharts手势支持、防误触机制、双击重置、触摸反馈
  • 顶部行情信息适配 - 已实现响应式布局、移动端信息优先级调整、触摸目标优化、展开收起交互
  • 交易面板触摸优化 - 待实现
  • 绘图工具栏移动端适配 - 待实现
  • 性能优化和内存管理 - 待实现

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

  1. 详细技术方案设计
  2. 移动端原型开发
  3. 跨设备测试验证
  4. 性能优化迭代
  5. 用户验收测试