Files
011-ai-interview/coze-workflows/工作流分析.md
2026-01-23 13:57:48 +08:00

251 lines
8.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
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.
# Coze 工作流分析
> 分析 Consultant_interviewer 工作流与当前前后端架构的对应关系
---
## 一、工作流概览
| 属性 | 值 |
|------|-----|
| **工作流名称** | Consultant_interviewer |
| **工作流 ID** | 7595077233002840079 |
| **模式** | Chatflow对话流 |
| **描述** | 轻医美咨询师初试智能面试官 |
---
## 二、工作流核心节点
### 2.1 节点类型统计
| 节点类型 | 数量 | 说明 |
|----------|------|------|
| `start` | 1 | 开始节点 |
| `end` | 1 | 结束节点 |
| `llm` | 18 | 大模型调用节点 |
| `question` | 11 | 问答交互节点 |
| `loop` | 5 | 循环节点 |
| `condition` | 6 | 条件分支节点 |
| `code` | 2 | 代码执行节点 |
| `output` | 4 | 输出节点 |
| `select_record` | 2 | 数据库查询节点 |
| `plugin` | 1 | 插件节点(读取简历) |
### 2.2 面试阶段流程
```
开始
├─ 查询数据(检查 session_id 是否存在)
├─ 生成会话ID代码节点
├─ 条件分支:根据 current_stage 决定进入哪个阶段
│ ├─ stage < 20 → 信息收集阶段
│ ├─ stage >= 20 → 销售技能循环
│ ├─ stage >= 30 → 销售观循环
│ ├─ stage >= 40 → 素质项循环
│ └─ stage >= 50 → 求职动机识别
├─ 【阶段0】姓名收集 → 上传简历 → 读取简历 → 新增数据
├─ 【阶段1】打招呼、介绍面试流程
├─ 【阶段2】销售技能提问循环1轮
│ ├─ 销售技巧提问LLM
│ ├─ 问答(用户回复)
│ ├─ 追问LLM
│ ├─ 问答(用户回复)
│ └─ 新增数据(保存面试记录)
├─ 【阶段3】销售观提问循环1轮
│ ├─ 销售观提问LLM
│ ├─ 问答 → 追问 → 问答
│ └─ 新增数据
├─ 【阶段4】素质项提问循环1轮
│ ├─ 读取素质项侧重(数据库)
│ ├─ 素质项提问LLM
│ ├─ 问答 → 追问 → 问答
│ └─ 新增数据
├─ 【阶段5】求职动机识别循环1轮
│ ├─ 求职动机提问LLM
│ ├─ 问答 → 追问 → 问答
│ └─ 新增数据
├─ 【评分阶段】
│ ├─ 销售技能评分LLM
│ ├─ 销售观、服务观评分LLM
│ ├─ 素质项评分LLM
│ └─ 更新数据(保存评分结果)
├─ 【报告阶段】
│ ├─ 求职动机总结LLM
│ ├─ 未来发展规划LLM
│ ├─ 背调问题清单LLM
│ ├─ 直觉验证LLM
│ └─ 任用风险提示LLM
└─ 【反问阶段】回答面试者问题循环
├─ 意图识别
├─ 回答面试者问题LLM
└─ 终止循环判断
```
---
## 三、与当前架构的对应关系
### 3.1 前端需负责的部分
| 前端功能 | 工作流对应 | 当前状态 |
|----------|-----------|----------|
| 欢迎页 | 无 | ✅ 已有页面骨架 |
| 姓名输入 | `question` 节点 "姓名" | ✅ 已有 info.vue |
| 简历上传 | `question` 节点 "上传简历" → `plugin` "读取简历" | ✅ 已有上传逻辑 |
| 模拟来电 | 无(纯前端效果) | ✅ 已有 call.vue |
| 语音通话 | **整个对话流由 Coze RTC 处理** | ⚠️ 需对接 RTC SDK |
| 面试结束 | `end` 节点 | ✅ 已有 complete.vue |
### 3.2 后端需负责的部分
| 后端功能 | 工作流对应 | 当前状态 |
|----------|-----------|----------|
| 简历上传到 Coze | `POST /v1/files/upload` | ✅ 已实现 coze_service |
| 创建语音房间 | `POST /v1/audio/rooms` | ✅ 已实现 coze_service |
| 候选人数据查询 | 数据库节点 `select_record` | ⚠️ Coze 无 REST API |
| 候选人数据新增 | 数据库节点 `insert_record` | ⚠️ 由工作流自动处理 |
### 3.3 完全由 Coze 工作流处理的部分
以下功能**完全在 Coze 工作流内部完成**,前后端无需实现:
| 功能 | 工作流节点 |
|------|-----------|
| 打招呼、介绍面试流程 | LLM "打招呼、介绍面试流程" |
| 销售技能提问 | Loop "销售技能提问循环" |
| 销售观提问 | Loop "销售观提问循环" |
| 素质项提问 | Loop "素质项提问循环" |
| 求职动机识别 | Loop "求职动机识别提问循环" |
| 追问逻辑 | 各循环内的 "追问" LLM 节点 |
| 销售技能评分 | LLM "销售技能评分" |
| 销售观评分 | LLM "销售观、服务观评分" |
| 素质项评分 | LLM "素质项评分" |
| 求职动机总结 | LLM "求职动机总结" |
| 未来发展规划 | LLM "未来发展规划" |
| 背调问题清单 | LLM "背调问题清单" |
| 直觉验证 | LLM "直觉验证" |
| 任用风险提示 | LLM "任用风险提示" |
| 回答面试者问题 | Loop "回答面试者问题循环" |
| 面试记录保存 | 各 "新增数据" 节点 |
| 评分结果保存 | "更新数据" 节点 |
---
## 四、关键发现
### 4.1 ✅ 匹配的设计
1. **面试维度一致**:工作流的 4 维度(销售技能、销售观、素质项、求职动机)与 PRD 一致
2. **简历上传流程一致**:前端上传 → 后端调用 Coze API → 工作流解析
3. **语音房间创建**:后端调用 `POST /v1/audio/rooms` 创建房间,前端使用 RTC SDK 加入
### 4.2 ⚠️ 需调整的设计
#### 1数据库访问问题
**问题**Coze 数据库不提供直接的 REST API 查询接口
**影响**:管理后台的"候选人列表"、"候选人详情"功能无法直接实现
**解决方案**
| 方案 | 说明 | 推荐度 |
|------|------|--------|
| A | 工作流增加 Webhook 节点,面试结束后推送数据到后端 | ⭐⭐⭐ |
| B | 自建数据库SQLite/MySQL前端上传时同步写入 | ⭐⭐⭐ |
| C | 暂时搁置管理后台(当前选择) | ⭐⭐ |
#### 2会话断点续传
**工作流逻辑**
- 工作流通过 `current_stage` 字段记录面试进度10/20/30/40/50...
- 用户中途退出后,可通过 `session_id` 恢复进度
**前端需支持**
- 保存 `session_id` 到 localStorage
- 重新进入时检查是否有未完成的面试
#### 3环境变量补充
工作流中使用的数据库 ID 需要配置:
```bash
# 已有
COZE_BOT_ID=7595113005181386792
# 需补充(工作流中的数据库)
COZE_WORKFLOW_ID=7595077233002840079
COZE_DATABASE_ID=7595077053909712922
```
### 4.3 ❓ 待确认事项
| 问题 | 影响范围 | 建议 |
|------|---------|------|
| 工作流的 BOT_ID 与 WORKFLOW_ID 哪个用于创建房间? | 后端 API | 需测试确认 |
| 工作流是否支持传入 `session_id` 参数? | 断点续传 | 查看 start 节点 |
| `CONVERSATION_NAME` 参数的用途? | 会话隔离 | 可能是会话标识 |
---
## 五、开发优先级调整
基于工作流分析,建议调整开发重点:
### 5.1 优先完成(用户端)
1. ✅ 前端用户端 4 个页面
2. ✅ 后端 Coze API 封装(文件上传、房间创建)
3. ⚠️ 前端 RTC SDK 集成(核心功能)
4. ⚠️ 会话状态管理session_id 本地存储)
### 5.2 暂时搁置(管理后台)
由于 Coze 数据库无 REST API管理后台需等待以下方案之一落地
- 工作流添加 Webhook 推送
- 自建数据库方案
---
## 六、RTC 对接要点
根据工作流,语音通话的核心逻辑如下:
```
1. 后端调用 POST /v1/audio/rooms 创建房间
请求体:{ bot_id, user_id, voice_id? }
返回:{ room_id, token, app_id, uid }
2. 前端使用 @volcengine/rtc SDK 加入房间
- 使用返回的 token 进行鉴权
- 使用返回的 app_id、room_id、uid 加入房间
3. 语音对话
- 前端采集麦克风音频
- SDK 自动推送到 Coze 工作流
- 工作流处理后返回 AI 语音
4. 面试结束
- 工作流达到 end 节点
- 可能通过事件通知前端
```
---
## 变更日志
| 日期 | 内容 | 操作人 |
|------|------|--------|
| 2026-01-20 | 初始化工作流分析文档 | AI |