浏览代码

📝 docs(architecture): 添加移动端应用相关文档

- 更新版本历史,添加2.6版本记录
- 添加移动端应用特有API端点信息,包括课堂系统实时通信、股票训练系统实时数据等
- 完善移动端组件架构,新增Classroom、Exam、Stock等组件目录
- 添加移动端应用部署要求,包括WebSocket支持、音视频服务等
- 增加移动端应用监控指标,包括实时通信监控、音视频质量监控等
- 完善移动端应用安全集成信息,包括实时通信安全、数据加密等

📝 docs(component): 记录移动端组件结构和技术栈

- 在source-tree中添加mobile目录结构,包含课堂、考试、股票相关组件
- 更新tech-stack文档,添加Socket.IO、阿里云RTC SDK、ECharts等移动端相关技术
- 详细记录移动端页面组件,包括ClassroomPage、StockHomePage等15+个路由页面
- 添加移动端特有hooks和布局组件说明

📝 docs(test): 添加移动端应用测试策略

- 新增移动端实时通信测试要求,包括Socket.IO连接测试、消息传递测试等
- 添加股票训练系统测试内容,包括实时数据推送测试、交易执行测试等
- 完善音视频通信测试策略,包括RTC token生成测试、网络适应性测试等
- 增加移动端UI/UX测试要求,包括响应式设计测试、触摸交互测试等
- 更新测试覆盖率要求,移动端实时通信需达到85%单元测试覆盖率
yourname 2 月之前
父节点
当前提交
4c422a720b

+ 81 - 0
docs/architecture/api-design-integration.md

@@ -5,6 +5,7 @@
 |------|------|------|------|
 | 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
 | 2.5 | 2025-09-24 | 更新技术栈信息,修正数据库类型 | Winston |
+| 2.6 | 2025-09-27 | 添加移动端应用API端点信息 | Winston |
 
 ## API集成策略
 - **API集成策略**: 保持现有RESTful API设计,增强OpenAPI文档
