验证前后端围绕 JD 分析、简历上传、简历列表、流式评估、流式聊天、模拟面试智能体的完整链路是否正常。
- 已安装 OCR 依赖
rapidocr_onnxruntime - 已安装依赖并能启动后端
python server.py - 已启动前端
npm run dev或pnpm dev - 准备至少 1 份可解析的
.docx简历
- 在页面输入一段 JD 描述
- 点击
ANALYZE JD - 预期:页面出现关键词标签,后端
/analyze_jd返回keywords
- 点击 JD 文本域右下角
图片识别文字 - 上传一张包含 JD 内容的图片
- 预期:后端通过 RapidOCR 调用
/ocr_jd_image成功返回text - 预期:识别结果自动追加到 JD 文本域中,不阻塞页面其他操作
- 保证数据库中已有历史简历记录
- 刷新页面
- 预期:页面先正常渲染,不阻塞交互;随后候选人池异步出现已有简历
- 点击上传按钮,选择
.docx或.pdf文件 - 预期:候选人先以
上传中状态进入列表,上传完成后变为就绪/Ready - 预期:后端
/upload_resume返回resume_id
- 上传一份文本可提取的
.pdf简历 - 预期:后端正常解析 PDF 内容并进入评估流程
- 预期:选择该候选人时可正常调用
/evaluate
- 打开浏览器开发者工具或直接请求
GET /resumes?user_id=resume-agent-demo - 预期:返回
items数组,包含resume_id、candidate_name、phone、status
- 先完成 JD 分析,再点击某个候选人标签
- 预期:右侧进入评估中状态,随后显示分数、雷达图、总结、亮点、风险
- 预期:雷达图维度固定为“技术深度、项目经验、软技能、背景示例、AI技能”
- 预期:后端
/evaluate返回evaluation
- 选择候选人后观察评估过程
- 预期:前端按
preparing -> sources -> scoring -> radar -> summary -> highlights -> risks -> finalizing逐步更新 - 预期:后端
/evaluate_stream返回 SSE 事件,包含sources、summary_source_ids、highlights[].source_ids、risks[].source_ids - 预期:前端可展示总结、亮点、风险对应的证据片段
- 选择一份候选人后,在追问输入框输入问题
- 预期:页面显示用户消息和 AI 消息,AI 回复逐步流式更新
- 预期:后端
/chat返回 SSE 事件,至少包含chunk、suggestions、sources、done
- 完成一次聊天后,观察追问建议区
- 预期:建议列表更新为后端返回的追问项
- 点击任一建议
- 预期:前端直接再次调用
/chat,并开始新的追问流式回复
- 点击候选人右侧删除按钮并确认
- 预期:前端候选人池移除该条记录
- 预期:刷新页面后该简历不再出现
- 在评估完成后点击
开始模拟面试 - 预期:弹窗正常打开,并可填写/确认
interview_identity - 预期:后端
/interview/start_stream返回 SSE,包含phase、session、question、done - 预期:能流式得到 10 道题,且分类覆盖技术深挖、ownership、问题解决、沟通协作、风险确认
- 预期:每题可填写文本答案,浏览器支持时可通过语音输入追加内容
- 完成 10 题后点击提交
- 预期:后端
/interview/submit返回总分、逐题反馈、通过/待定/不通过 - 再次打开弹窗
- 预期:可通过
/interview/history和/interview/history/{session_id}查看历史记录与详情
- 上传
.pdf或.doc - 上传
.doc - 预期:前端/后端拒绝,提示仅支持
.docx或.pdf
- 上传简历后,不输入 JD,直接点击候选人
- 预期:页面提示需要先分析 JD,不触发有效评估
- 在未选择简历的情况下尝试提问
- 预期:按钮禁用或不发送请求
如果后续决定补自动化,可以优先做下面几类:
- FastAPI 接口测试:覆盖
/analyze_jd、/upload_resume、/resumes、/evaluate、/evaluate_stream、/chat、/interview/start_stream、/interview/submit - 前端 store 测试:覆盖
hydrateResumes、uploadResumeFile、selectResume、sendFollowUpQuestion、loadInterviewQuestions、submitInterview - E2E 测试:覆盖页面初始化、上传、评估、聊天、模拟面试、删除完整流程