Files
aiagent/saars/README.md
2026-03-07 09:01:00 +08:00

120 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SAARS 全栈聊天助手平台
企业级聊天助手平台,前后端分离,支持实时聊天、用户管理、内容审核。技术规范见项目根目录《全栈聊天助手平台开发技术规范》。
## 仓库结构
```
saars/
├── backend/ # Flask 后端
│ ├── app/
│ │ ├── api/ # REST 端点
│ │ ├── models/ # 数据模型
│ │ ├── services/ # 业务逻辑
│ │ ├── admin/ # Flask-Admin 管理
│ │ └── utils/
│ ├── tests/
│ ├── requirements.txt
│ └── Dockerfile
├── android-app/ # Android 客户端 (Java, MVVM)
│ ├── app/
│ │ ├── data/ # 数据层 (Retrofit, Room)
│ │ ├── domain/ # 领域层
│ │ └── presentation/# 表现层 (Activity, ViewModel)
│ └── build.gradle
├── docker-compose.yml
└── README.md
```
## 后端 (Flask)
- **框架**: Flask 2.3+, Flask-SocketIO, Flask-JWT-Extended, Flask-Admin
- **数据库**: 腾讯云 MySQL (liaotian_db)SQLAlchemy ORM + PyMySQLFlask-Migrate
- **缓存/队列**: Redis 7+
- **认证**: JWT + 刷新令牌
### 本地运行
```bash
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
export FLASK_ENV=development
export DATABASE_URL=mysql+pymysql://root:!Rjb12191@gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936/liaotian_db?charset=utf8mb4
export REDIS_URL=redis://localhost:6379/0
flask db upgrade # 需先创建数据库并执行迁移
python run.py # 或 gunicorn -k eventlet -w 1 run:app
```
### Docker
```bash
docker-compose up -d
# 后端监听 8052 端口(腾讯云已放行);首次需在 backend 容器内: flask db init && flask db migrate -m "init" && flask db upgrade
```
### API 概览
| 模块 | 路径前缀 | 说明 |
|----------|-----------------|----------------|
| 认证 | `/api/v1/auth` | 注册、登录、刷新、/me |
| 聊天 | `/api/v1/chat` | 会话列表、消息、撤回 |
| 文件 | `/api/v1/files` | 上传(图片/文档,最大 10MB |
| 管理 | `/api/v1/admin` | 用户管理、会话审计、统计(需 admin 角色) |
| 知你客服 | `/api/v1/agent` | Agent 代理(方式一):`POST /chat` 与知你客服对话 |
- 服务端口:**8052**(可在环境变量 `PORT` 或 docker-compose 中修改)
- 管理界面: `/admin`(需 Bearer Token 且角色为 admin
### 知你客服 Agent 代理(方式一)
- 按《知你客服 Agent 智能聊天 App 接入方案》方式一SAARS 后端用平台账号登录拿 Token代 App 用户调平台执行 API再返回回复。
- **配置**:在环境变量或 `docker-compose.yml` 中设置
`PLATFORM_BASE_URL`(如 `http://101.43.95.130:8037`)、`PLATFORM_USERNAME``PLATFORM_PASSWORD``PLATFORM_AGENT_ID`(知你客服的 Agent ID。在低代码平台为对接创建一个账号在 Agent 管理中复制「知你客服」的 ID 填入。
- **接口**`POST /api/v1/agent/chat`Body `{ "message": "用户输入", "user_id": "可选" }`,响应 `{ "reply": "客服回复" }`。需登录 SAARS 的 JWT。
## Android 客户端 (Java)
- **最小 SDK**: API 30 (Android 11)
- **架构**: MVVM, Architecture Components, Retrofit, Socket.IO Client, Room
- **UI**: Material Design 3, RecyclerView 消息列表
### Room 离线
- 会话列表、消息列表首次从本地 Room 加载(秒开),再拉取接口并写回 Room。
- 发送成功的消息会写入 RoomSocket 收到的新消息也会写入 Room下次进入直接读本地。
### Socket.IO 实时
- 登录/注册成功后自动连接 Socketquery 带 token进入聊天页会 `join_conversation`,退出会 `leave_conversation`
- 后端发消息后通过 `broadcast_new_message` 推送到房间,客户端收到 `new_message` 后写入 Room 并刷新列表。
### FCM 推送
- 已接入 `firebase-messaging``ChatFirebaseMessagingService`,后台/进程被杀时由 FCM 下发通知。
- **启用步骤**:在 [Firebase 控制台](https://console.firebase.google.com/) 创建项目并添加 Android 应用,下载 `google-services.json` 放到 `android-app/app/`;在根目录 `build.gradle``plugins` 中增加 `id 'com.google.gms.google-services' version '4.4.0' apply false`,在 `app/build.gradle``plugins` 中取消注释 `id 'com.google.gms.google-services'`,同步后即可。可选:后端提供 `POST /api/v1/users/me/fcm_token` 保存 token便于服务端发定向推送。
### 知你客服入口
- 会话列表页右下角有两个 FAB**知你客服**(上方)、**新对话**(下方)。点击「知你客服」进入与知你客服 Agent 的对话页,消息通过 SAARS 后端代理转发到低代码平台执行 API回复展示在列表中并写入 Room 做历史。
### 构建
```bash
cd android-app
./gradlew assembleDebug
```
`build.gradle``applicationId` 与后端地址配置为实际环境后安装运行。
## 质量与部署
- **测试**: 后端 `pytest`,目标单元测试覆盖率 ≥85%
- **部署**: Docker 容器化,可配合 CI/CD 流水线
- **扩展**: 无状态 API + Redis支持水平扩展
## 许可证
内部项目,按公司规定使用。