# AI 客服系统 - 完整功能汇总 **版本**: v1.0 | **更新日期**: 2026-02-28 | **服务器**: 1.12.50.92 --- ## 目录 1. [天网协作系统](#天网协作系统) 2. [三种工作流](#三种工作流) 3. [文字检测与加价](#文字检测与加价) 4. [风险评估与接单判断](#风险评估与接单判断) 5. [作图失败转接人工](#作图失败转接人工) 6. [图片任务数据库](#图片任务数据库) 7. [图绘派单系统](#图绘派单系统) 8. [价格策略总览](#价格策略总览) 9. [技术架构](#技术架构) --- ## 天网协作系统 **说明**: 接收天网下发的任务,支持指定客户回复触发。 **API 地址**: `http://127.0.0.1:6060` **接口列表**: | 接口 | 方法 | 说明 | |------|------|------| | `/api/task/receive` | POST | 接收任务 | | `/api/task/status/:id` | GET | 查询任务状态 | | `/api/task/cancel` | POST | 取消任务 | | `/api/task/list` | GET | 任务列表 | | `/api/health` | GET | 健康检查 | **触发类型**: | 类型 | 说明 | |------|------| | `specified_customer_reply` | 指定客户回复指定内容(推荐) | | `customer_reply` | 任意客户回复指定内容 | | `customer_keyword` | 任意客户说某关键词 | | `customer_payment` | 客户付款 | | `time_reach` | 到达指定时间 | > 详细的 API 接口文档、请求示例、数据库结构等见 **部署文档.md**。 --- ## 三种工作流 根据客户说的话,自动判断执行不同的工作流程。 ### 工作流 1:查找图片 **触发词**: "找一下"、"找图"、"找原图"、"帮我找"、"能找到吗"、"有吗"、"有没有" ``` 客户:找一下这个图 [图片] ↓ AI 检测到"找一下"关键词 → 执行查找图片工作流 ↓ 1. 创建任务(operation=find) 2. 上传图片到图绘平台 3. 更新任务状态为 completed ↓ AI: 找到了!图片在这里:http://tuhui.cloud/works/123 ``` ### 工作流 2:处理图片 **触发词**: "做一下"、"处理一下"、"安排"、"开始做"、"弄一下"、"修一下"、"P一下"、"P图" ``` 客户:做一下 [图片] ↓ AI 检测到"做一下"关键词 → 执行处理图片工作流 ↓ 1. 创建任务(operation=enhance) 2. 回复"稍等,我看看...好的,可以做,马上处理" 3. 启动图片处理流程 ↓ AI: 做好了,请查看 [结果图] ``` ### 工作流 3:转人工派单 **触发词**: "做不了"、"处理不了"、"弄不了"、"无法处理"、"做不到"、"搞不定" ``` AI 判断无法处理 / 客户说"做不了" ↓ 执行转人工派单工作流 ↓ 1. 创建任务(operation=manual) 2. 查询在线设计师 3. 有人在线 → 派单;无人 → 通知稍后联系 ↓ AI: 好的,已帮您安排设计师处理,请稍候 ``` ### 技术实现 | 组件 | 文件 | 说明 | |------|------|------| | 工作流路由器 | `core/workflow_router.py` | 关键词检测与匹配 | | 工作流执行器 | `core/workflow.py` | 三种工作流的具体实现 | | 消息处理器 | `core/pydantic_ai_agent.py` | `_handle_image_workflow()` 方法 | **注意事项**: - 关键词匹配支持多种说法,自动识别 - 置信度 >0.9 才执行对应工作流 - 无人在线时通知客户稍后联系,企业微信预警 - 所有工作流都保存到数据库 --- ## 文字检测与加价 AI 客服自动分析图片中的文字数量,根据文字数量和分层需求自动加价。 ### 文字数量加价 | 文字数量 | 加价 | |----------|------| | none | +0 元 | | 少量 (1-10 字) | +5 元 | | 中量 (11-50 字) | +15 元 | | 大量 (51-200 字) | +30 元 | | 极多 (200 字以上) | +50 元 | ### 文字分层需求加价 | 分层需求 | 加价 | |----------|------| | no | +0 元 | | yes(有文字)| +50 元起 | | yes(无文字)| +30 元 | ### 特殊价格 **条件**: 文字数量=大量/极多 且 分层需求=yes → **60-80 元** ### 使用场景 **场景 1**: 少量文字,不分层 - 复杂度 simple + 少量文字 → 15 + 5 = **20 元** - AI: "这张图比较简单,不过有少量文字需要处理,20 元。" **场景 2**: 大量文字,需要分层 - 复杂度 complex + 大量文字 + 分层 → 调整到 **80 元** - AI: "这张图文字比较多,有 100 多字,需要分层文件,80 元。" ### 价格计算流程 ``` 客户发送图片 → 判断基础复杂度 → 检测文字数量 → 询问分层需求 → 计算总价(基础+文字+分层)→ 特殊价格处理(60-80 元)→ 报价 ``` ### 配置位置 修改价格规则: `image/image_analyzer.py`(查找文字加价相关代码) **注意事项**: - 文字数量通过视觉 AI 自动识别 - 分层需求需从对话中识别 - 最终价格必须是 5 的倍数 --- ## 风险评估与接单判断 AI 客服自动分析图片风险,判断是否可以接单。 ### 敏感内容检测(一票否决) **敏感内容 = 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 # 创建任务 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 ``` GET http://huichang.online:8001/online # 查询在线设计师 POST http://huichang.online:8001/update-status # 更新设计师状态 ``` ### 相关代码位置 | 组件 | 文件 | |------|------| | 派单客户端 | `services/service_tuhui_dispatch.py`(`TuhuiDispatchClient` 类)| | 工作流集成 | `core/workflow.py`(`transfer_to_designer_workflow()` 方法)| --- ## 价格策略总览 ### 基础价格 | 复杂度 | 价格区间 | 说明 | |--------|----------|------| | simple | 10-15 元 | 画面简单干净 | | normal | 15-20 元 | 一般复杂度 | | complex | 20-25 元 | 细节偏多 | | hard | 25-30 元 | 非常复杂 | ### 加价规则 | 项目 | 条件 | 加价 | |------|------|------| | 文字少量 | 1-10 字 | +5 元 | | 文字中量 | 11-50 字 | +15 元 | | 文字大量 | 51-200 字 | +30 元 | | 文字极多 | 200+ 字 | +50 元 | | 分层(有文字)| 需要 PSD 分层 | +50 元起 | | 分层(无文字)| 仅需分层 | +30 元 | ### 高价值订单 **文字分层 + 大量文字** → 特殊价格 **60-80 元**(封顶) --- ## 技术架构 ### 核心组件 | 组件 | 文件 | 说明 | |------|------|------| | 天网协作 | `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` | 图片任务 | | 客户档案 | `db/customer.db` | 客户画像 | | 聊天记录 | `chat_log_db/chat_log.db` | 聊天历史 | | 天网任务 | `db/task_db/tasks.db` | 天网任务调度 | ### API 端口 | 服务 | 端口 | 说明 | |------|------|------| | AI 客服 API | 6060 | 天网任务接收 | | 派单系统 | 8005 | 设计师派单 | | 图绘平台 | 8002 | 图片上传 |