@@ -171,3 +172,83 @@ security:
   }
 }
 ```
+
+## 移动端应用特有API端点
+
+**课堂系统实时通信API**:
+- **协议**: WebSocket (Socket.IO)
+- **端点**: Socket.IO连接端点
+- **用途**: 实时课堂消息传递、学生举手、老师控制等
+- **事件类型**:
+  - `join_classroom`: 加入课堂
+  - `leave_classroom`: 离开课堂
+  - `send_message`: 发送消息
+  - `hand_up`: 学生举手
+  - `teacher_control`: 老师课堂控制
+
+**股票训练系统实时数据API**:
+- **协议**: WebSocket (Socket.IO)
+- **端点**: Socket.IO连接端点
+- **用途**: 实时股票数据推送、交易信息、K线图数据
+- **事件类型**:
+  - `subscribe_stock`: 订阅股票数据
+  - `unsubscribe_stock`: 取消订阅
+  - `stock_data`: 股票实时数据推送
+  - `trade_execution`: 交易执行结果
+
+**阿里云RTC音视频API**:
+- **协议**: RESTful API + WebRTC
+- **端点**: `/api/v1/rtc/token`
+- **用途**: 生成RTC音视频通信token
+- **请求示例**:
+```json
+{
+  "channelName": "classroom-123",
+  "userId": "user-456",
+  "role": "teacher"
+}
+```
+
+**响应示例**:
+```json
+{
+  "token": "rtc-token-string",
+  "appId": "your-app-id",
+  "channelName": "classroom-123"
+}
+```
+
+**视频回放API**:
+- **方法**: GET
+- **端点**: `/api/v1/videos/{id}/playback`
+- **用途**: 获取视频回放信息和播放地址
+- **响应示例**:
+```json
+{
+  "video": {
+    "id": 123,
+    "title": "股票分析课程",
+    "duration": 3600,
+    "playbackUrl": "https://cdn.example.com/videos/123.mp4",
+    "thumbnail": "https://cdn.example.com/thumbnails/123.jpg"
+  }
+}
+```
+
+## API安全集成
+
+**移动端API安全要求**:
+- **JWT认证**: 所有移动端API必须使用JWT Bearer Token认证
+- **权限控制**: 基于用户角色(TEACHER, STUDENT, TRAINEE)进行权限验证
+- **实时通信安全**: Socket.IO连接需要验证用户身份和权限
+- **音视频安全**: RTC token生成需要验证用户身份和课堂权限
+- **数据加密**: 敏感数据传输使用TLS加密
+
+**移动端API错误处理**:
+```json
+{
+  "code": "CLASSROOM_NOT_FOUND",
+  "message": "课堂不存在或已结束",
+  "timestamp": "2025-09-27T10:30:00.000Z"
+}
+```

+ 1 - 0
docs/architecture/appendix.md

@@ -5,6 +5,7 @@
 |------|------|------|------|
 | 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
 | 2.5 | 2025-09-24 | 更新技术栈信息,修正数据库类型 | Winston |
+| 2.6 | 2025-09-27 | 添加移动端应用架构信息 | Winston |
 
 ## 技术决策依据
 - **选择Vitest而不是Jest**: 基于对TypeORM装饰器的更好支持、更快的执行速度和现代化的开发体验

+ 93 - 12
docs/architecture/component-architecture.md

@@ -5,6 +5,7 @@
 |------|------|------|------|
 | 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
 | 2.5 | 2025-09-24 | 更新技术栈信息,修正数据库类型 | Winston |
+| 2.6 | 2025-09-27 | 添加移动端应用组件架构信息 | Winston |
 
 ### 前端组件架构
 
@@ -59,6 +60,46 @@ src/client/
 │   │   └── WordPreview.tsx       # Word预览页面
 │   ├── routes.tsx        # 路由配置 (18个路由)
 │   └── index.tsx         # Home应用入口
+├── mobile/               # 移动端应用 (股票训练系统)
+│   ├── components/       # 移动端专用组件
+│   │   ├── Classroom/           # 课堂相关组件
+│   │   │   ├── ClassroomLayout.tsx              # 课堂布局
+│   │   │   ├── ClassroomProvider.tsx            # 课堂状态管理
+│   │   │   ├── TeacherClassControlButton.tsx    # 老师课堂控制
+│   │   │   ├── StudentHandUpButton.tsx          # 学生举手
+│   │   │   ├── MessageList.tsx                  # 消息列表
+│   │   │   ├── MessageBubble.tsx                # 消息气泡
+│   │   │   └── useClassroom.ts                  # 课堂Hook
+│   │   ├── Exam/                # 考试相关组件
+│   │   │   ├── ExamIndex.tsx                    # 考试首页
+│   │   │   ├── ExamAdmin.tsx                    # 考试管理
+│   │   │   ├── ExamCard.tsx                     # 考试卡片
+│   │   │   └── hooks/useSocketClient.ts         # Socket客户端Hook
+│   │   ├── stock/               # 股票相关组件
+│   │   │   ├── stock_main.tsx                   # 股票主组件
+│   │   │   └── components/stock-chart/          # 股票图表组件
+│   │   │       ├── StockChart.tsx               # 股票图表
+│   │   │       ├── TradePanel.tsx               # 交易面板
+│   │   │       ├── DrawingToolbar.tsx           # 绘图工具栏
+│   │   │       └── hooks/useStockSocketClient.ts # 股票Socket Hook
+│   │   ├── ErrorPage.tsx        # 错误页面
+│   │   ├── NotFoundPage.tsx     # 404页面
+│   │   └── ProtectedRoute.tsx   # 路由保护组件
+│   ├── hooks/            # 移动端Hooks
+│   │   └── AuthProvider.tsx     # 认证状态管理
+│   ├── layouts/          # 布局组件
+│   │   └── MainLayout.tsx       # 主布局
+│   ├── pages/            # 页面组件
+│   │   ├── ClassroomPage.tsx    # 课堂页面
+│   │   ├── StockHomePage.tsx    # 股票首页
+│   │   ├── XunlianPage.tsx      # 训练页面
+│   │   ├── AuthPage.tsx         # 认证页面
+│   │   ├── MemberPage.tsx       # 会员页面
+│   │   ├── VideoReplayPage.tsx  # 视频回放页面
+│   │   ├── VideoPlayerPage.tsx  # 视频播放页面
+│   │   └── WechatCallbackPage.tsx # 微信回调页面
+│   ├── routes.tsx        # 路由配置 (15+个路由)
+│   └── index.tsx         # 移动端应用入口
 ├── components/           # 共享UI组件
 │   └── ui/              # shadcn/ui组件库(50+组件)
 │       ├── button.tsx   # 按钮组件
@@ -80,22 +121,25 @@ src/client/
 - **构建工具**: Vite 7.0.0
 - **样式**: Tailwind CSS 4.1.11
 - **HTTP客户端**: 基于Hono Client的封装 + axios适配器
+- **实时通信**: Socket.IO客户端 (课堂和股票实时数据)
+- **音视频**: 阿里云RTC SDK (实时音视频通信)
+- **图表**: ECharts (股票图表展示)
+- **日期处理**: dayjs (中文日期格式化)
 
 ### 后端组件架构
 
 **实际后端项目结构**:
 ```text
 src/server/
