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
This commit is contained in:
325
DEPLOYMENT.md
Normal file
325
DEPLOYMENT.md
Normal file
@@ -0,0 +1,325 @@
|
||||
# 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 生产环境部署
|
||||
|
||||
### 方式 1:systemd 服务(推荐)
|
||||
|
||||
创建服务文件:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### 方式 2:Docker 部署
|
||||
|
||||
创建 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`
|
||||
|
||||
Reference in New Issue
Block a user