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:
2026-02-28 11:20:40 +08:00
parent 5aedf1665d
commit a6c42d505a
171 changed files with 7979 additions and 328 deletions

325
DEPLOYMENT.md Normal file
View 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
```
---
## 🔧 生产环境部署
### 方式 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`