-├── api/                    # API路由层
+├── api/                    # API路由层 (10+业务模块路由)
 │   ├── auth/              # 认证相关路由
-│   │   ├── login.ts       # 登录路由
+│   │   ├── login/password.ts       # 密码登录路由
 │   │   ├── logout.ts      # 登出路由
-│   │   └── register.ts    # 注册路由
-│   ├── users/             # 用户管理路由
-│   │   ├── index.ts       # 用户列表路由
-│   │   ├── [id].ts        # 用户详情路由
-│   │   └── __tests__/     # 路由测试
-│   ├── roles/             # 角色管理路由
+│   │   ├── register/create.ts    # 注册路由
+│   │   ├── me/get.ts      # 获取当前用户信息
+│   │   └── sso-verify.ts  # SSO验证路由
+│   ├── users/             # 用户管理路由 (通用CRUD)
+│   ├── roles/             # 角色管理路由 (通用CRUD)
 │   ├── files/              # 文件管理路由
 │   │   ├── multipart-policy/    # 多部分上传策略
 │   │   ├── multipart-complete/  # 完成多部分上传
@@ -125,8 +169,8 @@ src/server/
 │   ├── logger.ts          # 日志工具
 │   └── __tests__/         # 工具测试
 ├── middleware/            # 中间件层
-│   ├── auth.ts           # 认证中间件
-│   └── validation.ts     # 验证中间件
+│   ├── auth.middleware.ts           # 认证中间件
+│   └── permission.middleware.ts     # 权限中间件
 ├── types/                # 类型定义
 ├── data-source.ts        # 数据库连接配置
 └── index.ts              # 服务器入口
@@ -139,6 +183,9 @@ src/server/
 - **认证**: JWT Bearer Token
 - **API文档**: @hono/zod-openapi + Swagger UI
 - **测试**: Vitest + hono/testing
+- **实时通信**: Socket.IO服务器端 (课堂和股票实时数据)
+- **对象存储**: MinIO (文件存储服务)
+- **缓存**: Redis 7.0.4 (会话缓存和临时数据)
 
 ## 现有组件优化
 **通用CRUD服务**:
@@ -162,10 +209,30 @@ src/server/
   - 文件删除(同时删除MinIO对象和数据库记录)
 - **优化重点**: 增强大文件处理能力,优化上传性能
 
