Initial commit: AI Interview System
This commit is contained in:
174
docs/项目进度总结-20260121-final.md
Normal file
174
docs/项目进度总结-20260121-final.md
Normal file
@@ -0,0 +1,174 @@
|
||||
# AI 语音面试系统 - 项目进度总结
|
||||
|
||||
> 更新日期: 2026-01-21
|
||||
|
||||
## 一、项目概述
|
||||
|
||||
**项目名称**: AI 语音面试系统 (轻医美行业)
|
||||
**项目周期**: 2026-01 至今
|
||||
**当前状态**: 🟡 开发中 (核心功能已完成,语音模式待优化)
|
||||
|
||||
## 二、已完成功能
|
||||
|
||||
### 2.1 用户端 (前端)
|
||||
|
||||
| 功能 | 状态 | 说明 |
|
||||
|------|------|------|
|
||||
| 欢迎页面 | ✅ | 品牌展示、开始面试入口 |
|
||||
| 信息采集 | ✅ | 姓名输入、简历 PDF 上传 |
|
||||
| 面试初始化 | ✅ | 调用 Workflow A 生成 session_id |
|
||||
| 文字面试模式 | ✅ | 基于 /v3/chat API 的文字对话 |
|
||||
| 语音面试模式 | 🟡 | RTC 连接正常,session_id 传递待优化 |
|
||||
| 调试面板 | ✅ | 显示 session_id、API 响应、错误信息 |
|
||||
|
||||
### 2.2 管理后台
|
||||
|
||||
| 功能 | 状态 | 说明 |
|
||||
|------|------|------|
|
||||
| 登录页面 | ✅ | 账号密码认证 |
|
||||
| 数据概览 | ✅ | 统计卡片、匹配度分布、状态饼图、排行榜 |
|
||||
| 面试列表 | ✅ | 搜索、筛选、分页、阶段标签 |
|
||||
| 面试详情 | ✅ | 匹配度圆环、维度评分、风险分析、对话记录 |
|
||||
| 骨架屏加载 | ✅ | 优化加载体验,替代 v-loading 遮罩 |
|
||||
|
||||
### 2.3 后端服务
|
||||
|
||||
| 功能 | 状态 | 说明 |
|
||||
|------|------|------|
|
||||
| 文件上传 | ✅ | 支持 PDF,上传到自建文件服务器 |
|
||||
| 面试初始化 API | ✅ | 调用 Workflow A,返回 session_id |
|
||||
| 文字聊天 API | ✅ | 调用 /v3/chat,支持多轮对话 |
|
||||
| 语音房间 API | ✅ | 调用 /v1/audio/rooms 创建 RTC 房间 |
|
||||
| 管理后台 API | ✅ | 通过 Workflow C 查询 Coze 数据库 |
|
||||
|
||||
### 2.4 Coze 工作流
|
||||
|
||||
| 工作流 | ID | 功能 |
|
||||
|--------|-----|------|
|
||||
| Workflow A | 7597357422713798710 | 面试初始化:接收 name + file_url,解析简历,生成 session_id |
|
||||
| Workflow B | 7595077233002840079 | 面试主流程:4 维度提问、评分、生成报告 |
|
||||
| Workflow C | 7597376294612107318 | 数据查询:接收 table + sql,执行增删改查 |
|
||||
|
||||
### 2.5 基础设施
|
||||
|
||||
| 组件 | 状态 | 说明 |
|
||||
|------|------|------|
|
||||
| 自建文件服务器 | ✅ | Nginx + PHP,域名 files.test.ai.ireborn.com.cn |
|
||||
| Coze 数据库 | ✅ | ci_interview_assessments, ci_interview_logs, ci_business_config |
|
||||
|
||||
## 三、技术架构
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 用户端 │
|
||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
||||
│ │ 欢迎页面 │→│ 信息采集 │→│ 面试页面 │ │
|
||||
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
||||
│ ↓ ↓ │
|
||||
│ 文件上传 语音/文字模式 │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
↓ ↓
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ FastAPI 后端 │
|
||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
||||
│ │ /init-interview │ /api/chat │ /api/room │ │
|
||||
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
↓
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ Coze 平台 │
|
||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
||||
│ │ Workflow A │ │ Workflow B │ │ Workflow C │ │
|
||||
│ │ (初始化) │ │ (面试主流程) │ │ (数据查询) │ │
|
||||
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
||||
│ ↓ │
|
||||
│ Coze Database │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 四、待解决问题
|
||||
|
||||
### 4.1 语音模式 session_id 传递
|
||||
|
||||
**问题**: 语音模式下,session_id 无法通过 /v1/audio/rooms API 传递到 Workflow B
|
||||
|
||||
**已尝试方案**:
|
||||
1. ❌ `config.session_id` - 不支持
|
||||
2. ❌ `parameters` 字段 - 不支持
|
||||
3. ❌ `user_id` 字段 - 可设置但 Workflow 无法读取
|
||||
4. ❌ Volcengine RTC SDK `sendRoomMessage` - 不是 Coze 信令通道
|
||||
5. 🟡 `@coze/realtime-api` SDK `session.update` 事件 - 待验证
|
||||
|
||||
**建议方案**:
|
||||
- 在 Workflow B 开始时通过数据库查询最近的 session_id
|
||||
- 或使用 `@coze/realtime-api` 的 `session.update` 事件
|
||||
|
||||
### 4.2 面试阶段字段
|
||||
|
||||
**已实现**: current_stage 数值映射
|
||||
- >= 50: 面试完成 (求职动机阶段)
|
||||
- >= 40: 素质项评估
|
||||
- >= 30: 销售观评估
|
||||
- >= 20: 销售技能
|
||||
- >= 10: 简历上传
|
||||
|
||||
## 五、数据库表结构
|
||||
|
||||
### ci_interview_assessments
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| id | String | 主键 (自动生成) |
|
||||
| session_id | String | 会话 ID |
|
||||
| candidate_name | String | 候选人姓名 |
|
||||
| current_stage | String | 当前阶段 (10-50) |
|
||||
| sales_skill_score | String | 销售技能分数 |
|
||||
| sales_skill_report | String | 销售技能报告 |
|
||||
| sales_concept_score | String | 销售观分数 |
|
||||
| sales_concept_report | String | 销售观报告 |
|
||||
| competency_score | String | 综合素质分数 |
|
||||
| competency_report | String | 综合素质报告 |
|
||||
| final_score_report | String | 最终评估报告 |
|
||||
| resume_text | String | 简历文本 |
|
||||
| risk_warning | String | 风险提示 |
|
||||
|
||||
### ci_interview_logs
|
||||
| 字段 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| log_id | String | 主键 (必填) |
|
||||
| session_id | String | 会话 ID |
|
||||
| stage | String | 面试阶段 |
|
||||
| round | String | 轮次 |
|
||||
| ai_question | String | AI 问题 |
|
||||
| user_answer | String | 用户回答 |
|
||||
| log_type | String | 日志类型 |
|
||||
|
||||
## 六、关键文件清单
|
||||
|
||||
### 前端
|
||||
- `frontend/src/pages/interview/index.vue` - 欢迎页 + 信息采集
|
||||
- `frontend/src/pages/interview/call.vue` - 面试页面 (语音/文字)
|
||||
- `frontend/src/pages/admin/*.vue` - 管理后台页面
|
||||
- `frontend/src/composables/useCozeRealtime.ts` - Coze Realtime SDK 封装
|
||||
- `frontend/src/api/candidate.ts` - API 调用封装
|
||||
|
||||
### 后端
|
||||
- `backend/main.py` - FastAPI 入口
|
||||
- `backend/app/services/coze_service.py` - Coze API 服务
|
||||
- `backend/app/routers/init.py` - 面试初始化 API
|
||||
- `backend/app/routers/chat.py` - 文字聊天 API
|
||||
- `backend/app/routers/room.py` - 语音房间 API
|
||||
- `backend/app/routers/admin.py` - 管理后台 API
|
||||
|
||||
### 配置
|
||||
- `backend/.env` - 环境变量 (PAT_TOKEN, BOT_ID, FILE_SERVER_TOKEN 等)
|
||||
- `docs/upload.php` - 文件上传 PHP 脚本
|
||||
- `docs/nginx-files-server.conf` - Nginx 配置
|
||||
|
||||
## 七、访问地址
|
||||
|
||||
| 服务 | 地址 |
|
||||
|------|------|
|
||||
| 用户端 | http://localhost:5173 |
|
||||
| 管理后台 | http://localhost:5173/admin |
|
||||
| 后端 API | http://localhost:8000 |
|
||||
| 文件服务器 | https://files.test.ai.ireborn.com.cn |
|
||||
Reference in New Issue
Block a user