Files
tw/TIANWANG_INTEGRATION.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

403 lines
8.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 客服协作系统 - 完整文档
## 📋 项目概述
**目标**: 实现天网(任务调度中心)与 AI 客服的协作支持设计师在群里下发任务AI 客服自动执行。
**协作流程**:
```
设计师(群里) → 天网(任务分析) → AI 客服(执行)
↑ ↓
└←←←←←← 结果反馈 ←←←←←←←←←←┘
```
---
## 🚀 已实现的功能
### 1⃣ 任务接收接口 ✅
#### API 端点
```
POST /api/task/receive # 接收天网下发的任务
POST /api/task/cancel # 取消任务
GET /api/task/status/:id # 查询任务状态
GET /api/task/list # 任务列表
GET /api/health # 健康检查
```
#### 任务数据结构
```json
{
"task_id": "TASK_20260226_001",
"type": "send_file_after_reply",
"customer": {
"name": "小明",
"id": "customer_123"
},
"trigger": {
"type": "customer_reply",
"keyword": "好的"
},
"action": {
"type": "send_file",
"file_url": "https://xxx.com/file.zip",
"message": "这是您要的文件"
},
"priority": "normal",
"timeout_hours": 24,
"created_by": "设计师 lz"
}
```
#### 返回格式
```json
{
"code": 200,
"message": "任务接收成功",
"data": {
"task_id": "TASK_20260226_001",
"status": "pending"
}
}
```
---
### 2⃣ 任务调度系统 ✅
#### 任务状态流转
```
pending → waiting → running → completed
failed
```
#### 功能特性
- ✅ 优先级队列urgent > high > normal
- ✅ 超时处理(默认 24 小时)
- ✅ 自动重试(最多 3 次)
- ✅ 状态持久化SQLite
- ✅ 天网回调通知
---
### 3⃣ 条件监听增强 ✅
#### 触发条件类型
```python
TRIGGER_TYPES = {
"customer_reply": "客户回复指定内容",
"customer_keyword": "客户说某关键词",
"customer_payment": "客户付款",
"customer_order": "客户下单",
"time_reach": "到达指定时间",
"custom_event": "自定义事件"
}
```
#### 触发流程
```
收到客户消息
检查是否有匹配的任务
触发任务执行
自动回复客户
```
---
### 4⃣ 文件/链接发送功能 🔄
- ✅ 消息发送(已实现)
- 🔄 文件发送(待接入轻简 API
- 🔄 链接发送(已实现为基础消息)
---
## 📁 项目结构
```
ai_customer_service/ai_cs/
├── db/task_db/
│ ├── task_model.py # 任务数据模型
│ └── tasks.db # SQLite 数据库
├── core/
│ ├── task_scheduler.py # 任务调度器
│ └── websocket_client.py # WebSocket 客户端(已增强)
├── api/
│ └── http_server.py # HTTP API 服务器
├── scripts/
│ └── multi_process_launcher.py
├── run_with_tianwang.py # 天网协作版启动器
└── TIANWANG_INTEGRATION.md # 本文档
```
---
## 🚀 使用方法
### 启动天网协作版
```bash
cd /root/ai_customer_service/ai_cs
# 方式 1使用专用启动器
python3 run_with_tianwang.py
# 方式 2使用 run.py未来整合
python3 run.py --tianwang
```
### API 调用示例
#### 1. 接收任务
```bash
curl -X POST http://localhost:5678/api/task/receive \
-H "Content-Type: application/json" \
-d '{
"task_id": "TASK_20260226_001",
"type": "send_file_after_reply",
"customer": {
"name": "小明",
"id": "customer_123"
},
"trigger": {
"type": "customer_reply",
"keyword": "好的"
},
"action": {
"type": "send_message",
"message": "这是您要的文件"
},
"priority": "normal",
"timeout_hours": 24,
"created_by": "设计师 lz"
}'
```
#### 2. 查询任务状态
```bash
curl http://localhost:5678/api/task/status/TASK_20260226_001
```
#### 3. 取消任务
```bash
curl -X POST http://localhost:5678/api/task/cancel \
-H "Content-Type: application/json" \
-d '{
"task_id": "TASK_20260226_001",
"reason": "客户已退款"
}'
```
---
## 📊 数据库表结构
```sql
CREATE TABLE tasks (
task_id TEXT PRIMARY KEY,
type TEXT NOT NULL,
customer_name TEXT,
customer_id TEXT,
trigger_type TEXT,
trigger_keyword TEXT,
trigger_keywords TEXT, -- JSON array
action_type TEXT,
action_file_url TEXT,
action_message TEXT,
priority TEXT DEFAULT 'normal',
timeout_hours INTEGER DEFAULT 24,
status TEXT DEFAULT 'pending',
retry_count INTEGER DEFAULT 0,
max_retry INTEGER DEFAULT 3,
created_at TEXT,
created_by TEXT,
triggered_at TEXT,
completed_at TEXT,
error_message TEXT,
result TEXT -- JSON
)
```
---
## 🔧 配置说明
### 环境变量
| 变量 | 说明 | 默认值 |
|------|------|--------|
| `HTTP_API_HOST` | HTTP 服务器地址 | 0.0.0.0 |
| `HTTP_API_PORT` | HTTP 服务器端口 | 5678 |
| `TASK_DB_PATH` | 任务数据库路径 | db/task_db/tasks.db |
### 天网回调配置
`core/task_scheduler.py` 中配置天网回调 URL
```python
async def _notify_tianwang(self, task_id: str, status: str, error: str = None):
async with httpx.AsyncClient() as client:
await client.post(
'http://tianwang-server/api/task/callback', # ← 修改这里
json={
'task_id': task_id,
'status': status,
'error': error,
'timestamp': datetime.now().isoformat()
}
)
```
---
## 📝 使用场景示例
### 场景 1客户说"好的"后发送文件
**天网下发任务**:
```json
{
"task_id": "TASK_001",
"type": "send_file_after_reply",
"customer": {"id": "customer_123"},
"trigger": {"type": "customer_reply", "keyword": "好的"},
"action": {
"type": "send_file",
"file_url": "https://xxx.com/file.zip",
"message": "这是您要的文件"
}
}
```
**流程**:
1. 客户在群里说"好的"
2. AI 客服检测到匹配任务
3. 自动发送文件给客户
4. 任务标记为 completed
---
### 场景 2客户付款后发送教程
**天网下发任务**:
```json
{
"task_id": "TASK_002",
"type": "send_tutorial_after_payment",
"customer": {"id": "customer_456"},
"trigger": {"type": "customer_payment"},
"action": {
"type": "send_message",
"message": "感谢购买!这是使用教程:..."
}
}
```
---
### 场景 3定时发送问候
**天网下发任务**:
```json
{
"task_id": "TASK_003",
"type": "send_greeting",
"customer": {"id": "customer_789"},
"trigger": {"type": "time_reach", "time": "2026-02-27 09:00:00"},
"action": {
"type": "send_message",
"message": "早上好!有什么可以帮您?"
}
}
```
---
## 🔍 监控与日志
### 查看任务日志
```bash
journalctl -u ai-cs -f | grep "任务"
```
### 查询数据库
```bash
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 task_id, error_message FROM tasks WHERE status='failed';
```
### 统计信息
```bash
curl http://localhost:5678/api/task/stats
```
---
## ⚠️ 注意事项
1. **HTTP 端口**: 默认 5678确保端口未被占用
2. **数据库路径**: 确保有写权限
3. **天网回调**: 需要配置正确的回调 URL
4. **任务超时**: 默认 24 小时,根据业务需求调整
5. **重试次数**: 默认 3 次,避免无限重试
---
## 🐛 故障排查
### 任务未触发
```bash
# 1. 检查任务状态
curl http://localhost:5678/api/task/status/TASK_ID
# 2. 查看日志
journalctl -u ai-cs -f | grep "任务触发"
# 3. 检查触发条件是否匹配
# 确认客户消息包含触发关键词
```
### HTTP API 无法访问
```bash
# 1. 检查端口
netstat -tlnp | grep 5678
# 2. 检查防火墙
firewall-cmd --list-ports
# 3. 重启服务
systemctl restart ai-cs
```
### 任务执行失败
```bash
# 1. 查看错误信息
curl http://localhost:5678/api/task/status/TASK_ID
# 2. 查看日志
journalctl -u ai-cs -f | grep "任务执行失败"
# 3. 手动重试
# 取消任务后重新下发
```
---
## 📞 技术支持
如有问题请联系:
- 文档:`/root/ai_customer_service/ai_cs/TIANWANG_INTEGRATION.md`
- 日志:`journalctl -u ai-cs -f`
- 数据库:`/root/ai_customer_service/ai_cs/db/task_db/tasks.db`