+**移动端实时通信组件**:
+- **责任**: 提供课堂系统和股票训练系统的实时通信功能
+- **现状**: 已实现完整功能,包含Socket.IO客户端和服务器端
+- **核心功能**:
+  - 课堂实时消息传递(文字、图片、文件)
+  - 股票实时数据推送(价格、K线图、交易信息)
+  - 阿里云RTC音视频通信(实时音视频课堂)
+  - 考试系统实时监控和交卷
+  - 视频回放和播放功能
+- **优化重点**: 优化实时数据推送性能,增强音视频质量
+
 ## 组件交互
 ```mermaid
 graph TD
-    A[前端React组件] --> B[Hono API路由]
+    subgraph "前端应用层"
+        A1[管理后台React组件]
+        A2[用户前台React组件]
+        A3[移动端React组件]
+    end
+
+    A1 --> B[Hono API路由]
+    A2 --> B
+    A3 --> B
+
     B --> C[通用CRUD服务]
     C --> D[TypeORM实体]
     C --> E[Zod验证]
@@ -175,10 +242,24 @@ graph TD
     H --> I[MinIO对象存储]
     H --> J[文件实体管理]
 
-    style A fill:#e1f5fe
+    subgraph "实时通信层"
+        K[移动端Socket.IO客户端] --> L[Socket.IO服务器]
+        L --> M[实时数据处理]
+        M --> N[Redis缓存]
+        L --> O[阿里云RTC服务]
+    end
+
+    A3 --> K
+    L --> B
+
+    style A1 fill:#e1f5fe
+    style A2 fill:#e1f5fe
+    style A3 fill:#e1f5fe
     style B fill:#f3e5f5
     style C fill:#fff3e0
     style D fill:#e8f5e8
     style H fill:#fff0f5
     style I fill:#f0fff0
+    style K fill:#fff0f5
+    style L fill:#f3e5f5
 ```

+ 8 - 0
docs/architecture/data-model-schema-changes.md

@@ -5,6 +5,7 @@
 |------|------|------|------|
 | 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
 | 2.5 | 2025-09-24 | 更新技术栈信息,修正数据库类型 | Winston |
+| 2.6 | 2025-09-27 | 添加移动端应用数据模型信息 | Winston |
 
 ## 现有数据模型状态
 **用户模型**:
@@ -32,6 +33,13 @@
   - `uploadTime`: Date - 上传时间
 - **关系**: 与User实体建立多对一关系映射
 
+**移动端应用数据模型**:
+- **课堂系统模型**: 包含课堂、学生、老师、消息等实体
+- **股票训练模型**: 包含股票数据、交易记录、训练结果等实体
+- **考试系统模型**: 包含考试、题目、答卷、成绩等实体
+- **音视频模型**: 包含音视频通话记录、回放文件等实体
+- **实时数据模型**: 支持Socket.IO实时通信的数据结构
+
 **优化重点**: 保持现有数据模型不变,新增文件管理功能,优化查询性能和验证逻辑
 
 ### TypeScript接口定义

+ 11 - 0
docs/architecture/infrastructure-deployment.md

@@ -5,16 +5,19 @@
 |------|------|------|------|
 | 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
 | 2.5 | 2025-09-24 | 更新技术栈信息,修正数据库类型 | Winston |
+| 2.6 | 2025-09-27 | 添加移动端应用基础设施和部署要求 | Winston |
 
 ## 现有基础设施
 - **当前部署**: Docker Compose本地开发,Node.js生产部署
 - **基础设施工具**: Docker, Docker Compose, Node.js运行时
 - **环境**: 开发、生产环境配置
+- **移动端应用支持**: 支持移动端实时通信、音视频服务、股票数据推送
 
 ## 增强部署策略
 - **部署方法**: 使用现有Docker Compose和Node.js部署流程
 - **基础设施变更**: 添加数据库定时备份系统
 - **流水线集成**: 集成测试到现有CI/CD流程
+- **移动端部署要求**: 支持WebSocket连接、音视频服务、实时数据推送
 
 ## 数据库备份策略
 - **备份方案**: 使用MySQL内置工具进行定时备份
@@ -27,3 +30,11 @@
 - **数据库恢复**: 使用最新备份文件进行快速恢复
 - **风险缓解**: 蓝绿部署或金丝雀发布(可选)
 - **监控**: 添加应用健康检查、性能监控和备份状态监控
