Files
tw/DEPLOYMENT.md
ZuoWei a6c42d505a feat: 完整功能部署 v1.0
新增功能:
- 天网协作系统 (HTTP API 端口 6060)
- 三种工作流 (查找图片/处理图片/转人工派单)
- 图片任务数据库 (支持客户后续增加需求)
- 图绘派单系统集成 (API: 8005)
- 文字检测与加价 (60-80 元高价值订单)
- 风险评估与接单判断
- 作图失败自动转人工

新增文档:
- 项目功能汇总.md
- 三种工作流功能说明.md
- 文字加价功能说明.md
- 风险评估功能说明.md
- 图片任务数据库功能说明.md
- 图绘派单系统集成说明.md
- 作图失败转接人工说明.md
- DEPLOYMENT.md
- TIANWANG_INTEGRATION.md

核心修改:
- core/pydantic_ai_agent.py
- core/workflow.py
- core/websocket_client.py
- image/image_analyzer.py
- services/service_tuhui_dispatch.py
- db/image_tasks_db.py

版本:v1.0
日期:2026-02-28
2026-02-28 11:20:40 +08:00

326 lines
6.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.
# AI 客服系统 - 天网协作版部署文档
## 📋 运行架构
**单进程多模块架构**
- ✅ 一个 Python 进程
- ✅ 多个模块协同工作
- ✅ WebSocket 客户端 + HTTP API 服务器 + 任务调度器
**优势**
- 部署简单(一条命令)
- 资源共享(数据库连接、内存)
- 通信高效(进程内调用)
---
## 🚀 部署步骤
### 步骤 1环境检查
```bash
# 检查 Python 版本
python3 --version # 需要 3.8+
# 检查依赖
cd /root/ai_customer_service/ai_cs
pip3 list | grep -E "flask|pydantic|sqlite"
```
### 步骤 2启动天网协作版
```bash
cd /root/ai_customer_service/ai_cs
# 启动(包含 AI Agent
python3 run_with_tianwang.py
# 启动(不包含 AI Agent仅基础回复
python3 run_with_tianwang.py --no-agent
```
**启动后会看到**
```
============================================================
AI 客服系统 - 天网协作版
============================================================
正在启动 HTTP API 服务器...
HTTP API 服务器已启动http://0.0.0.0:5678
天网任务接口:
POST /api/task/receive - 接收任务
POST /api/task/cancel - 取消任务
GET /api/task/status/:id - 查询任务状态
GET /api/task/list - 任务列表
GET /api/health - 健康检查
============================================================
正在连接轻简 API...
AI Agent: 已启用
============================================================
系统已就绪,等待消息和任务...
```
### 步骤 3测试 API
```bash
# 测试健康检查
curl http://localhost:5678/api/health
# 接收任务
curl -X POST http://localhost:5678/api/task/receive \
-H "Content-Type: application/json" \
-d '{
"task_id": "TEST_001",
"type": "test",
"customer": {"id": "test_001"},
"trigger": {"type": "customer_reply", "keyword": "测试"},
"action": {"type": "send_message", "message": "测试消息"},
"created_by": "测试"
}'
# 查询任务
curl http://localhost:5678/api/task/status/TEST_001
```
---
## 🔧 生产环境部署
### 方式 1systemd 服务(推荐)
创建服务文件:
```bash
cat > /etc/systemd/system/ai-cs-tianwang.service << 'SERVICE'
[Unit]
Description=AI Customer Service with Tianwang
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/ai_customer_service/ai_cs
ExecStart=/usr/bin/python3 run_with_tianwang.py
Restart=always
RestartSec=10
LimitNOFILE=65535
# 环境变量(可选)
Environment="HTTP_API_PORT=5678"
Environment="TASK_DB_PATH=/root/ai_customer_service/ai_cs/db/task_db/tasks.db"
# 日志
StandardOutput=journal
StandardError=journal
SyslogIdentifier=ai-cs-tianwang
[Install]
WantedBy=multi-user.target
SERVICE
# 启动服务
systemctl daemon-reload
systemctl enable ai-cs-tianwang
systemctl start ai-cs-tianwang
# 查看状态
systemctl status ai-cs-tianwang
# 查看日志
journalctl -u ai-cs-tianwang -f
```
### 方式 2Docker 部署
创建 Dockerfile
```dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5678
CMD ["python3", "run_with_tianwang.py"]
```
构建并运行:
```bash
docker build -t ai-cs-tianwang .
docker run -d \
--name ai-cs \
-p 5678:5678 \
-v /root/ai_customer_service/ai_cs/db:/app/db \
--restart unless-stopped \
ai-cs-tianwang
```
### 方式 3后台运行简单场景
```bash
cd /root/ai_customer_service/ai_cs
# 使用 nohup 后台运行
nohup python3 run_with_tianwang.py > /var/log/ai-cs.log 2>&1 &
# 查看进程
ps aux | grep run_with_tianwang
# 查看日志
tail -f /var/log/ai-cs.log
# 停止进程
pkill -f run_with_tianwang
```
---
## 📊 端口说明
| 端口 | 用途 | 是否必须 |
|------|------|----------|
| 5678 | HTTP API 服务器 | ✅ 必须 |
| 9528 | 轻简软件 WebSocket | ✅ 必须(外部) |
**防火墙配置**
```bash
# 开放 HTTP API 端口
firewall-cmd --add-port=5678/tcp --permanent
firewall-cmd --reload
# 或者使用 iptables
iptables -A INPUT -p tcp --dport 5678 -j ACCEPT
```
---
## 🔍 监控与日志
### 查看运行状态
```bash
# systemd 方式
systemctl status ai-cs-tianwang
# 进程方式
ps aux | grep run_with_tianwang
```
### 查看日志
```bash
# systemd 方式
journalctl -u ai-cs-tianwang -f
# 文件方式
tail -f /var/log/ai-cs.log
# 只看任务相关日志
journalctl -u ai-cs-tianwang -f | grep "任务"
```
### 查看数据库
```bash
# 进入 SQLite
sqlite3 /root/ai_customer_service/ai_cs/db/task_db/tasks.db
# 查看所有任务
SELECT task_id, status, created_at FROM tasks ORDER BY created_at DESC LIMIT 10;
# 查看待触发任务
SELECT * FROM tasks WHERE status='pending';
# 查看失败任务
SELECT task_id, error_message FROM tasks WHERE status='failed';
# 退出
.exit
```
---
## ⚠️ 注意事项
1. **HTTP 端口**
- 默认 5678确保未被占用
- 可在 `.env` 中修改:`HTTP_API_PORT=5679`
2. **数据库路径**
- 确保有写权限
- 建议定期备份:`cp tasks.db tasks.db.backup`
3. **天网回调**
- 配置正确的回调 URL
- 确保天网服务器能访问 AI 客服
4. **资源限制**
- 建议内存:≥ 512MB
- 建议 CPU≥ 1 核心
5. **进程守护**
- 推荐使用 systemd
- 自动重启,故障恢复
---
## 🐛 故障排查
### 无法启动
```bash
# 检查端口占用
netstat -tlnp | grep 5678
# 检查依赖
pip3 list | grep -E "flask|pydantic"
# 手动运行查看错误
python3 run_with_tianwang.py
```
### 任务未触发
```bash
# 1. 检查任务状态
curl http://localhost:5678/api/task/status/TASK_ID
# 2. 查看日志
journalctl -u ai-cs-tianwang -f | grep "任务触发"
# 3. 检查触发条件
# 确认客户消息包含触发关键词
```
### HTTP API 无法访问
```bash
# 1. 检查服务状态
systemctl status ai-cs-tianwang
# 2. 检查端口
netstat -tlnp | grep 5678
# 3. 检查防火墙
firewall-cmd --list-ports
# 4. 本地测试
curl http://localhost:5678/api/health
```
---
## 📞 技术支持
- 完整文档:`/root/ai_customer_service/ai_cs/TIANWANG_INTEGRATION.md`
- 使用示例:`/root/ai_customer_service/ai_cs/SPECIFIED_CUSTOMER_REPLY_EXAMPLE.md`
- 日志位置:`journalctl -u ai-cs-tianwang -f`
- 数据库位置:`/root/ai_customer_service/ai_cs/db/task_db/tasks.db`