业务和功能介绍
立项背景:传统招聘流程中 HR 处理海量简历效率低下,简历结构化、候选人匹配、面试题设计均依赖人工,耗时长且主观性强,难以规模化。
项目目标:构建 AI 驱动的智能招聘 SaaS 平台,自动化"简历解析 → 人才库管理 → 岗位匹配 → 面试题生成 → 招聘漏斗"全流程,让 HR 从机械劳动中解放出来。
核心功能模块(共 7 大):
简历智能解析 — PDF/Word 上传,LLM 提取结构化 JSON(姓名/技能/经验/教育)
人才画像 — 技能广度评分、经验年限、稳定性评分、雷达图可视化
智能岗位匹配 — 关键词匹配(Jaccard)+ 语义匹配(embedding)双引擎
AI 面试题生成 — mock 模板 / DeepSeek 大模型双模式,按技能/经验/行为/通用四类自动出题
招聘看板 — 漏斗转化率、团队效能指标、趋势分析、CSV/Markdown 导出
团队协作 — 多角色权限(admin/recruiter/hiring_manager)+ 人才库共享
业务流程:HR 上传简历 → 后端提取文本 → LLM 解析入库 → 系统计算与所有职位的匹配分数 → 简历自动进入「提交简历」阶段 → HR 解析后手动推进阶段 → 生成针对性面试题 → 面试反馈 → Offer。
项目实现
整体架构:前后端分离 + RESTful API
后端:FastAPI 0.104+ / SQLAlchemy 2.0 / Pydantic v2 / SQLite + Alembic 迁移 / JWT (python-jose + bcrypt)
LLM 适配层:抽象 parse_resume() 和 call_llm() 接口,通过环境变量 LLM_MODE 切换 mock / ollama / openai 三模式(DeepSeek 走 openai 协议,base_url 一行配置即接入)
前端:Vue3 + Element Plus + Vite + Pinia + ECharts + axios,路由守卫 + 9 个业务页面 + AppLayout 侧边栏
分层架构:routers(接口校验)→ services(业务逻辑)→ models(数据持久化)
"我"负责的模块和量化结果:
后端 7 大模块(auth/resumes/jobs/matches/profiles/questions/analytics)从 0 到 1 全量实现,11 个路由文件 + 8 个服务文件
前端 9 个页面(登录/看板/简历/职位/匹配/概览)+ AppLayout,含深紫暗黑主题登录、玻璃拟态、taste-skill 设计令牌
60+ 单元测试 100% 通过
11 次 git 提交,每个模块独立可回滚
遇到的难点 / 坑 / 解决方案:
LLM 三模式适配 — mock / ollama / openai 三套调用栈差异大。解法:抽象 _openai_parse() 用 OpenAI SDK(兼容 DeepSeek),_ollama_parse() 用 httpx,parse_resume() 统一入口按 LLM_MODE 分发
漏斗图不实时 — 上传简历后 /analytics/funnel 缓存 300s 不更新。解法:在 _pipeline_stage() 末尾 _cache.pop("funnel", None) 主动失效
跨域登录 401 — Vite 代理剥离 Authorization 头。解法:改 .env.development VITE_API_BASE 直连后端走 CORS,allow_headers 显式列名避开 credentials + wildcard 冲突
前端状态枚举错位 — 后端用 unparsed,前端误用 pending。解法:修正 statusMap + 强制刷新