+
+## 移动端应用部署要求
+- **WebSocket支持**: 确保负载均衡器支持WebSocket长连接
+- **音视频服务**: 阿里云RTC服务集成,确保音视频传输质量
+- **实时数据推送**: 支持高并发实时数据推送,确保股票数据实时性
+- **移动端性能**: 优化移动端加载速度,支持离线功能
+- **CDN加速**: 静态资源使用CDN加速,提升移动端访问速度
+- **移动端适配**: 支持不同移动设备屏幕尺寸和网络环境

+ 16 - 1
docs/architecture/operations-monitoring.md

@@ -5,6 +5,7 @@
 |------|------|------|------|
 | 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
 | 2.5 | 2025-09-24 | 更新技术栈信息,修正数据库类型 | Winston |
+| 2.6 | 2025-09-27 | 添加移动端应用运营和监控要求 | Winston |
 
 ## 监控策略
 
@@ -14,6 +15,13 @@
 - **用户行为**: 跟踪关键用户交互和转化漏斗
 - **性能指标**: 页面加载时间,API响应时间监控
 
+**移动端应用监控**:
+- **实时通信监控**: WebSocket连接状态、消息延迟、断线重连成功率
+- **音视频质量监控**: 音视频延迟、丢包率、连接成功率
+- **股票数据推送监控**: 数据推送频率、延迟、准确性
+- **移动端性能监控**: 页面加载时间、内存使用、电池消耗
+- **移动端用户体验**: 触摸响应、手势识别、离线功能可用性
+
 **后端监控**:
 - **应用性能**: 请求率、错误率、响应时间(p95)
 - **数据库性能**: 查询执行时间、连接池使用率
