Skip to content

zhaojingru-ai/multimodal-interview-system

Repository files navigation

多模态面试系统

一个基于 Next.js 与 Coze 工作流的多模态面试原型系统。系统从候选人简历和岗位 JD 出发,自动匹配岗位模版、生成结构化面试题,支持逐题视频作答,并对单题回答进行文本、音频、视频多模态评估,最后生成综合面试报告。

当前版本适合用于课程设计、毕业设计、研究原型和 Coze 工作流复现实验。默认支持本地 mock 模式,不配置 Coze 也能跑通主要产品流程。

运行状态

  • npm run lint 通过
  • npm run build 通过
  • npm audit --registry=https://registry.npmjs.org --audit-level=high 通过
  • 仓库只提供 .env.example,真实 Coze、数据库和认证密钥请配置在本地或部署环境变量中
  • Coze 工作流导出与 7 个职业模版已归档到 docs/coze/

界面预览

首页 登录
首页 登录页
简历输入 JD 输入
简历输入 JD 输入
题目工作台 视频作答
题目工作台 视频作答
异步评估 最终报告
异步评估进度 最终报告

产品流程

  1. 登录系统,进入面试创建页。
  2. 输入候选人简历文本。
  3. 输入岗位 JD 文本,或上传 JD 图片。
  4. 系统解析简历和 JD,匹配 7 类职业模版之一:dev / da / pm / sales / ops / cs / hr
  5. 系统生成面试题集和每题评价要点。
  6. 候选人逐题接受题目、录制视频并提交。
  7. 后台异步执行单题多模态评估。
  8. 所有题目完成后,系统生成综合报告。

核心能力

  • 简历解析:将简历文本转成结构化 resume_profile
  • JD 解析:将岗位文本或图片转成结构化 jd_profile
  • 岗位模版匹配:推荐最合适的职业模版
  • 题目与要点生成:生成完整题目集 question 和评价要点包 point
  • 逐题视频作答:浏览器摄像头/麦克风录制,保存单题视频
  • 单题多模态评估:抽取文本、音频、视频轻量特征并生成评分证据
  • 报告生成:聚合逐题结果,输出综合面试报告

技术栈

  • Next.js 16 + React 19
  • TypeScript
  • Coze Workflow API
  • bcryptjs + jose
  • Postgres 或本地 JSON file store
  • Playwright smoke/e2e 脚本

快速开始

npm install
cp .env.example .env.local
npm run dev

打开 http://localhost:3000

本地开发默认账号:

username: admin
password: admin-local-password

首次开源体验建议保持 mock 模式:

INTERVIEW_USE_MOCK=true

生产环境请务必设置:

AUTH_SECRET=
AUTH_DEFAULT_USER_PASSWORD=
DATABASE_URL=或者 POSTGRES_URL=

如果没有配置 AUTH_DEFAULT_USER_PASSWORD,生产环境不会创建可预测的默认密码。

运行模式

配置 行为
INTERVIEW_USE_MOCK=true 使用本地 deterministic mock/fallback,不依赖 Coze
INTERVIEW_USE_MOCK=false 强制调用真实 Coze 工作流
INTERVIEW_USE_MOCK 留空 自动模式,有 COZE_PAT 时调用 Coze,否则使用 mock

真实 Coze 联调时设置:

INTERVIEW_USE_MOCK=false
COZE_PAT=
COZE_APP_ID=

Coze 复现资料

本仓库已归档当前可公开的 Coze 工作流导出和 7 个职业模版:

  • 工作流导出:docs/coze/workflow-exports/
  • 职业模版:docs/coze/job-templates/
  • 复现指南:docs/COZE_REPRODUCTION.md
  • 代码映射:docs/WORKFLOW_CODE_MAPPING.md

工作流导出中包含准备阶段与单题评估所需的核心子流程,也包含可选父流程。真实 Coze 复现时,建议先使用子流程链路跑通,再打开父流程联调。

主流程

flowchart TD
  A["创建面试:简历 + JD"] --> B["准备阶段工作流"]
  B --> C["生成题目集与评价要点"]
  C --> D["逐题视频作答"]
  D --> E["单题多模态评估"]
  E --> F["单题报告"]
  F --> G["综合报告"]
Loading

核心文件

文件 说明
src/lib/interview-store.ts 面试 session 状态机、后台队列、本地持久化
src/lib/interview-workflow-gateway.ts Coze 工作流调用网关
src/lib/coze-client.ts Coze API 调用、轮询、文件上传
src/lib/coze-workflows.ts workflow id 默认值与环境变量覆盖
src/lib/interview-types.ts 工作流和业务对象的 TypeScript 类型
src/lib/interview-mock.ts 本地 mock/fallback 数据
src/lib/interview-final-report.ts 综合报告生成

常用命令

npm run dev
npm run lint
npm run build
npm run smoke

真实 Coze 联调脚本:

node scripts/coze-preparation-smoke.mjs
node scripts/coze-single-question-smoke.mjs <sessionId> <qid>

文档

  • docs/COZE_REPRODUCTION.md: 如何在 Coze 上复现工作流和知识库
  • docs/WORKFLOW_CODE_MAPPING.md: 工作流和代码文件的对应关系
  • docs/WORKFLOW_MEMORY.md: 工作流字段契约和历史约定

安全配置

  • 不要提交 .env.local.data/.next/node_modules/
  • 真实 Coze PAT、数据库连接串和认证密钥请只保存在本地 .env.local 或部署平台环境变量中

About

Multimodal interview system with Coze workflow exports

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors