# 最终测试清单 ## ✅ 代码已完成 所有修复和优化都已完成: - ✅ 移除了不支持的 API - ✅ 添加了详细日志 - ✅ 添加了状态监听 - ✅ 添加了 userId 格式验证 - ✅ 优化了组件结构 ## 📋 测试前准备 ### 1. 清除缓存 ``` 微信开发者工具 → 工具 → 清除缓存 → 全部清除 ``` ### 2. 重新编译 ``` 点击"编译"按钮,确认没有错误 ``` ### 3. 检查后端接口 确保后端返回正确的 userId 格式(字符串) ## 🧪 测试步骤 ### 测试 1:小程序端登录 **操作:** 1. 输入患者ID:`2` 2. 点击"登录" **预期日志:** ``` === 页面已挂载 === === 已设置详细日志级别 === 获取签名成功: { userId: "patient_2", ... } === 小程序端登录信息 === sdkAppId: 1400xxxxxx userId: patient_2 userId 类型: string userId 长度: 9 userSig 长度: xxx TUICallKit 初始化成功, userId: patient_2 === TUICallKit 初始化完成,等待来电 === === TUICallKit 组件已挂载 === 当前通话状态: IDLE 完整状态信息: { ... } ``` **预期界面:** ``` 当前登录: patient_2 通话状态: IDLE ``` **检查点:** - [ ] userId 类型是 `string` - [ ] userId 值是 `patient_2`(包含下划线) - [ ] userId 长度是 9 - [ ] 没有警告信息 ### 测试 2:Web 端发起呼叫 **操作:** 1. Web 端打开患者详情页 2. 点击"视频通话"按钮 **预期日志(Web 端):** ``` === 发起一对一通话 === 后端返回的 patientUserId: patient_2 最终使用的 targetUserId: patient_2 通话已发起,目标用户: patient_2 ``` **预期日志(小程序端):** ``` [tuikit engine wasm] onNewMessageReceived === 通话状态变化 === calling 可能的状态值: idle, calling, connected === 通话角色 === callee === 通话类型 === 1 或 2 === 是否群组通话 === false ``` **预期界面(小程序端):** ``` - 通话状态从 IDLE 变为 calling - TUICallKit 组件自动显示来电界面 - 显示"接听"和"拒绝"按钮 ``` **检查点:** - [ ] Web 端 targetUserId 是 `patient_2`(字符串) - [ ] 小程序端收到来电信号 - [ ] 小程序端状态变为 `calling` - [ ] 小程序端界面显示来电 ### 测试 3:接听通话 **操作:** 1. 小程序端点击"接听"按钮 **预期结果:** - [ ] 通话状态变为 `connected` - [ ] 双方都能看到视频画面 - [ ] 双方都能听到声音 - [ ] 控制按钮正常工作 ### 测试 4:小程序端发起呼叫 **操作:** 1. 小程序端输入:`1` 2. 点击"呼叫" **预期日志(小程序端):** ``` === 准备发起呼叫 === 输入值: 1 目标 userId: doctor_1 目标 userId 类型: string 目标 userId 长度: 8 发起通话成功, 目标用户: doctor_1 ``` **预期结果:** - [ ] 自动转换为 `doctor_1` - [ ] Web 端收到来电 - [ ] 可以正常接听 **检查点:** - [ ] 目标 userId 类型是 `string` - [ ] 目标 userId 值是 `doctor_1`(包含下划线) - [ ] 没有警告信息 ## ⚠️ 常见问题 ### 问题 1:userId 类型不是 string **症状:** ``` userId 类型: number ``` **原因:** 后端返回的是数字而不是字符串 **解决:** 修改后端代码,确保返回字符串: ```php return [ 'userId' => (string)$userId, // 强制转换为字符串 // ... ]; ``` ### 问题 2:userId 格式警告 **症状:** ``` ⚠️ userId 格式可能不正确,应该包含下划线 ``` **原因:** userId 不包含下划线(如:`patient2` 而不是 `patient_2`) **解决:** 修改后端代码,确保格式正确: ```php $userId = 'patient_' . $patientId; // 使用下划线 ``` ### 问题 3:提示"对方不在线" **症状:** 错误代码 60011 **原因:** userId 格式不匹配 **解决:** 1. 检查 Web 端日志中的 `targetUserId` 2. 检查小程序端日志中的 `userId` 3. 确保两者完全一致 ## 📊 成功标准 ### 登录成功 - ✅ userId 类型是 `string` - ✅ userId 格式是 `prefix_number`(如:`patient_2`) - ✅ 没有格式警告 - ✅ 界面显示正确的 userId ### 接收来电成功 - ✅ 收到 `onNewMessageReceived` 事件 - ✅ 状态变为 `calling` - ✅ 界面自动显示来电 - ✅ 可以正常接听 ### 发起呼叫成功 - ✅ 目标 userId 格式正确 - ✅ 对方收到来电 - ✅ 可以正常接听 ## 🎯 完整测试流程 ### 流程 1:Web → 小程序 ``` 1. 小程序端登录(patient_2) ↓ 2. 检查 userId 格式(string, patient_2) ↓ 3. Web 端发起呼叫(target: patient_2) ↓ 4. 小程序端收到来电 ↓ 5. 状态变为 calling ↓ 6. 界面显示来电 ↓ 7. 点击接听 ↓ 8. 通话成功 ``` ### 流程 2:小程序 → Web ``` 1. 小程序端登录(patient_2) ↓ 2. 输入医生ID(1) ↓ 3. 自动转换为 doctor_1 ↓ 4. 检查格式(string, doctor_1) ↓ 5. 发起呼叫 ↓ 6. Web 端收到来电 ↓ 7. 点击接听 ↓ 8. 通话成功 ``` ## 📞 需要提供的信息 如果测试失败,请提供: ### 1. 登录日志 ``` === 小程序端登录信息 === sdkAppId: ??? userId: ??? userId 类型: ??? userId 长度: ??? ``` ### 2. 呼叫日志(如果是小程序发起) ``` === 准备发起呼叫 === 输入值: ??? 目标 userId: ??? 目标 userId 类型: ??? 目标 userId 长度: ??? ``` ### 3. 后端响应(隐藏 userSig) ```json { "userId": "???", "patientUserId": "???", "sdkAppId": "???" } ``` ### 4. 错误信息 - 错误代码 - 错误提示 - 完整的控制台日志 ## 📚 相关文档 - **USERID_FORMAT_CHECK.md** - userId 格式检查指南 - **READY_TO_TEST.md** - 准备测试指南 - **DEBUG_WITH_LOGS.md** - 详细日志说明 --- **最后更新:** 2024-03-04 **版本:** 5.0(最终测试版) **状态:** ✅ 准备测试 **祝你测试顺利!🎉**