@@ -76,4 +84,11 @@ interface ApiError {
 - **用户活跃度**: 日活用户(DAU)、月活用户(MAU)、用户留存率
 - **API使用统计**: 各端点调用频率、成功率、平均响应时间
 - **功能使用**: 关键功能使用率、用户行为漏斗分析
-- **业务健康度**: 订单成功率、支付成功率、用户满意度
+- **业务健康度**: 订单成功率、支付成功率、用户满意度
+
+### 移动端应用业务监控指标
+- **课堂活跃度**: 同时在线课堂数、平均课堂时长、学生参与率
+- **股票训练活跃度**: 同时在线训练用户数、平均训练时长、交易成功率
+- **音视频通话质量**: 平均通话时长、音视频质量评分、用户满意度
+- **移动端用户行为**: 设备类型分布、网络环境分布、使用时段分析
+- **实时数据质量**: 股票数据推送成功率、数据延迟统计、数据准确性

+ 8 - 0
docs/architecture/security-integration.md

@@ -5,6 +5,7 @@
 |------|------|------|------|
 | 2.4 | 2025-09-20 | 与主架构文档版本一致 | Winston |
 | 2.5 | 2025-09-24 | 更新技术栈信息,修正数据库类型 | Winston |
+| 2.6 | 2025-09-27 | 添加移动端应用安全集成信息 | Winston |
 
 ## 现有安全措施
 - **认证**: JWT Bearer Token实现完整
@@ -43,6 +44,12 @@
 - **备份加密**: 数据库备份文件AES-256加密
 - **访问审计**: 所有数据访问操作记录审计日志
 
+**移动端应用安全**:
+- **实时通信安全**: Socket.IO连接需要JWT认证,验证用户身份和权限
+- **音视频安全**: RTC token生成需要验证用户身份和课堂权限,防止未授权访问
+- **数据加密**: 敏感数据传输使用TLS加密,本地存储数据加密保护
+- **移动端特有风险**: 防止本地数据泄露、逆向工程、API密钥保护
+
 **基础设施安全**:
 - **网络隔离**: 数据库仅允许应用服务器访问
 - **防火墙规则**: 仅开放必要端口(8080, 3306, 6379, 9000)
@@ -52,6 +59,7 @@
 ## 安全测试
 - **现有安全测试**: 已集成安全测试到测试策略中
 - **安全测试要求**: 包括输入验证测试、认证测试、数据保护测试
+- **移动端安全测试**: 实时通信安全测试、音视频权限测试、移动端特有安全风险测试
 - **渗透测试**: 计划季度安全审计,使用OWASP ZAP等工具
 
 ### 安全监控和响应

+ 40 - 0
docs/architecture/source-tree.md

@@ -33,6 +33,46 @@ d8d-starter/
 │   │   │   ├── pages/          # 页面组件 (14个功能页面)
 │   │   │   ├── routes.tsx      # 路由配置 (18个路由)
 │   │   │   └── index.tsx       # Home应用入口
+│   │   ├── mobile/             # 移动端应用 (股票训练系统)
+│   │   │   ├── components/     # 移动端专用组件
+│   │   │   │   ├── Classroom/           # 课堂相关组件
+│   │   │   │   │   ├── ClassroomLayout.tsx              # 课堂布局
+│   │   │   │   │   ├── ClassroomProvider.tsx            # 课堂状态管理
+│   │   │   │   │   ├── TeacherClassControlButton.tsx    # 老师课堂控制
+│   │   │   │   │   ├── StudentHandUpButton.tsx          # 学生举手
+│   │   │   │   │   ├── MessageList.tsx                  # 消息列表
+│   │   │   │   │   ├── MessageBubble.tsx                # 消息气泡
+│   │   │   │   │   └── useClassroom.ts                  # 课堂Hook
+│   │   │   │   ├── Exam/                # 考试相关组件
+│   │   │   │   │   ├── ExamIndex.tsx                    # 考试首页
+│   │   │   │   │   ├── ExamAdmin.tsx                    # 考试管理
+│   │   │   │   │   ├── ExamCard.tsx                     # 考试卡片
+│   │   │   │   │   └── hooks/useSocketClient.ts         # Socket客户端Hook
+│   │   │   │   ├── stock/               # 股票相关组件
+│   │   │   │   │   ├── stock_main.tsx                   # 股票主组件
+│   │   │   │   │   └── components/stock-chart/          # 股票图表组件
+│   │   │   │   │       ├── StockChart.tsx               # 股票图表
+│   │   │   │   │       ├── TradePanel.tsx               # 交易面板
+│   │   │   │   │       ├── DrawingToolbar.tsx           # 绘图工具栏
+│   │   │   │   │       └── hooks/useStockSocketClient.ts # 股票Socket Hook
+│   │   │   │   ├── ErrorPage.tsx        # 错误页面
+│   │   │   │   ├── NotFoundPage.tsx     # 404页面
+│   │   │   │   └── ProtectedRoute.tsx   # 路由保护组件
+│   │   │   ├── hooks/            # 移动端Hooks
+│   │   │   │   └── AuthProvider.tsx     # 认证状态管理
+│   │   │   ├── layouts/          # 布局组件
+│   │   │   │   └── MainLayout.tsx       # 主布局
+│   │   │   ├── pages/            # 页面组件
+│   │   │   │   ├── ClassroomPage.tsx    # 课堂页面
+│   │   │   │   ├── StockHomePage.tsx    # 股票首页
+│   │   │   │   ├── XunlianPage.tsx      # 训练页面
+│   │   │   │   ├── AuthPage.tsx         # 认证页面
+│   │   │   │   ├── MemberPage.tsx       # 会员页面
+│   │   │   │   ├── VideoReplayPage.tsx  # 视频回放页面
+│   │   │   │   ├── VideoPlayerPage.tsx  # 视频播放页面
+│   │   │   │   └── WechatCallbackPage.tsx # 微信回调页面
+│   │   │   ├── routes.tsx        # 路由配置 (15+个路由)
+│   │   │   └── index.tsx         # 移动端应用入口
 │   │   ├── components/         # 共享UI组件
 │   │   │   └── ui/            # shadcn/ui组件库(50+组件)
 │   │   │       ├── button.tsx   # 按钮组件

+ 5 - 0
docs/architecture/tech-stack.md

@@ -18,6 +18,11 @@
 | 样式 | Tailwind CSS | 4.1.11 | 原子化CSS框架 | 设计一致性 |
 | 状态管理 | React Query | 5.83.0 | 服务端状态管理 | 数据同步 |
 | 认证 | JWT | 9.0.2 | 用户认证和安全 | Bearer Token |
+| 实时通信 | Socket.IO | 4.x | 课堂和股票实时数据推送 | WebSocket通信 |
+| 音视频 | 阿里云RTC SDK | latest | 实时音视频课堂通信 | 音视频流处理 |
+| 图表 | ECharts | 5.x | 股票图表展示 | 数据可视化 |
+| 缓存 | Redis | 7.0.4 | 会话缓存和临时数据 | ioredis客户端 |
+| 对象存储 | MinIO | latest | 文件存储服务 | 支持分段上传 |
 
 ## 新技术添加
 | 技术 | 版本 | 用途 | Rationale | 集成方法 |

+ 122 - 0
docs/architecture/testing-strategy.md

@@ -5,6 +5,7 @@
 |------|------|------|------|
 | 2.4 | 2025-09-20 | 更新测试策略与主架构文档版本一致 | Winston |
 | 2.5 | 2025-09-24 | 更新数据库配置,修正数据库类型 | Winston |
+| 2.6 | 2025-09-27 | 添加移动端应用测试策略 | Winston |
 
 ## 概述
 
@@ -107,6 +108,9 @@ jobs:
 - **数据库操作模块**: 必须达到85%单元测试覆盖率
 - **核心业务逻辑**: 必须达到80%集成测试覆盖率
 - **用户管理功能**: 必须100% E2E测试覆盖
+- **移动端实时通信**: 必须达到85%单元测试覆盖率
+- **股票训练系统**: 必须达到80%集成测试覆盖率
+- **音视频通信**: 必须达到75%集成测试覆盖率
 
 ## 测试数据管理
 
@@ -186,6 +190,45 @@ pnpm test:coverage
 4. **重新测试** → 修复后重新运行测试
 5. **文档更新** → 更新测试策略和案例
 
+## 移动端应用测试策略
+
+### 移动端特有测试要求
+
+**实时通信测试**:
+- **Socket.IO连接测试**: 验证WebSocket连接建立和断开
+- **消息传递测试**: 测试实时消息发送和接收的正确性
+- **事件处理测试**: 验证各种Socket事件的处理逻辑
+- **并发测试**: 测试多用户同时连接和交互的场景
+- **断线重连测试**: 验证网络异常后的自动重连机制
+
+**股票训练系统测试**:
+- **实时数据推送测试**: 验证股票数据的实时更新和推送
+- **交易执行测试**: 测试股票买卖操作的完整流程
+- **K线图数据测试**: 验证图表数据的正确性和实时性
+- **性能测试**: 测试大量实时数据推送的性能表现
+- **数据一致性测试**: 确保前端显示与后端数据的一致性
+
+**音视频通信测试**:
+- **RTC token生成测试**: 验证阿里云RTC token生成的安全性
+- **音视频连接测试**: 测试音视频通话的连接建立和断开
+- **媒体流测试**: 验证音视频流的传输质量
+- **权限控制测试**: 测试不同角色用户的音视频权限
+- **网络适应性测试**: 测试不同网络条件下的音视频质量
+
+**移动端UI/UX测试**:
+- **响应式设计测试**: 验证在不同屏幕尺寸下的显示效果
+- **触摸交互测试**: 测试触摸操作的响应性和准确性
+- **手势操作测试**: 验证各种手势操作的识别和处理
+- **离线功能测试**: 测试网络异常时的降级处理
+- **性能优化测试**: 验证移动端性能优化措施的有效性
+
+### 移动端测试工具
+- **Playwright Mobile**: 移动端E2E测试
+- **Socket.IO Client Testing**: Socket.IO客户端测试工具
+- **WebRTC Testing**: WebRTC连接和媒体流测试
+- **React Native Testing Library**: React组件测试
+- **Performance Monitoring**: 移动端性能监控工具
+
 ## 安全测试策略
 
 ### 安全测试要求
@@ -194,6 +237,12 @@ pnpm test:coverage
 - **数据保护**: 测试敏感数据泄露风险
 - **错误处理**: 测试错误信息是否泄露敏感数据
 
+### 移动端安全测试要求
+- **实时通信安全**: 测试Socket.IO连接的身份验证和权限控制
+- **音视频安全**: 测试RTC token的安全性和权限验证
+- **数据加密**: 测试敏感数据传输的加密保护
+- **移动端安全**: 测试移动端特有的安全风险(如本地存储安全)
+
 ### 安全测试工具
 - **OWASP ZAP**: 自动化安全扫描
 - **npm audit**: 依赖漏洞检查
@@ -207,10 +256,21 @@ pnpm test:coverage
 - **并发用户数**: 支持100+并发用户
 - **资源使用**: CPU < 70%, 内存 < 80%
 
+### 移动端性能测试要求
+- **实时通信延迟**: < 200ms (p95) 消息传递延迟
+- **股票数据推送频率**: 支持每秒10+次数据更新
+- **音视频延迟**: < 500ms (p95) 音视频传输延迟
+- **移动端渲染性能**: 页面加载时间 < 2秒
+- **移动端内存使用**: < 100MB 内存占用
+- **移动端电池消耗**: 连续使用4小时以上
+
 ### 性能测试工具
 - **k6**: 负载测试
 - **autocannon**: API性能测试
 - **Playwright**: E2E性能监控
+- **Socket.IO Performance Testing**: 实时通信性能测试
+- **WebRTC Performance Testing**: 音视频性能测试
+- **Mobile Performance Monitoring**: 移动端性能监控
 
 ## 测试文档标准
 
@@ -243,6 +303,68 @@ describe('UserService', () => {
     });
   });
 });
