一个基于 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 文本,或上传 JD 图片。
- 系统解析简历和 JD,匹配 7 类职业模版之一:
dev / da / pm / sales / ops / cs / hr。 - 系统生成面试题集和每题评价要点。
- 候选人逐题接受题目、录制视频并提交。
- 后台异步执行单题多模态评估。
- 所有题目完成后,系统生成综合报告。
- 简历解析:将简历文本转成结构化
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 工作流导出和 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["综合报告"]
| 文件 | 说明 |
|---|---|
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或部署平台环境变量中







