feat: 添加 AI Agent 对话测试工具 + 代码优化
主要变更: - 新增 tests/test_ai_chat.py: AI Agent 对话测试工具 - 优化 core/pydantic_ai_agent.py 和 db/chat_log_db.py - 清理归档文件,更新文档 Made-with: Cursor
This commit is contained in:
645
项目功能汇总.md
645
项目功能汇总.md
@@ -1,263 +1,447 @@
|
||||
# AI 客服系统 - 完整功能汇总
|
||||
|
||||
**版本**: v1.0
|
||||
**更新日期**: 2026-02-27
|
||||
**服务器**: 1.12.50.92
|
||||
**版本**: v1.0 | **更新日期**: 2026-02-28 | **服务器**: 1.12.50.92
|
||||
|
||||
---
|
||||
|
||||
## 📋 目录
|
||||
## 目录
|
||||
|
||||
1. [核心功能](#核心功能)
|
||||
2. [图片处理](#图片处理)
|
||||
3. [任务管理](#任务管理)
|
||||
4. [派单系统](#派单系统)
|
||||
5. [价格策略](#价格策略)
|
||||
6. [风险控制](#风险控制)
|
||||
7. [技术架构](#技术架构)
|
||||
1. [天网协作系统](#天网协作系统)
|
||||
2. [三种工作流](#三种工作流)
|
||||
3. [文字检测与加价](#文字检测与加价)
|
||||
4. [风险评估与接单判断](#风险评估与接单判断)
|
||||
5. [作图失败转接人工](#作图失败转接人工)
|
||||
6. [图片任务数据库](#图片任务数据库)
|
||||
7. [图绘派单系统](#图绘派单系统)
|
||||
8. [价格策略总览](#价格策略总览)
|
||||
9. [技术架构](#技术架构)
|
||||
|
||||
---
|
||||
|
||||
## 核心功能
|
||||
## 天网协作系统
|
||||
|
||||
### 1. 天网协作系统
|
||||
**说明**: 接收天网下发的任务,支持指定客户回复触发。
|
||||
|
||||
**说明**: 接收天网下发的任务,支持指定客户回复触发
|
||||
**API 地址**: `http://127.0.0.1:6060`
|
||||
|
||||
**API 接口**: `http://127.0.0.1:6060`
|
||||
**接口列表**:
|
||||
|
||||
**功能**:
|
||||
- ✅ 任务接收 (`POST /api/task/receive`)
|
||||
- ✅ 任务查询 (`GET /api/task/status/:id`)
|
||||
- ✅ 任务取消 (`POST /api/task/cancel`)
|
||||
- ✅ 任务列表 (`GET /api/task/list`)
|
||||
| 接口 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `/api/task/receive` | POST | 接收任务 |
|
||||
| `/api/task/status/:id` | GET | 查询任务状态 |
|
||||
| `/api/task/cancel` | POST | 取消任务 |
|
||||
| `/api/task/list` | GET | 任务列表 |
|
||||
| `/api/health` | GET | 健康检查 |
|
||||
|
||||
**触发类型**:
|
||||
- `specified_customer_reply` - 指定客户回复指定内容
|
||||
- `customer_keyword` - 任意客户说某关键词
|
||||
- `customer_payment` - 客户付款
|
||||
- `time_reach` - 到达指定时间
|
||||
|
||||
**文档**: `TIANWANG_INTEGRATION.md`
|
||||
| 类型 | 说明 |
|
||||
|------|------|
|
||||
| `specified_customer_reply` | 指定客户回复指定内容(推荐) |
|
||||
| `customer_reply` | 任意客户回复指定内容 |
|
||||
| `customer_keyword` | 任意客户说某关键词 |
|
||||
| `customer_payment` | 客户付款 |
|
||||
| `time_reach` | 到达指定时间 |
|
||||
|
||||
> 详细的 API 接口文档、请求示例、数据库结构等见 **部署文档.md**。
|
||||
|
||||
---
|
||||
|
||||
### 2. 三种工作流
|
||||
## 三种工作流
|
||||
|
||||
根据客户说的话自动判断执行不同工作流:
|
||||
根据客户说的话,自动判断执行不同的工作流程。
|
||||
|
||||
#### 工作流 1: 查找图片
|
||||
**触发词**: "找一下"、"找图"、"找原图"
|
||||
### 工作流 1:查找图片
|
||||
|
||||
**触发词**: "找一下"、"找图"、"找原图"、"帮我找"、"能找到吗"、"有吗"、"有没有"
|
||||
|
||||
**流程**:
|
||||
```
|
||||
客户:找一下这个图 [图片]
|
||||
↓
|
||||
AI 处理 → 上传到图绘
|
||||
↓
|
||||
回复:"找到了!http://tuhui.cloud/works/123"
|
||||
↓
|
||||
AI 检测到"找一下"关键词 → 执行查找图片工作流
|
||||
↓
|
||||
1. 创建任务(operation=find)
|
||||
2. 上传图片到图绘平台
|
||||
3. 更新任务状态为 completed
|
||||
↓
|
||||
AI: 找到了!图片在这里:http://tuhui.cloud/works/123
|
||||
```
|
||||
|
||||
#### 工作流 2: 处理图片
|
||||
**触发词**: "做一下"、"处理一下"、"安排"
|
||||
### 工作流 2:处理图片
|
||||
|
||||
**触发词**: "做一下"、"处理一下"、"安排"、"开始做"、"弄一下"、"修一下"、"P一下"、"P图"
|
||||
|
||||
**流程**:
|
||||
```
|
||||
客户:做一下 [图片]
|
||||
↓
|
||||
AI: "稍等,我看看...好的,可以做"
|
||||
↓
|
||||
启动图片处理流程
|
||||
↓
|
||||
AI 检测到"做一下"关键词 → 执行处理图片工作流
|
||||
↓
|
||||
1. 创建任务(operation=enhance)
|
||||
2. 回复"稍等,我看看...好的,可以做,马上处理"
|
||||
3. 启动图片处理流程
|
||||
↓
|
||||
AI: 做好了,请查看 [结果图]
|
||||
```
|
||||
|
||||
#### 工作流 3: 转人工派单
|
||||
**触发词**: "做不了"、"处理不了"
|
||||
### 工作流 3:转人工派单
|
||||
|
||||
**触发词**: "做不了"、"处理不了"、"弄不了"、"无法处理"、"做不到"、"搞不定"
|
||||
|
||||
**流程**:
|
||||
```
|
||||
AI: 做不了
|
||||
↓
|
||||
查询在线设计师
|
||||
↓
|
||||
派单给设计师
|
||||
↓
|
||||
回复:"已安排设计师处理"
|
||||
AI 判断无法处理 / 客户说"做不了"
|
||||
↓
|
||||
执行转人工派单工作流
|
||||
↓
|
||||
1. 创建任务(operation=manual)
|
||||
2. 查询在线设计师
|
||||
3. 有人在线 → 派单;无人 → 通知稍后联系
|
||||
↓
|
||||
AI: 好的,已帮您安排设计师处理,请稍候
|
||||
```
|
||||
|
||||
**文档**: `三种工作流功能说明.md`
|
||||
### 技术实现
|
||||
|
||||
| 组件 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| 工作流路由器 | `core/workflow_router.py` | 关键词检测与匹配 |
|
||||
| 工作流执行器 | `core/workflow.py` | 三种工作流的具体实现 |
|
||||
| 消息处理器 | `core/pydantic_ai_agent.py` | `_handle_image_workflow()` 方法 |
|
||||
|
||||
**注意事项**:
|
||||
- 关键词匹配支持多种说法,自动识别
|
||||
- 置信度 >0.9 才执行对应工作流
|
||||
- 无人在线时通知客户稍后联系,企业微信预警
|
||||
- 所有工作流都保存到数据库
|
||||
|
||||
---
|
||||
|
||||
## 图片处理
|
||||
## 文字检测与加价
|
||||
|
||||
### 1. 文字检测与加价
|
||||
AI 客服自动分析图片中的文字数量,根据文字数量和分层需求自动加价。
|
||||
|
||||
**功能**: AI 自动识别图片文字数量,根据文字数量加价
|
||||
|
||||
**价格规则**:
|
||||
### 文字数量加价
|
||||
|
||||
| 文字数量 | 加价 |
|
||||
|----------|------|
|
||||
| none | +0 元 |
|
||||
| 少量 (1-10 字) | +5 元 |
|
||||
| 中量 (11-50 字) | +15 元 |
|
||||
| 大量 (51-200 字) | +30 元 |
|
||||
| 极多 (200 字以上) | +50 元 |
|
||||
|
||||
**分层加价**:
|
||||
- 有文字 + 分层:+50 元起
|
||||
- 无文字 + 分层:+30 元
|
||||
### 文字分层需求加价
|
||||
|
||||
**特殊价格**: 文字分层 + 大量文字 → 60-80 元
|
||||
| 分层需求 | 加价 |
|
||||
|----------|------|
|
||||
| no | +0 元 |
|
||||
| yes(有文字)| +50 元起 |
|
||||
| yes(无文字)| +30 元 |
|
||||
|
||||
**文档**: `文字加价功能说明.md`
|
||||
### 特殊价格
|
||||
|
||||
---
|
||||
**条件**: 文字数量=大量/极多 且 分层需求=yes → **60-80 元**
|
||||
|
||||
### 2. 风险评估与接单判断
|
||||
### 使用场景
|
||||
|
||||
**风险等级**:
|
||||
- **敏感内容** (一票否决): 色情/暴力/涉政 → 直接拒绝
|
||||
- **none**: 印花/图案/logo → 直接接单
|
||||
- **low**: 有人脸但清晰 → 接单,说明风险
|
||||
- **high**: 严重模糊/老照片 → 谨慎接单
|
||||
**场景 1**: 少量文字,不分层
|
||||
- 复杂度 simple + 少量文字 → 15 + 5 = **20 元**
|
||||
- AI: "这张图比较简单,不过有少量文字需要处理,20 元。"
|
||||
|
||||
**可做判断**:
|
||||
- `yes`: 效果有把握,接单
|
||||
- `partial`: 有限制,谨慎接单
|
||||
- `no`: 无法处理,不接单
|
||||
**场景 2**: 大量文字,需要分层
|
||||
- 复杂度 complex + 大量文字 + 分层 → 调整到 **80 元**
|
||||
- AI: "这张图文字比较多,有 100 多字,需要分层文件,80 元。"
|
||||
|
||||
**文档**: `风险评估功能说明.md`
|
||||
### 价格计算流程
|
||||
|
||||
---
|
||||
|
||||
### 3. 作图失败转接人工
|
||||
|
||||
**触发条件**:
|
||||
- API 调用失败
|
||||
- 图片处理超时
|
||||
- 客户不满意
|
||||
|
||||
**流程**:
|
||||
```
|
||||
作图失败
|
||||
↓
|
||||
通知客户
|
||||
↓
|
||||
转接人工客服
|
||||
↓
|
||||
企业微信预警
|
||||
客户发送图片 → 判断基础复杂度 → 检测文字数量 → 询问分层需求
|
||||
→ 计算总价(基础+文字+分层)→ 特殊价格处理(60-80 元)→ 报价
|
||||
```
|
||||
|
||||
**文档**: `作图失败转接人工说明.md`
|
||||
### 配置位置
|
||||
|
||||
修改价格规则: `image/image_analyzer.py`(查找文字加价相关代码)
|
||||
|
||||
**注意事项**:
|
||||
- 文字数量通过视觉 AI 自动识别
|
||||
- 分层需求需从对话中识别
|
||||
- 最终价格必须是 5 的倍数
|
||||
|
||||
---
|
||||
|
||||
## 任务管理
|
||||
## 风险评估与接单判断
|
||||
|
||||
### 1. 图片任务数据库
|
||||
AI 客服自动分析图片风险,判断是否可以接单。
|
||||
|
||||
**功能**: 任务持久化,支持客户后续增加需求
|
||||
### 敏感内容检测(一票否决)
|
||||
|
||||
**数据库表**:
|
||||
- `image_tasks` - 图片任务表
|
||||
- `task_requirement_changes` - 需求变更表
|
||||
**敏感内容 = yes → 直接拒绝,不接单**
|
||||
|
||||
检测内容: 色情/黄色/擦边/裸露、性暗示、涉政/政治敏感、暴力/血腥、违禁品
|
||||
|
||||
**话术**: "这类不做哦" / "不好意思,这个接不了"
|
||||
|
||||
**禁止说**: "发图来看看"、过多解释
|
||||
|
||||
### 风险等级
|
||||
|
||||
| 风险 | 是否接单 | 说明 |
|
||||
|------|----------|------|
|
||||
| **none** | ✅ 接单 | 印花/图案/logo/风景/产品,效果稳定 |
|
||||
| **low** | ✅ 接单 | 有人脸但清晰,需说明风险(相似度 70-90%)|
|
||||
| **high** | ⚠️ 谨慎 | 严重模糊/老照片人像/需打印,需说明限制 |
|
||||
|
||||
### 可做判断
|
||||
|
||||
| 可做 | 是否接单 | 说明 |
|
||||
|------|----------|------|
|
||||
| **yes** | ✅ 接单 | 效果有把握 |
|
||||
| **partial** | ⚠️ 可接 | 能处理但有限制,需说明风险 |
|
||||
| **no** | ❌ 不接 | 无法处理(纯黑/纯白/完全损坏/敏感内容)|
|
||||
|
||||
### 分析流程
|
||||
|
||||
```
|
||||
客户发送图片 → 敏感内容检测(yes→拒绝)→ 风险评估(none/low/high)
|
||||
→ 可做判断(yes/partial/no)→ 决策(接单/谨慎/拒绝)→ 回复客户
|
||||
```
|
||||
|
||||
### 话术模板
|
||||
|
||||
**高风险提示**:
|
||||
- "这张比较模糊,修复后清晰了但人脸可能跟原来有差异"
|
||||
- "老照片修复后人脸可能有轻微变化"
|
||||
- "建议先看效果确认再打印"
|
||||
|
||||
**正常接单**:
|
||||
- "这个没问题,XX 元"
|
||||
- "可以处理,XX 元,满意再付"
|
||||
|
||||
### 配置位置
|
||||
|
||||
- 风险判断规则: `image/image_analyzer.py`(查找"风险评估""敏感内容检测")
|
||||
- 拒绝话术: `core/pydantic_ai_agent.py`(查找"拒绝")
|
||||
|
||||
---
|
||||
|
||||
## 作图失败转接人工
|
||||
|
||||
当 AI 作图失败或效果不佳时,系统自动转接人工客服。
|
||||
|
||||
### 触发场景
|
||||
|
||||
| 场景 | 触发条件 | 话术 |
|
||||
|------|----------|------|
|
||||
| AI 作图失败 | API 报错/超时/质量不达标 | "处理遇到点问题,我帮您转接人工" |
|
||||
| 客户不满意 | 说"效果不好"/"不满意"/要求重做 | "好的,我帮您转接人工客服处理" |
|
||||
| 特殊要求 | AI 无法处理的复杂需求 | "这个需求比较特殊,帮您转接人工" |
|
||||
|
||||
### 转接流程
|
||||
|
||||
```
|
||||
作图失败/客户不满意 → 通知客户 → 转接人工客服 → 企业微信预警
|
||||
```
|
||||
|
||||
### 技术实现
|
||||
|
||||
- 失败检测: `core/pydantic_ai_agent.py` 中的 `process_image_gemini` 函数
|
||||
- 转接工具: `transfer_to_human` tool(标记 `need_transfer=True`)
|
||||
|
||||
**注意事项**:
|
||||
- 作图失败必须转人工,不自动重试超过 2 次
|
||||
- 转接前告知客户原因
|
||||
- 记录转接原因便于后续优化
|
||||
|
||||
---
|
||||
|
||||
## 图片任务数据库
|
||||
|
||||
图片任务保存到 SQLite 数据库,支持持久化和需求变更。
|
||||
|
||||
### 数据库表
|
||||
|
||||
**image_tasks(图片任务表)**:
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| task_id | TEXT | 任务 ID(主键)|
|
||||
| customer_id | TEXT | 客户 ID |
|
||||
| original_image | TEXT | 原图 URL |
|
||||
| operation | TEXT | 操作类型(enhance/remove_bg/vectorize)|
|
||||
| requirements | TEXT | 需求 JSON |
|
||||
| customer_notes | TEXT | 客户备注/需求细节 |
|
||||
| status | TEXT | 状态 |
|
||||
| result_image | TEXT | 结果图 URL |
|
||||
| error_message | TEXT | 错误信息 |
|
||||
| retry_count | INTEGER | 重试次数 |
|
||||
| acc_id / acc_type | TEXT | 店铺 ID / 平台类型 |
|
||||
| created_at / paid_at / completed_at | TEXT | 时间戳 |
|
||||
|
||||
**task_requirement_changes(需求变更表)**:
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| task_id | TEXT | 任务 ID(外键)|
|
||||
| change_type | TEXT | 变更类型(add_note/modify_operation/add_requirement)|
|
||||
| old_value / new_value | TEXT | 变更前后值 |
|
||||
| changed_at | TEXT | 变更时间 |
|
||||
| changed_by | TEXT | 变更者(customer/staff)|
|
||||
|
||||
### 任务状态流转
|
||||
|
||||
```
|
||||
pending(待付款)→ paid(已付款)→ processing(处理中)→ awaiting_confirm(待确认)→ completed(已完成)
|
||||
↘ failed(失败)
|
||||
```
|
||||
|
||||
### API 接口
|
||||
|
||||
**客户可以增加需求**:
|
||||
```python
|
||||
await workflow.add_customer_requirement(
|
||||
task_id="TASK_001",
|
||||
customer_id="customer_123",
|
||||
requirement="需要去掉背景"
|
||||
# 创建任务
|
||||
workflow.create_image_task(customer_id, original_image, operation)
|
||||
|
||||
# 添加需求
|
||||
await workflow.add_customer_requirement(task_id, customer_id, requirement)
|
||||
|
||||
# 修改操作类型
|
||||
await workflow.modify_operation(task_id, customer_id, new_operation)
|
||||
|
||||
# 查询任务
|
||||
task = workflow.get_task(task_id)
|
||||
tasks = workflow.get_customer_tasks(customer_id)
|
||||
|
||||
# 查询需求变更历史
|
||||
history = workflow.get_task_requirement_history(task_id)
|
||||
```
|
||||
|
||||
### 数据库操作
|
||||
|
||||
```bash
|
||||
sqlite3 /root/ai_customer_service/ai_cs/db/image_tasks.db
|
||||
|
||||
# 查询所有任务
|
||||
SELECT task_id, customer_id, status, created_at FROM image_tasks ORDER BY created_at DESC LIMIT 10;
|
||||
|
||||
# 查询待处理任务
|
||||
SELECT * FROM image_tasks WHERE status='pending';
|
||||
|
||||
# 查询需求变更
|
||||
SELECT task_id, change_type, old_value, new_value, changed_at FROM task_requirement_changes WHERE task_id='TASK_001';
|
||||
```
|
||||
|
||||
**注意事项**:
|
||||
- 所有任务自动保存,重启不丢失
|
||||
- 付款前可修改操作类型,付款后不允许
|
||||
- 所有变更都有历史记录
|
||||
|
||||
---
|
||||
|
||||
## 图绘派单系统
|
||||
|
||||
AI 客服系统接入图绘派单系统 API,实现自动派单给在线设计师。
|
||||
|
||||
### API 信息
|
||||
|
||||
| 项目 | 值 |
|
||||
|------|------|
|
||||
| API 地址 | `http://1.12.50.92:8005` |
|
||||
| API Key | `tuhui_dispatch_key_2026` |
|
||||
| 认证方式 | Header: `X-API-Key` |
|
||||
|
||||
### 核心接口
|
||||
|
||||
| 接口 | 方法 | 说明 |
|
||||
|------|------|------|
|
||||
| `/dispatch/queue` | GET | 获取派单队列 |
|
||||
| `/online/designers` | GET | 获取在线设计师 |
|
||||
| `/tasks` | POST | 创建任务 |
|
||||
| `/tasks/{id}/assign` | POST | 分配任务 |
|
||||
| `/tasks/{id}` | GET | 查询任务状态 |
|
||||
| `/tasks/{id}/complete` | POST | 完成任务 |
|
||||
|
||||
### 转人工派单流程
|
||||
|
||||
```
|
||||
AI 判断做不了
|
||||
↓
|
||||
1. 查询在线设计师 → GET /online/designers → ["橘子", "婷婷"]
|
||||
↓
|
||||
2. 创建派单任务 → POST /tasks → {"task_id": "ea853bd9"}
|
||||
↓
|
||||
3. 分配给设计师 → POST /tasks/ea853bd9/assign → {"designer_name": "橘子"}
|
||||
↓
|
||||
4. 企业微信通知设计师
|
||||
↓
|
||||
5. 回复客户:"好的,已帮您安排设计师处理,请稍候"
|
||||
```
|
||||
|
||||
### 代码调用示例
|
||||
|
||||
```python
|
||||
from services.service_tuhui_dispatch import get_tuhui_dispatch_client
|
||||
|
||||
client = get_tuhui_dispatch_client()
|
||||
|
||||
# 查询在线设计师
|
||||
designers = await client.get_online_designers() # ["橘子", "婷婷"]
|
||||
|
||||
# 创建任务
|
||||
task_id = await client.create_task(
|
||||
task_name="图片处理-1234",
|
||||
description="客户需要做高清修复",
|
||||
task_type="image_process",
|
||||
priority=2
|
||||
)
|
||||
|
||||
# 分配任务
|
||||
await client.assign_task(task_id, designer_name="橘子", notes="AI 客服自动派单")
|
||||
|
||||
# 完成任务
|
||||
await client.complete_task(task_id, notes="客户已确认")
|
||||
```
|
||||
|
||||
**任务状态流转**:
|
||||
### 设计师在线状态 API
|
||||
|
||||
```
|
||||
pending → paid → processing → awaiting_confirm → completed
|
||||
GET http://huichang.online:8001/online # 查询在线设计师
|
||||
POST http://huichang.online:8001/update-status # 更新设计师状态
|
||||
```
|
||||
|
||||
**文档**: `图片任务数据库功能说明.md`
|
||||
### 相关代码位置
|
||||
|
||||
| 组件 | 文件 |
|
||||
|------|------|
|
||||
| 派单客户端 | `services/service_tuhui_dispatch.py`(`TuhuiDispatchClient` 类)|
|
||||
| 工作流集成 | `core/workflow.py`(`transfer_to_designer_workflow()` 方法)|
|
||||
|
||||
---
|
||||
|
||||
## 派单系统
|
||||
|
||||
### 1. 图绘派单系统
|
||||
|
||||
**API 地址**: `http://1.12.50.92:8005`
|
||||
**API Key**: `tuhui_dispatch_key_2026`
|
||||
|
||||
**核心接口**:
|
||||
- `GET /dispatch/queue` - 获取派单队列
|
||||
- `GET /online/designers` - 查询在线设计师
|
||||
- `POST /tasks` - 创建任务
|
||||
- `POST /tasks/{id}/assign` - 分配任务
|
||||
- `POST /tasks/{id}/complete` - 完成任务
|
||||
|
||||
**派单流程**:
|
||||
```
|
||||
1. 查询在线设计师 → ["橘子", "婷婷"]
|
||||
2. 创建任务 → {"task_id": "ea853bd9"}
|
||||
3. 分配给设计师 → designer: "橘子"
|
||||
4. 企业微信通知
|
||||
5. 回复客户
|
||||
```
|
||||
|
||||
**文档**: `图绘派单系统集成说明.md`
|
||||
|
||||
---
|
||||
|
||||
## 价格策略
|
||||
## 价格策略总览
|
||||
|
||||
### 基础价格
|
||||
|
||||
| 复杂度 | 价格 |
|
||||
|--------|------|
|
||||
| simple | 10-15 元 |
|
||||
| normal | 15-20 元 |
|
||||
| complex | 20-25 元 |
|
||||
| hard | 25-30 元 |
|
||||
| 复杂度 | 价格区间 | 说明 |
|
||||
|--------|----------|------|
|
||||
| simple | 10-15 元 | 画面简单干净 |
|
||||
| normal | 15-20 元 | 一般复杂度 |
|
||||
| complex | 20-25 元 | 细节偏多 |
|
||||
| hard | 25-30 元 | 非常复杂 |
|
||||
|
||||
### 加价规则
|
||||
|
||||
**文字加价**:
|
||||
- 少量:+5 元
|
||||
- 中量:+15 元
|
||||
- 大量:+30 元
|
||||
- 极多:+50 元
|
||||
| 项目 | 条件 | 加价 |
|
||||
|------|------|------|
|
||||
| 文字少量 | 1-10 字 | +5 元 |
|
||||
| 文字中量 | 11-50 字 | +15 元 |
|
||||
| 文字大量 | 51-200 字 | +30 元 |
|
||||
| 文字极多 | 200+ 字 | +50 元 |
|
||||
| 分层(有文字)| 需要 PSD 分层 | +50 元起 |
|
||||
| 分层(无文字)| 仅需分层 | +30 元 |
|
||||
|
||||
**分层加价**:
|
||||
- 有文字:+50 元起
|
||||
- 无文字:+30 元
|
||||
### 高价值订单
|
||||
|
||||
**高价值订单**: 文字分层 + 大量文字 → 60-80 元
|
||||
|
||||
---
|
||||
|
||||
## 风险控制
|
||||
|
||||
### 敏感内容检测
|
||||
|
||||
**一票否决**:
|
||||
- ❌ 色情/黄色/擦边
|
||||
- ❌ 涉政/政治敏感
|
||||
- ❌ 暴力/血腥
|
||||
- ❌ 违禁品
|
||||
|
||||
**话术**:
|
||||
- "这类不做哦"
|
||||
- "不好意思,这个接不了"
|
||||
|
||||
### 高风险图片
|
||||
|
||||
**谨慎接单**:
|
||||
- ⚠️ 严重模糊的人脸
|
||||
- ⚠️ 老照片人像
|
||||
- ⚠️ 需要打印
|
||||
|
||||
**话术**:
|
||||
- "这张比较模糊,修复后人脸可能有差异"
|
||||
- "建议先看效果确认再决定"
|
||||
**文字分层 + 大量文字** → 特殊价格 **60-80 元**(封顶)
|
||||
|
||||
---
|
||||
|
||||
@@ -267,107 +451,26 @@ pending → paid → processing → awaiting_confirm → completed
|
||||
|
||||
| 组件 | 文件 | 说明 |
|
||||
|------|------|------|
|
||||
| **天网协作** | `api/http_server.py` | HTTP API 服务器 |
|
||||
| **工作流程** | `core/workflow.py` | 工作流执行器 |
|
||||
| **AI Agent** | `core/pydantic_ai_agent.py` | AI 对话引擎 |
|
||||
| **图片分析** | `image/image_analyzer.py` | 图片复杂度识别 |
|
||||
| **派单客户端** | `services/service_tuhui_dispatch.py` | 图绘派单 API |
|
||||
| **任务数据库** | `db/image_tasks_db.py` | 任务持久化 |
|
||||
| 天网协作 | `api/http_server.py` | HTTP API 服务器 |
|
||||
| 工作流程 | `core/workflow.py` | 工作流执行器 |
|
||||
| AI Agent | `core/pydantic_ai_agent.py` | AI 对话引擎 |
|
||||
| 图片分析 | `image/image_analyzer.py` | 图片复杂度识别 |
|
||||
| 派单客户端 | `services/service_tuhui_dispatch.py` | 图绘派单 API |
|
||||
| 任务数据库 | `db/image_tasks_db.py` | 任务持久化 |
|
||||
|
||||
### 数据库
|
||||
|
||||
| 数据库 | 文件 | 说明 |
|
||||
| 数据库 | 位置 | 说明 |
|
||||
|--------|------|------|
|
||||
| **任务数据库** | `db/image_tasks.db` | 图片任务 |
|
||||
| **客户档案** | `customer_db/customer.db` | 客户画像 |
|
||||
| **聊天记录** | `chat_log_db/chat_log.db` | 聊天历史 |
|
||||
| 任务数据库 | `db/image_tasks.db` | 图片任务 |
|
||||
| 客户档案 | `db/customer.db` | 客户画像 |
|
||||
| 聊天记录 | `chat_log_db/chat_log.db` | 聊天历史 |
|
||||
| 天网任务 | `db/task_db/tasks.db` | 天网任务调度 |
|
||||
|
||||
### API 端口
|
||||
|
||||
| 服务 | 端口 | 说明 |
|
||||
|------|------|------|
|
||||
| **AI 客服 API** | 6060 | 天网任务接收 |
|
||||
| **派单系统** | 8005 | 设计师派单 |
|
||||
| **图绘平台** | 8002 | 图片上传 |
|
||||
|
||||
---
|
||||
|
||||
## 部署说明
|
||||
|
||||
### 启动方式
|
||||
|
||||
```bash
|
||||
cd /root/ai_customer_service/ai_cs
|
||||
|
||||
# 方式 1: 天网协作版
|
||||
python3 run_tianwang_simple.py
|
||||
|
||||
# 方式 2: 完整版
|
||||
python3 run_with_tianwang.py
|
||||
|
||||
# 方式 3: AI 客服
|
||||
python3 run.py
|
||||
```
|
||||
|
||||
### 后台运行
|
||||
|
||||
```bash
|
||||
nohup python3 run_tianwang_simple.py > /tmp/tianwang.log 2>&1 &
|
||||
```
|
||||
|
||||
### 查看日志
|
||||
|
||||
```bash
|
||||
tail -f /tmp/tianwang.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 文档清单
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| `README.md` | 项目说明 |
|
||||
| `DEPLOYMENT.md` | 部署文档 |
|
||||
| `TIANWANG_INTEGRATION.md` | 天网协作 |
|
||||
| `三种工作流功能说明.md` | 工作流 |
|
||||
| `文字加价功能说明.md` | 价格策略 |
|
||||
| `风险评估功能说明.md` | 风险控制 |
|
||||
| `图片任务数据库功能说明.md` | 任务管理 |
|
||||
| `图绘派单系统集成说明.md` | 派单系统 |
|
||||
| `作图失败转接人工说明.md` | 失败处理 |
|
||||
|
||||
---
|
||||
|
||||
## 快速参考
|
||||
|
||||
### API 调用示例
|
||||
|
||||
**接收天网任务**:
|
||||
```bash
|
||||
curl -X POST http://localhost:6060/api/task/receive \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"task_id": "TASK_001",
|
||||
"customer": {"id": "customer_123"},
|
||||
"trigger": {"type": "customer_reply", "keyword": "好的"},
|
||||
"action": {"type": "send_message", "message": "您好"}
|
||||
}'
|
||||
```
|
||||
|
||||
**查询在线设计师**:
|
||||
```bash
|
||||
curl -X GET "http://1.12.50.92:8005/online/designers" \
|
||||
-H "X-API-Key: tuhui_dispatch_key_2026"
|
||||
```
|
||||
|
||||
**派单队列**:
|
||||
```bash
|
||||
curl -X GET "http://1.12.50.92:8005/dispatch/queue" \
|
||||
-H "X-API-Key: tuhui_dispatch_key_2026"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**完整功能已部署,所有系统运行正常!** 🎉
|
||||
|
||||
| AI 客服 API | 6060 | 天网任务接收 |
|
||||
| 派单系统 | 8005 | 设计师派单 |
|
||||
| 图绘平台 | 8002 | 图片上传 |
|
||||
|
||||
Reference in New Issue
Block a user