Files
011-ai-interview/docs/项目进度总结-20260121.md
2026-01-23 13:57:48 +08:00

6.0 KiB
Raw Permalink Blame History

AI 语音面试系统 - 项目进度总结

更新日期: 2026-01-21
项目代号: 011-ai-interview-2601


一、已完成功能

1. 基础架构

  • 前端项目初始化 (Vue 3 + TypeScript + Vite + Element Plus)
  • 后端项目初始化 (FastAPI + Python)
  • Coze API 集成 (PAT Token 认证)
  • 文件服务器搭建 (Nginx + PHP 上传脚本)

2. 工作流 A - 面试初始化

  • 接收姓名和简历 PDF
  • 上传简历到自建文件服务器 (files.test.ai.ireborn.com.cn)
  • 调用 Coze 工作流解析简历
  • 生成 session_id 并写入 ci_interview_assessments
  • 返回 session_id 给前端

3. 工作流 B - 面试对话 ⚠️ (部分完成)

  • 调用 Coze /v3/chat API 进行对话
  • 支持文字面试模式
  • 支持语音面试模式 (RTC 房间创建)
  • 未完成: 多轮对话状态维持
  • 未完成: 对话日志写入 ci_interview_logs

4. 工作流 C1 - 数据查询

  • 支持查询 ci_interview_assessments
  • 支持查询 ci_interview_logs
  • 支持查询 ci_business_config
  • 通过 JSON 输入指定表名和 SQL

5. 后台管理页面

  • 登录页面 (/admin/login)
  • 面试列表页面 (/admin/interviews)
  • 面试详情页面 (/admin/interviews/:id)
    • 基本信息展示
    • 维度评分展示
    • 评估报告展示
    • 对话记录展示 (数据依赖工作流 B)
  • 配置管理页面 (/admin/configs)

6. 文件服务

  • 自建文件服务器 (files.test.ai.ireborn.com.cn)
  • PHP 上传接口 (Token 认证)
  • Nginx 静态文件服务
  • CORS 支持

二、核心问题

问题:工作流 B 多轮对话状态无法维持

现象:

  • 每次调用 /v3/chat APICoze 返回新的 conversation_id
  • 即使传入上一次的 conversation_id,仍然返回新值
  • 导致工作流 B 每次都从头执行,重复显示欢迎语

影响:

  1. 面试无法正常进行多轮问答
  2. 对话日志无法写入 ci_interview_logs
  3. 后台管理页面无法显示对话记录

已尝试的方案:

  1. 传入 conversation_id 参数 - Coze 仍返回新值
  2. 使用 /v1/workflows/chat 接口 - 接口不存在或参数格式不对
  3. 通过 session_id 在工作流内部管理状态 - 需要修改工作流 B

三、解决方案建议

方案:工作流 B 内部状态管理

修改 Coze 工作流 B不依赖 Coze 的 conversation 机制,改为:

  1. 开始节点: 接收 session_id 和用户消息
  2. 查询状态: 从 ci_interview_logs 表查询该 session_id 的历史对话数量
  3. 条件分支:
    • 如果历史为 0显示欢迎语更新状态
    • 如果历史 > 0直接进入下一轮提问
  4. 写入日志: 每次对话后,将 AI 问题和用户回答写入 ci_interview_logs
  5. 结束判断: 当对话轮次达到设定值时,生成评估报告

四、技术栈

模块 技术
前端 Vue 3 + TypeScript + Vite + Element Plus + Tailwind CSS
后端 Python + FastAPI + Pydantic + httpx
AI 平台 Coze (扣子)
文件服务 Nginx + PHP
数据库 Coze 内置数据库

五、API 端点

后端 API

端点 方法 说明
/api/init-interview POST 初始化面试(上传简历、生成 session_id
/api/chat POST 文字面试对话
/api/rooms POST 创建语音面试房间
/api/admin/login POST 管理员登录
/api/admin/interviews GET 面试列表
/api/admin/interviews/{id} GET 面试详情
/api/admin/interviews/{id}/logs GET 对话记录

Coze 工作流

工作流 ID 说明
工作流 A 7597357422713798710 面试初始化(简历解析)
工作流 B 7595077233002840079 面试对话Chatflow
工作流 C1 7597376294612107318 数据查询

六、数据库表

表名 说明
ci_interview_assessments 面试评估记录
ci_interview_logs 面试对话日志
ci_business_config 业务配置

七、下一步工作

  1. 修改工作流 B - 实现内部状态管理,不依赖 conversation_id
  2. 测试多轮对话 - 验证对话日志正确写入数据库
  3. 完善语音面试 - 测试 RTC 语音对话功能
  4. 优化后台页面 - 改进布局和用户体验

八、文件结构

011-ai-interview-2601/
├── frontend/                 # 前端项目
│   ├── src/
│   │   ├── api/             # API 请求
│   │   ├── pages/
│   │   │   ├── interview/   # 面试页面
│   │   │   └── admin/       # 后台管理
│   │   ├── composables/     # 组合式函数 (useRTC)
│   │   └── router/          # 路由配置
│   └── package.json
├── backend/                  # 后端项目
│   ├── app/
│   │   ├── routers/         # API 路由
│   │   ├── services/        # 服务层 (coze_service)
│   │   └── schemas.py       # 数据模型
│   ├── main.py
│   └── requirements.txt
├── docs/                     # 文档
│   ├── upload.php           # PHP 上传脚本
│   ├── nginx-files-server.conf
│   └── 项目进度总结-20260121.md
└── coze-workflows/          # Coze 工作流配置

九、配置信息

环境变量 (.env)

COZE_PAT_TOKEN=pat_xxx
COZE_BOT_ID=7595113005181386792
FILE_SERVER_TOKEN=ai_interview_2026_secret
TUNNEL_URL=http://files.test.ai.ireborn.com.cn

文件服务器

  • 域名: files.test.ai.ireborn.com.cn
  • 上传接口: /upload.php
  • 文件目录: /resumes/

总结: 项目基础架构已完成,核心问题是工作流 B 的多轮对话状态维持。需要在 Coze 工作流 B 中实现基于 session_id 的状态管理,才能正确记录对话日志并在后台展示。