+
+// 移动端实时通信测试示例
+describe('ClassroomSocketService', () => {
+  describe('joinClassroom()', () => {
+    it('应该成功加入课堂并接收欢迎消息', async () => {
+      // Arrange
+      const classroomId = 'classroom-123';
+      const userId = 'user-456';
+
+      // Act
+      const socket = await classroomService.joinClassroom(classroomId, userId);
+
+      // Assert
+      await expect(socket).toReceiveMessage('welcome');
+      expect(socket.connected).toBe(true);
+    });
+
+    it('应该处理网络异常并自动重连', async () => {
+      // Arrange
+      const socket = await classroomService.joinClassroom('classroom-123', 'user-456');
+
+      // Act
+      socket.disconnect(); // 模拟网络断开
+      await waitForReconnection();
+
+      // Assert
+      expect(socket.connected).toBe(true);
+    });
+  });
+});
+
+// 股票训练系统测试示例
+describe('StockTrainingService', () => {
+  describe('subscribeStockData()', () => {
+    it('应该订阅股票数据并接收实时更新', async () => {
+      // Arrange
+      const stockCode = 'AAPL';
+
+      // Act
+      const subscription = await stockService.subscribeStockData(stockCode);
+
+      // Assert
+      await expect(subscription).toReceiveDataWithin(1000); // 1秒内收到数据
+      expect(subscription.isActive).toBe(true);
+    });
+
+    it('应该处理高频数据推送的性能', async () => {
+      // Arrange
+      const stockCodes = ['AAPL', 'GOOGL', 'TSLA', 'MSFT'];
+
+      // Act
+      const startTime = Date.now();
+      const subscriptions = await Promise.all(
+        stockCodes.map(code => stockService.subscribeStockData(code))
+      );
+
+      // Assert
+      const duration = Date.now() - startTime;
+      expect(duration).toBeLessThan(500); // 500ms内完成所有订阅
+    });
+  });
+});
 ```
 
 ### 测试命名约定