# 详细日志调试指南

## 🎯 已添加的调试功能

### 1. 详细日志级别
```javascript
TUICallKitAPI.setLogLevel(1);  // 启用详细日志
```

### 2. 多状态监听
现在会监听以下状态变化：
- 通话状态（CALL_STATUS）
- 是否群组通话（IS_GROUP）
- 通话角色（CALL_ROLE）
- 通话类型（CALL_MEDIA_TYPE）

### 3. 完整状态输出
登录成功后会输出完整的状态信息。

## 📋 测试步骤

### 步骤 1：清除缓存并重启
```
1. 微信开发者工具 → 工具 → 清除缓存 → 全部清除
2. 关闭微信开发者工具
3. 重新打开微信开发者工具
4. 重新编译项目
```

### 步骤 2：小程序端登录
1. 输入患者ID：`2`
2. 点击"登录"
3. 等待登录成功

**预期日志（按顺序）：**
```
=== 页面已挂载 ===
=== 已设置详细日志级别 ===
获取签名成功: { userId: "patient_2", sdkAppId: "1400xxxxxx", ... }
=== 小程序端登录信息 ===
sdkAppId: 1400xxxxxx
userId: patient_2
userSig 长度: xxx
TUICallKit 初始化成功, userId: patient_2
=== TUICallKit 初始化完成，等待来电 ===
=== TUICallKit 组件已挂载 ===
当前通话状态: IDLE
完整状态信息: {
  callStatus: "idle",
  isGroup: false,
  callRole: null,
  callMediaType: null,
  localUserInfo: { userId: "patient_2" }
}
```

### 步骤 3：Web 端发起呼叫
1. Web 端打开患者详情页
2. 点击"视频通话"按钮

**预期日志（小程序端）：**
```
[tuikit engine wasm] [im_event_channel_wasm.cc:71] js notify Native OnJSEvent, [event_id:onNewMessageReceived]

=== 通话状态变化 === waiting (或其他状态)
CallStatus.IDLE: idle
CallStatus.WAITING: waiting
CallStatus.CONNECTED: connected

=== 通话角色 === callee
=== 通话类型 === video
=== 是否群组通话 === false
```

### 步骤 4：观察界面变化
- 界面上的"通话状态"应该从 `IDLE` 变为其他状态
- TUICallKit 组件应该自动显示来电界面

## 🔍 关键日志说明

### 日志 1：onNewMessageReceived
```
[tuikit engine wasm] [im_event_channel_wasm.cc:71] js notify Native OnJSEvent, [event_id:onNewMessageReceived]
```
**含义：** 收到了新消息（来电信号）
**状态：** ✅ 正常

### 日志 2：通话状态变化
```
=== 通话状态变化 === waiting
```
**含义：** 通话状态从 IDLE 变为 WAITING（等待接听）
**状态：** ✅ 正常

### 日志 3：通话角色
```
=== 通话角色 === callee
```
**含义：** 当前角色是被叫方（接听方）
**状态：** ✅ 正常

### 日志 4：通话类型
```
=== 通话类型 === video
```
**含义：** 视频通话
**状态：** ✅ 正常

## ⚠️ 可能的问题

### 问题 1：收到消息但状态不变化

**症状：**
```
[tuikit engine wasm] onNewMessageReceived  ✅
=== 通话状态变化 ===  ❌ 没有这条日志
```

**原因：** 消息处理失败或状态更新失败

**解决：**
1. 查看是否有其他错误日志
2. 检查 userId 格式是否正确
3. 尝试重新登录

### 问题 2：状态变化但界面不显示

**症状：**
```
=== 通话状态变化 === waiting  ✅
界面没有变化  ❌
```

**原因：** TUICallKit 组件显示问题

**解决：**
1. 检查 Wxml 面板中是否有 TUICallKit 组件
2. 检查组件的样式和位置
3. 尝试真机测试

### 问题 3：完全没有日志

**症状：**
```
登录成功后没有任何日志输出
```

**原因：** 代码未正确更新或缓存问题

**解决：**
1. 确认代码已保存
2. 清除缓存
3. 重新编译
4. 重启微信开发者工具

## 📊 日志分析表

| 日志内容 | 状态 | 说明 |
|---------|------|------|
| `=== 页面已挂载 ===` | ✅ | 页面初始化成功 |
| `=== 已设置详细日志级别 ===` | ✅ | 日志级别设置成功 |
| `TUICallKit 初始化成功` | ✅ | SDK 初始化成功 |
| `=== TUICallKit 组件已挂载 ===` | ✅ | 组件挂载成功 |
| `onNewMessageReceived` | ✅ | 收到来电信号 |
| `=== 通话状态变化 ===` | ✅ | 状态正确更新 |
| `=== 通话角色 === callee` | ✅ | 角色识别正确 |
| `=== 通话类型 === video` | ✅ | 类型识别正确 |

## 🎯 成功标准

当你看到以下完整的日志序列时，说明一切正常：

```
1. === 页面已挂载 ===
2. === 已设置详细日志级别 ===
3. 获取签名成功
4. TUICallKit 初始化成功
5. === TUICallKit 组件已挂载 ===
6. 当前通话状态: IDLE

[Web 端发起呼叫后]

7. onNewMessageReceived
8. === 通话状态变化 === waiting
9. === 通话角色 === callee
10. === 通话类型 === video
11. === 是否群组通话 === false
```

如果看到这些日志，但界面仍然没有显示，那就是 TUICallKit 组件的显示问题，需要进一步调试组件样式。

## 🔧 下一步调试

### 如果状态正确变化但界面不显示

1. **检查组件是否存在**
   - 微信开发者工具 → 调试器 → Wxml
   - 查找 `TUICallKit` 组件
   - 查看其样式和位置

2. **检查组件样式**
   ```css
   .call-kit-wrapper {
     position: fixed;
     top: 0;
     left: 0;
     width: 100vw;
     height: 100vh;
     z-index: 9999;
     background-color: rgba(0, 0, 0, 0.8);  /* 添加背景色便于查看 */
   }
   ```

3. **添加可见性测试**
   在 TUICallKit 组件外层添加：
   ```vue
   <view class="call-kit-wrapper" v-if="isLogin">
     <view class="test-marker">TUICallKit 区域</view>
     <TUICallKit></TUICallKit>
   </view>
   
   <style>
   .test-marker {
     position: absolute;
     top: 0;
     left: 0;
     background: red;
     color: white;
     padding: 10px;
     z-index: 10000;
   }
   </style>
   ```

4. **真机测试**
   - 开发者工具可能与真机表现不同
   - 使用真机调试功能
   - 查看真机上的实际效果

## 📞 需要提供的信息

如果问题仍然存在，请提供：

1. **完整的控制台日志**（从登录到收到来电的全部日志）
2. **界面截图**（显示"通话状态"的值）
3. **Wxml 面板截图**（显示 TUICallKit 组件）
4. **是否有其他错误日志**
5. **真机测试结果**（如果可能）

---

**最后更新：** 2024-03-04
**版本：** 1.0
