新增功能

This commit is contained in:
Your Name
2026-03-04 15:32:30 +08:00
parent a07e844c47
commit ab77f5488d
2266 changed files with 177942 additions and 3444 deletions
+378
View File
@@ -0,0 +1,378 @@
# 视频通话功能测试指南
## 测试前准备
### 1. 环境要求
- [ ] Web 端使用 HTTPS 或 localhost
- [ ] 小程序已获得摄像头和麦克风权限
- [ ] 网络连接正常
- [ ] 微信开发者工具或真机
### 2. 清除缓存
```
微信开发者工具:
1. 点击顶部菜单"工具"
2. 选择"清除缓存"
3. 勾选"全部清除"
4. 点击"确定"
真机测试:
1. 长按小程序
2. 选择"删除"
3. 重新扫码打开
```
## 测试场景 1:Web 端呼叫小程序端
### 步骤 1:小程序端登录
1. 打开小程序
2. 输入患者ID`2`
3. 点击"登录"按钮
**预期结果:**
- ✅ 显示"登录成功"提示
- ✅ 界面显示"当前登录: patient_2"
- ✅ 输入框提示变为"输入医生ID或完整userId"
**控制台日志:**
```
获取签名成功: { userId: "patient_2", sdkAppId: "1400xxxxxx", ... }
=== 小程序端登录信息 ===
sdkAppId: 1400xxxxxx
userId: patient_2
userSig 长度: xxx
TUICallKit 初始化成功, userId: patient_2
=== 事件监听已设置 ===
```
**如果失败:**
- ❌ 提示"登录失败" → 检查后端接口是否正常
- ❌ 没有"事件监听已设置"日志 → 初始化失败,检查 SDKAppID
### 步骤 2Web 端发起呼叫
1. 打开浏览器,登录医生账号
2. 进入患者管理页面
3. 找到患者ID为 2 的患者
4. 点击"视频通话"按钮
**预期结果:**
- ✅ Web 端弹出通话窗口
- ✅ 显示"等待对方接听..."
- ✅ 浏览器控制台显示"通话已发起"
**浏览器控制台日志:**
```
WebRTC 环境检测: { isHttps: true, ... }
签名获取成功: { doctorUserId: "doctor_1", patientUserId: "patient_2", ... }
TUICallKit init 方法调用完成
=== 发起一对一通话 ===
后端返回的 patientUserId: patient_2
最终使用的 targetUserId: patient_2
通话已发起,目标用户: patient_2
>>> 正在呼叫
```
**如果失败:**
- ❌ 提示"获取签名失败" → 检查后端接口
- ❌ 提示"初始化失败" → 检查 WebRTC 环境
- ❌ 提示"对方不在线" → userId 格式不匹配
### 步骤 3:小程序端接听
**预期结果:**
- ✅ 小程序自动弹出通话界面
- ✅ 显示来电提示音
- ✅ 显示"接听"和"拒绝"按钮
- ✅ 显示来电者信息(医生名称)
**小程序控制台日志:**
```
=== 收到来电 ===
{
inviter: "doctor_1",
inviteeList: ["patient_2"],
callType: 2,
...
}
```
**如果失败:**
- ❌ 小程序没有任何反应 → 检查事件监听是否设置
- ❌ 没有"收到来电"日志 → 检查 userId 格式
- ❌ 小程序闪退 → 检查权限是否授予
### 步骤 4:接听通话
1. 小程序端点击"接听"按钮
**预期结果:**
- ✅ 双方都能看到对方的视频画面
- ✅ 双方都能听到对方的声音
- ✅ 控制按钮正常工作(静音、关闭摄像头等)
**控制台日志:**
```
Web 端:
>>> 通话已接通
小程序端:
=== 通话已接通 ===
```
**如果失败:**
- ❌ 只有声音没有画面 → 检查摄像头权限
- ❌ 只有画面没有声音 → 检查麦克风权限
- ❌ 黑屏 → 检查网络连接
### 步骤 5:挂断通话
1. 任意一方点击"挂断"按钮
**预期结果:**
- ✅ 通话立即结束
- ✅ 双方都返回正常界面
- ✅ 显示"通话已结束"提示
## 测试场景 2:小程序端呼叫 Web 端
### 步骤 1Web 端保持登录
1. 浏览器打开系统
2. 医生账号登录
3. 保持页面打开
**预期结果:**
- ✅ 医生已登录
- ✅ 页面正常显示
### 步骤 2:小程序端发起呼叫
1. 小程序端已登录为 `patient_2`
2. 在输入框输入:`1``doctor_1`
3. 点击"呼叫"按钮
**预期结果:**
- ✅ 显示"正在呼叫..."
- ✅ 小程序显示呼叫界面
**小程序控制台日志:**
```
准备呼叫用户: doctor_1
发起通话成功, 目标用户: doctor_1
```
**如果失败:**
- ❌ 提示"发起通话失败" → 检查 userId 格式
- ❌ 提示"对方不在线" → Web 端未登录或 userId 不匹配
### 步骤 3Web 端接听
**预期结果:**
- ✅ Web 端自动弹出通话窗口
- ✅ 显示来电提示
- ✅ 显示"接听"和"拒绝"按钮
**浏览器控制台日志:**
```
>>> 收到来电
inviter: patient_2
```
**如果失败:**
- ❌ Web 端没有反应 → 检查是否已登录
- ❌ 提示"初始化失败" → 刷新页面重新登录
### 步骤 4:接听并测试
同场景 1 的步骤 4 和步骤 5
## 测试场景 3:拒绝通话
### 测试拒绝功能
1. 按照场景 1 或场景 2 发起通话
2. 接收方点击"拒绝"按钮
**预期结果:**
- ✅ 通话立即结束
- ✅ 发起方显示"对方已拒绝通话"
- ✅ 双方返回正常界面
## 测试场景 4:超时未接听
### 测试超时机制
1. 按照场景 1 或场景 2 发起通话
2. 接收方不做任何操作,等待 30 秒
**预期结果:**
- ✅ 30 秒后自动挂断
- ✅ 发起方显示"对方未接听"
- ✅ 双方返回正常界面
## 测试场景 5:网络中断
### 测试网络恢复
1. 正常接通通话
2. 关闭一方的网络连接
3. 等待 5-10 秒
4. 恢复网络连接
**预期结果:**
- ✅ 网络中断时显示"网络连接中断"
- ✅ 网络恢复后自动重连
- ✅ 如果无法重连,自动挂断
## 常见问题排查
### 问题 1:小程序端无法接听
**症状:** Web 端发起呼叫后,小程序端没有任何反应
**排查步骤:**
1. 检查小程序端是否已登录
```
界面应显示:"当前登录: patient_2"
```
2. 检查控制台是否有"事件监听已设置"日志
```
如果没有,说明初始化失败
```
3. 检查 userId 格式是否一致
```
Web 端:targetUserId: patient_2
小程序端:userId: patient_2
必须完全一致!
```
4. 检查 SDKAppID 是否一致
```
Web 端和小程序端必须使用同一个 SDKAppID
```
5. 检查小程序是否在前台
```
如果切换到后台,可能无法接收来电
```
**解决方案:**
- 重新登录小程序
- 确保 userId 格式一致
- 确保小程序在前台运行
### 问题 2:提示"对方不在线"
**症状:** 发起呼叫时提示"对方不在线"(错误代码 60011
**排查步骤:**
1. 确认对方已登录
2. 检查 userId 格式是否匹配
3. 检查 SDKAppID 是否一致
4. 查看后端日志确认账号已导入
**解决方案:**
- 对方重新登录
- 统一 userId 格式
- 检查后端配置
### 问题 3:无法访问摄像头/麦克风
**症状:** 黑屏或无声音
**排查步骤:**
1. 检查浏览器权限设置
2. 检查小程序权限设置
3. 检查设备是否被其他应用占用
**解决方案:**
- 浏览器:地址栏 → 权限 → 允许摄像头和麦克风
- 小程序:设置 → 权限管理 → 允许摄像头和麦克风
- 关闭其他占用设备的应用
### 问题 4:通话中断或卡顿
**症状:** 通话过程中画面卡顿或中断
**排查步骤:**
1. 检查网络连接速度
2. 检查 CPU 使用率
3. 检查是否有其他大流量应用
**解决方案:**
- 切换到更稳定的网络
- 关闭其他占用资源的应用
- 降低视频质量设置
## 测试检查清单
### 功能测试
- [ ] Web 端可以呼叫小程序端
- [ ] 小程序端可以呼叫 Web 端
- [ ] 可以正常接听通话
- [ ] 可以拒绝通话
- [ ] 可以挂断通话
- [ ] 视频画面正常显示
- [ ] 音频正常传输
- [ ] 静音功能正常
- [ ] 关闭摄像头功能正常
- [ ] 切换摄像头功能正常(移动端)
### 异常测试
- [ ] 网络中断后能正常恢复
- [ ] 超时未接听能正常处理
- [ ] 对方拒绝能正常提示
- [ ] 对方不在线能正常提示
- [ ] 权限未授予能正常提示
### 性能测试
- [ ] 通话延迟小于 300ms
- [ ] 画面流畅不卡顿
- [ ] 音频清晰无杂音
- [ ] CPU 使用率正常
- [ ] 内存使用正常
## 测试报告模板
```
测试日期:____年____月____日
测试人员:__________
测试环境:
- Web 端浏览器:__________
- 小程序版本:__________
- 网络环境:__________
测试结果:
场景 1(Web → 小程序):□ 通过 □ 失败
场景 2(小程序 → Web):□ 通过 □ 失败
场景 3(拒绝通话): □ 通过 □ 失败
场景 4(超时未接听): □ 通过 □ 失败
场景 5(网络中断): □ 通过 □ 失败
问题记录:
1. __________
2. __________
3. __________
备注:
__________
```
## 成功标准
所有测试场景都应该:
- ✅ 能够正常发起通话
- ✅ 能够正常接听通话
- ✅ 视频和音频都正常
- ✅ 控制按钮都能正常工作
- ✅ 异常情况能正常处理
- ✅ 用户体验流畅
---
**最后更新:** 2024-03-04
**版本:** 1.0