# AI助手Web客户端 - 后端集成指南

## 📋 概述

本Web客户端已成功对接im-api后端聊天服务，支持：
- ✅ 应用列表加载（支持搜索、按创建时间倒排）
- ✅ 应用选择
- ✅ SSE流式对话
- ✅ 推荐问题加载
- ✅ 完整的对话交互

## 🔧 配置说明

### 1. 环境变量配置

复制 `.env.example` 为 `.env` 并修改：

```bash
# im-api后端服务地址
IM_API_BASE_URL=http://localhost:8080

# 认证Token（可选，如果后端需要认证）
AUTH_TOKEN=your_jwt_token_here

# 服务端口
PORT=15000
```

### 2. 后端API要求

确保im-api后端服务已启动，并提供以下接口：

#### 2.1 获取应用列表
```
GET /api/ai-assistant/chatapp
```

响应格式：
```json
{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": "app_id",
      "appName": "应用名称",
      "appDescription": "应用描述",
      "appAvatar": "头像URL",
      "category": "分类",
      "sortNum": 1,
      "enableRecommendation": true,
      "conversationStarter": "欢迎语",
      "reasoningEnable": false
    }
  ]
}
```

#### 2.2 获取推荐问题
```
GET /api/ai-assistant/chatapp/{appId}/getRecommendQuestion?pageSize=3&current=1
```

响应格式：
```json
{
  "code": 200,
  "data": {
    "records": [
      {
        "question": "推荐问题1"
      }
    ]
  }
}
```

#### 2.3 发送消息（SSE流式）
```
POST /api/ai-assistant/chat/completions/message
Content-Type: application/json
```

请求体：
```json
{
  "chatId": "chat_id_or_null",
  "appId": "app_id",
  "equipment": "web",
  "messageTag": "AI_TAG",
  "body": {
    "messages": [
      {
        "role": "user",
        "content": "用户消息"
      }
    ],
    "channel": "web",
    "attachmentIds": [],
    "recommendQuestions": [],
    "variables": {},
    "reasoning": "false"
  }
}
```

SSE响应格式：
```
event: MESSAGE_DETAIL
data: {
  "detailId": "detail_id",
  "chatId": "chat_id",
  "question": {
    "content": "用户问题",
    "role": "user"
  },
  "answer": {
    "content": "AI回答",
    "role": "assistant"
  },
  "status": "PROCESSING|FINISH|ERROR"
}
```

## 🚀 启动步骤

### 1. 安装依赖

```bash
cd web_client
pip3 install -r requirements.txt
```

### 2. 配置环境变量

```bash
# 复制配置文件
cp .env.example .env

# 编辑配置
vim .env
```

### 3. 启动服务

```bash
# 使用启动脚本
./start.sh

# 或直接运行
python3 app.py
```

### 4. 访问应用

打开浏览器访问：http://localhost:15000

## 📝 使用流程

1. **选择应用**
   - 页面加载后自动显示应用列表
   - 可以使用搜索框搜索应用
   - 点击应用卡片进入对话

2. **开始对话**
   - 进入对话界面后显示欢迎消息
   - 如果应用启用了推荐问题，会显示快捷回复按钮
   - 在输入框输入消息，按Enter或点击发送按钮

3. **查看回复**
   - AI回复以流式方式实时显示
   - 支持打字指示器动画
   - 自动滚动到最新消息

4. **返回应用列表**
   - 点击左上角返回按钮
   - 可以切换到其他应用

## 🔍 故障排查

### 问题1：应用列表加载失败

**原因**：后端服务未启动或地址配置错误

**解决**：
1. 检查im-api服务是否启动
2. 检查 `.env` 中的 `IM_API_BASE_URL` 配置
3. 查看浏览器控制台和后端日志

### 问题2：消息发送失败

**原因**：认证失败或SSE连接问题

**解决**：
1. 检查是否需要配置 `AUTH_TOKEN`
2. 检查浏览器是否支持SSE
3. 查看网络请求详情

### 问题3：推荐问题不显示

**原因**：应用未启用推荐或后端接口返回空

**解决**：
1. 检查应用的 `enableRecommendation` 字段
2. 检查后端推荐问题接口是否正常

## 📊 技术架构

```
┌─────────────┐      ┌──────────────┐      ┌─────────────┐
│   浏览器    │ ───> │ Flask代理层  │ ───> │  im-api后端 │
│  (前端UI)   │ <─── │  (web_client)│ <─── │  (聊天服务) │
└─────────────┘      └──────────────┘      └─────────────┘
```

### 代理层功能

1. **请求转发**：将前端请求代理到im-api后端
2. **SSE流式转发**：支持Server-Sent Events流式响应
3. **错误处理**：统一的错误处理和日志记录
4. **CORS支持**：解决跨域问题

## 🎯 下一步优化

1. **认证集成**
   - 集成真实的登录系统
   - 从登录获取JWT token
   - 支持token刷新

2. **功能增强**
   - 支持文件上传
   - 支持语音输入
   - 支持多会话管理
   - 支持历史记录

3. **性能优化**
   - 添加请求缓存
   - 优化SSE连接管理
   - 添加重连机制

## 📞 联系方式

如有问题，请联系：huazm@glodon.com

