新增功能

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
+334
View File
@@ -0,0 +1,334 @@
# 🧪 如何测试音视频通话功能
## 问题说明
当前错误的原因:**患者端没有登录 TRTC**
```
错误: patient_1 用户不存在
原因: 只有医生端登录了,患者端没有登录
```
这就像打电话:
- ✅ 你的手机开机了(医生端已初始化)
- ❌ 对方手机没开机(患者端未初始化)
- ❌ 所以无法接通
## 快速测试方案
### 方案 1: 使用测试页面(推荐)⭐
#### 步骤 1: 准备两个浏览器窗口
- **窗口 1**: Chrome 正常模式(医生端)
- **窗口 2**: Chrome 无痕模式(患者端)
#### 步骤 2: 初始化患者端
在**窗口 2**中:
1. 访问测试页面(需要先添加路由):
```
http://localhost:5173/#/test/patient-call
```
2. 输入患者ID`1`
3. 点击"初始化患者端"
4. 等待提示"患者端初始化成功,等待来电..."
#### 步骤 3: 发起通话
在**窗口 1**中:
1. 登录后台管理系统
2. 进入"中医诊单"页面
3. 找到患者ID为1的诊单
4. 点击"视频通话"按钮
5. 点击"开始通话"
6. 等待初始化完成(约3秒)
#### 步骤 4: 接听通话
在**窗口 2**中:
1. 应该会收到来电提示
2. 点击"接听"按钮
3. 开始视频通话
#### 步骤 5: 验证功能
- ✅ 双方都能看到视频画面
- ✅ 双方都能听到声音
- ✅ 可以正常挂断
- ✅ 通话记录已保存
---
### 方案 2: 使用腾讯云官方 Demo
如果不想创建测试页面,可以使用腾讯云官方 Demo:
#### 步骤 1: 打开 Demo
访问:https://web.sdk.qcloud.com/trtc/webrtc/demo/latest/official-demo/index.html
#### 步骤 2: 配置信息
1. 输入你的 **SDKAppID**(从 `.env` 文件获取)
2. 输入你的 **SecretKey**(从 `.env` 文件获取)
3. 输入 **UserID**: `patient_1`
4. 点击"生成 UserSig"
5. 点击"进入房间"
#### 步骤 3: 发起通话
在你的系统中:
1. 登录后台
2. 进入诊断列表
3. 点击"视频通话"
4. 发起通话
#### 步骤 4: 接听
在 Demo 页面中应该会收到来电提示。
---
### 方案 3: 自呼叫测试(仅测试初始化)
如果只想测试初始化是否成功,可以呼叫自己:
修改前端代码:
```typescript
// admin/src/components/video-call/index.vue
// 在 startCall 方法中
// 修改前
await TUICallKitServer.call({
userID: callInfo.value.userId, // patient_1
type: TUICallType.VIDEO_CALL
})
// 修改后(呼叫自己)
await TUICallKitServer.call({
userID: res.userId, // doctor_1(自己)
type: TUICallType.VIDEO_CALL
})
```
这样可以验证:
- ✅ 初始化是否成功
- ✅ 签名是否正确
- ✅ 配置是否正确
但无法测试真实的双向通话。
---
## 添加测试页面路由
### 步骤 1: 创建路由文件
如果还没有测试路由,创建:
```typescript
// admin/src/router/modules/test.ts
export default {
path: '/test',
name: 'Test',
meta: { title: '测试' },
children: [
{
path: 'patient-call',
name: 'PatientCallTest',
component: () => import('@/views/test/patient-call.vue'),
meta: { title: '患者端测试' }
}
]
}
```
### 步骤 2: 导入路由
```typescript
// admin/src/router/index.ts
import testRoutes from './modules/test'
const routes = [
// ... 其他路由
testRoutes
]
```
### 步骤 3: 访问测试页面
```
http://localhost:5173/#/test/patient-call
```
---
## 完整测试流程图
```
┌─────────────────────────────────────────────────────────────┐
│ 测试准备 │
├─────────────────────────────────────────────────────────────┤
│ 1. 打开两个浏览器窗口 │
│ - 窗口1: Chrome(医生端) │
│ - 窗口2: Chrome 无痕模式(患者端) │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 窗口2: 初始化患者端 │
├─────────────────────────────────────────────────────────────┤
│ 1. 访问 /test/patient-call │
│ 2. 输入患者ID: 1 │
│ 3. 点击"初始化患者端" │
│ 4. 等待提示"初始化成功" │
│ 5. 状态: 在线,等待来电 │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 窗口1: 发起通话 │
├─────────────────────────────────────────────────────────────┤
│ 1. 登录后台管理系统 │
│ 2. 进入"中医诊单"页面 │
│ 3. 找到患者ID=1的诊单 │
│ 4. 点击"视频通话" │
│ 5. 点击"开始通话" │
│ 6. 等待初始化(约3秒) │
│ 7. 通话发起成功 │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 窗口2: 接听通话 │
├─────────────────────────────────────────────────────────────┤
│ 1. 收到来电提示 │
│ 2. 点击"接听" │
│ 3. 开始视频通话 │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
│ 验证功能 │
├─────────────────────────────────────────────────────────────┤
│ ✅ 视频画面正常 │
│ ✅ 音频正常 │
│ ✅ 可以挂断 │
│ ✅ 通话记录保存 │
└─────────────────────────────────────────────────────────────┘
```
---
## 常见问题
### Q1: 患者端没有收到来电
**检查清单**:
- [ ] 患者端是否已初始化?
- [ ] 患者ID是否匹配?(patient_1
- [ ] 两个窗口是否使用了不同的浏览器/无痕模式?
- [ ] 网络是否正常?
**调试方法**:
```javascript
// 在患者端控制台执行
console.log('当前用户ID:', window.TUICallKitServer?.userID)
// 应该显示: patient_1
```
### Q2: 提示用户不存在
**原因**: 患者端没有初始化
**解决方案**:
1. 先初始化患者端
2. 再发起通话
### Q3: 两个窗口都是同一个用户
**原因**: 使用了相同的浏览器和 localStorage
**解决方案**:
- 使用无痕模式
- 或使用不同的浏览器
### Q4: 初始化失败
**检查**:
- [ ] 后端配置是否正确?
- [ ] SDKAppID 和 SecretKey 是否正确?
- [ ] 网络是否正常?
- [ ] 浏览器是否支持 WebRTC
---
## 生产环境部署
在生产环境中,需要开发完整的患者端应用:
### 1. 患者端 H5/小程序
- 集成 TUICallKit
- 实现登录功能
- 监听来电
- 推送通知
### 2. 在线状态管理
- 检查患者是否在线
- 如果不在线,提示医生
- 发送推送通知
### 3. 通话记录
- 保存通话记录
- 统计通话时长
- 生成通话报表
---
## 相关文档
- [测试指南](./admin/TESTING_GUIDE.md) - 详细的测试说明
- [关键修复](./admin/CRITICAL_FIX.md) - 初始化问题修复
- [故障排查](./admin/TROUBLESHOOTING.md) - 常见问题解决
---
## 快速命令
```bash
# 启动开发服务器
cd admin
npm run dev
# 访问测试页面
# http://localhost:5173/#/test/patient-call
# 查看后端日志
tail -f server/runtime/log/error.log
```
---
**祝测试顺利!** 🎉