# AI问答页面输入问题修复

## 问题分析

第一次无法输入提问内容的可能原因：

1. ✅ **WebSocket连接问题**: 使用了错误的连接参数（AI_TOKEN而不是UserId）
2. ✅ **用户标识错误**: 消息中的user字段使用了AI_TOKEN而不是UserId
3. ✅ **初始化时序问题**: 输入框可能在初始化完成前被禁用
4. ✅ **状态管理问题**: 缺少初始化状态跟踪

## 修复内容

### 1. WebSocket连接修复
```typescript
// 修复前
wsRef.current = createWebSocket(WSS_API_URL + "/chat/" + Taro.getStorageSync('AI_TOKEN'));

// 修复后
const userId = Taro.getStorageSync('UserId') || 'anonymous';
wsRef.current = createWebSocket(WSS_API_URL + "/chat/" + userId);
```

### 2. 用户标识修复
```typescript
// 修复前
user: `${Taro.getStorageSync('AI_TOKEN')}`

// 修复后
user: `${Taro.getStorageSync('UserId') || 'anonymous'}`
```

### 3. 初始化状态管理
```typescript
// 添加初始化状态
const [isInitialized, setIsInitialized] = useState(false);

// 初始化完成后设置状态
setIsInitialized(true);
```

### 4. 输入框状态优化
```typescript
// 输入框禁用逻辑
disabled={!isInitialized || isLoading}

// 占位符文本
placeholder={
    !isInitialized ? "正在初始化..." : 
    isLoading ? "AI正在回复中..." : 
    "请输入您的问题..."
}
```

### 5. 发送按钮状态优化
```typescript
// 发送按钮禁用逻辑
disabled={!isInitialized || !inputValue.trim()}
```

### 6. 调试功能
- 添加了详细的状态调试信息
- 输入框焦点和点击事件监听
- 初始化完成状态跟踪

## 测试步骤

### 1. 基本输入测试
1. 打开AI问答页面
2. 等待初始化完成（看到"请输入您的问题..."）
3. 点击输入框，检查是否能正常输入
4. 输入文字，检查是否正常显示

### 2. 快捷问题测试
1. 点击快捷问题按钮
2. 检查是否能正常发送消息
3. 验证初始化状态检查

### 3. 状态调试测试
1. 打开浏览器控制台
2. 查看初始化日志：
   - "AI Token初始化完成: xxx"
   - "输入框状态调试: {...}"
3. 点击输入框查看状态变化

### 4. WebSocket连接测试
1. 检查控制台WebSocket连接日志
2. 验证连接URL是否正确
3. 确认连接状态指示器工作正常

## 预期结果

- ✅ 页面加载后输入框立即可用
- ✅ 输入框状态正确显示
- ✅ 快捷问题正常工作
- ✅ WebSocket连接正常
- ✅ 消息发送功能正常

## 调试信息示例

控制台应该显示类似信息：
```
AI Token初始化完成: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
wsUrl: wss://cms-api.websoft.top/api/chat/12345
WebSocket连接成功
输入框状态调试: {
  isInitialized: true,
  isLoading: false,
  wsConnected: true,
  inputValue: "",
  inputDisabled: false,
  sendButtonDisabled: true
}
```

## 注意事项

1. 确保UserId存在，否则使用'anonymous'作为默认值
2. AI_TOKEN仍然用于API请求认证
3. WebSocket连接使用UserId进行房间区分
4. 初始化状态确保用户体验流畅
