岗好懂AI求职平台
目录
1. 项目概述
岗好懂「AI 求职操作系统(AI Career OS)」。
平台围绕校招与社招求职者的真实痛点,提供从 简历上传解析 → 用户画像构建 → JD 智能解析 → 匹配度检测 → 简历定向优化 → 岗位投递管理 → 面试流程跟踪 → 技能学习追踪 → 对话式报告追问 → Agent 持续跟进 的完整闭环服务。
区别于传统「一次性工具」,职图星途通过对话式交互、数据沉淀与 Agent 持续跟进,成为用户求职路上的长期智能伙伴。
核心愿景
让每一位求职者都能被 AI 精准理解,让每一次投递都更有把握,让每一段成长都被记录和推动。
产品 Slogan
「上传简历,AI 帮你走完求职全流程。」
2. 项目背景
2.1 行业背景
- 校招竞争激烈:2026 届高校毕业生预计超 1200 万,热门岗位简历淘汰率超 90%
- AI 重塑招聘:企业广泛使用 ATS(申请追踪系统)自动筛选简历,关键词匹配成为第一道门槛
- 信息严重不对称:求职者看到的 JD 往往经过 HR 包装,真实技能需求被隐藏或模糊化
- 官网投递体验极差:校招季求职者需在 50+ 家企业官网重复填写基本信息、教育经历、项目经验,耗时且易错
- 求职过程缺乏反馈:投递后石沉大海,求职者不知道问题出在简历、技能还是面试表现
- 成长无规划:求职是短期行为,但职业成长是长期过程,缺少持续跟踪和动态调整工具
2.2 用户核心痛点
| 痛点 | 具体表现 | 职图星途解决方案 |
|---|---|---|
| 简历不会写 | 经历描述空洞,缺乏岗位关键词,ATS 筛选通过率极低 | AI 简历解析 + 定向优化 + 匹配度检测 |
| JD 看不懂 | JD 描述模糊,真实技能需求被隐藏 | AI 深度解析 JD,揭示隐藏需求与技能权重 |
| 官网填到崩溃 | 校招需在数十家企业官网重复填写相同信息 | 一键复制填充内容(简化版)+ 简历版本管理 |
| 面试没方向 | 不知道会被问什么,缺乏真实场景演练 | 基于画像+JD 的个性化 AI 模拟面试 |
| 报告看不懂 | 拿到测评报告或面试反馈后,不知如何针对性改进 | 对话式报告追问,AI 实时解答 |
| 投递无管理 | 投了几十家公司,记不住进度,错过截止时间 | 岗位投递管理中心(Job Tracker) |
| 成长没规划 | 不知道缺什么技能,学习碎片化 | 技能学习追踪 + Agent 动态规划 |
3. 市场分析
3.1 竞品分析
| 竞品 | 核心功能 | 主要不足 | 职图星途差异化 |
|---|---|---|---|
| 超级简历 | 简历模板 + 排版 | 无 AI 分析能力,无岗位定向优化,无投递管理 | AI 深度解析 JD + 定向改写 + 求职 CRM |
| 牛客网 | 题库 + 面经社区 | 模拟面试体验生硬,无个性化,无投递跟踪 | 基于简历+JD 的个性化 AI 面试 + 全流程管理 |
| Boss 直聘 | 岗位匹配 + 沟通 | 仅解决「人找岗位」,不解决「人如何成为符合岗位的人」 | 从「匹配」到「成长」的完整闭环 |
| Notion / Excel | 手动记录投递进度 | 无 AI 能力,纯手动维护,易遗漏 | AI 自动关联岗位、提醒截止、追踪学习 |
| ChatGPT | 通用问答 | 无求职专用工作流,无数据沉淀,无持续跟进 | 垂直场景深度 + 数据沉淀 + Agent 陪伴 |
3.2 市场规模
中国在线求职服务市场规模预计 2026 年突破 500 亿元,AI 求职工具细分市场年增长率超过 35%。「AI 全流程求职陪伴」赛道尚处蓝海,具备显著的先发优势窗口。
3.3 差异化壁垒
- 闭环数据中心:所有环节(画像、JD、优化、投递、面试、学习)数据共享,形成可复用的求职资产。
- 逐条 Diff 修改:类 Git 的「原文 vs AI 建议 vs 修改理由」对比,产品价值显著高于一键黑盒。
- Job Tracker(AI 求职 CRM):将分散的投递、面试、学习统一沉淀,是市面上同类产品缺失的最值钱模块。
- 求职驾驶舱 Dashboard:首页一屏掌控全局,从单点工具升级为 OS 级产品。
4. 产品定位
4.1 产品定位
AI 驱动的一站式求职操作系统(AI Career OS)
从「投递简历」升级为「AI 陪伴式职业成长」;从「优化一份简历」升级为「运营整段求职」。
4.2 核心价值主张
| 价值维度 | 具体体现 |
|---|---|
| 降低信息差 | AI 深度解析 JD,揭示岗位真实技能需求与隐藏要求 |
| 提升通过率 | 基于岗位定向优化简历,提升 ATS 筛选通过率 |
| 节省重复劳动 | 一键复制校招官网填充内容,减少重复填写时间 |
| 面试有备无患 | 基于简历+JD 生成个性化面试题,多轮对话演练 |
| 报告可追问 | 对任何分析结果、评分报告进行对话式追问,直到理解透彻 |
| 投递可管理 | 统一管理所有投递岗位,跟踪面试进度,提醒截止时间 |
| 成长可持续 | Agent 持续跟踪学习进度,动态调整规划,陪伴整个求职周期 |
4.3 产品形态
- Web 端:核心功能平台,支持简历上传、JD 解析、报告查看、对话追问、投递管理
- 对话式界面:所有报告均支持「点击追问」,用户可对任意结论提出疑问,AI 实时解答
- 求职驾驶舱(Dashboard):首页集中展示投递、面试、学习、Offer 等核心数据,一目了然
- Agent 持续跟进:用户授权后,Agent 定期推送学习提醒、岗位更新、进度回顾、截止提醒
5. 用户画像
5.1 核心用户群体
| 用户类型 | 占比 | 核心场景 | 核心痛点 |
|---|---|---|---|
| 应届毕业生 | 40% | 秋招/春招集中投递 | 简历同质化严重、不了解岗位真实要求、官网填写耗时 |
| 校招求职者 | 30% | 批量投递多家企业官网 | 每家企业官网格式不同,重复填写信息效率极低,投递进度混乱 |
| 转行人员 | 15% | 跨行业/跨岗位求职 | 过往经历与目标岗位不匹配,不知如何改写简历 |
| 在职跳槽者 | 15% | 精准匹配高薪岗位 | 不清楚自身与目标岗位的技能差距,面试准备无方向 |
5.2 用户故事(User Story)
用户故事 1:应届毕业生小 A
小 A 是计算机专业应届生,正在准备秋招。他投了 30 家公司,但只收到 3 个面试邀请。他不知道问题出在哪里——是简历写得不好?还是技能不匹配?还是投递的岗位不对?
使用职图星途后:
- 上传简历,AI 自动解析并生成画像
- 粘贴目标岗位 JD,AI 解析出真实技能需求
- 匹配度检测显示:技能匹配 65%,项目匹配 70%,关键词匹配 55%
- AI 简历优化:一键生成定向版本,ATS 评分从 62 提升到 85
- 模拟面试:基于该岗位生成 5 道个性化题目,发现 Redis 集群是薄弱点
- 学习规划:生成 3 周 Redis 学习路线
- 投递管理:记录所有投递岗位,跟踪面试进度,提醒截止时间
- Agent 跟进:每天推送学习提醒,每周回顾匹配度变化
用户故事 2:转行人员小 B
小 B 从传统行业转行互联网,有 2 年工作经验但技术栈不匹配。他不知道如何把过往经历「翻译」成互联网岗位能看懂的语言。
使用职图星途后:
- 上传简历,AI 识别出可迁移技能(项目管理、数据分析、团队协作)
- 选择目标岗位(产品经理),AI 解析出该岗位对「传统行业经验」的潜在价值
- 简历优化:将「负责生产流程优化」改写为「通过数据分析优化业务流程,效率提升 30%」
- 模拟面试:重点考察「转行动机」和「产品思维」
- 学习规划:补充产品方法论、Axure、数据分析工具
6. 核心业务流程
6.1 整体业务流程
注册/登录
↓
上传简历(PDF / Word / 图片)
↓
AI 自动解析(OCR + LLM 结构化抽取)
↓
生成用户画像(个人信息、教育、技能、项目、经历等)
↓
用户确认/修改画像
↓
进入「求职驾驶舱(Dashboard)」首页
↓
可选择功能入口:
├─ 解析岗位 JD
├─ 优化我的简历
├─ 模拟面试
├─ 查看匹配报告
├─ 管理我的投递
├─ 学习进度追踪
└─ 与 Agent 对话
6.2 核心使用流程(以「投递某岗位」为例)
用户上传简历 → 生成画像
↓
用户粘贴目标岗位 JD
↓
AI 解析 JD,生成岗位画像报告
↓
生成「岗位 vs 用户」匹配评分报告
↓
AI 简历优化(一键优化 / 逐条对比修改)
↓
生成 AI 修改报告(ATS 评分变化、关键词补充、优化项统计)
↓
重新计算 JD 匹配度(优化前后对比)
↓
用户确认优化内容
↓
导出简历(PDF / Word / Markdown / 纯文本,默认 PDF)
↓
一键复制官网填充内容(简化版)
↓
记录岗位到「投递管理中心」(状态:待投递)
↓
用户完成投递后,更新状态为「已投递」
↓
模拟面试(基于该岗位 JD)
↓
查看面试报告,对话追问改进点
↓
生成学习路线(补齐技能差距)
↓
Agent 持续跟踪提醒
↓
面试流程更新(一面 → 二面 → HR 面 → Offer)
↓
学习进度更新 → 重新计算匹配度 → 循环优化
6.3 对话式追问交互流程
用户查看任意报告(JD 解析 / 匹配评分 / 面试报告 / 学习规划)
↓
用户点击报告中任意段落/结论旁的「追问」按钮
↓
弹出对话浮窗,显示该段落上下文
↓
用户输入问题
↓
后端组装 Prompt:
├─ 报告完整内容(System Context)
├─ 用户点击的段落定位
├─ 用户问题
└─ 知识库检索结果(相关技能文档、面经)
↓
LLM 生成回答
↓
返回前端,展示在对话浮窗中
↓
用户可继续追问(保持同一会话上下文)
↓
对话记录保存到数据库,Agent 可后续引用
7. 功能架构图
用户层
│
┌────────────┴────────────┐
│ 求职驾驶舱 │
│ (Dashboard 首页) │
│ 投递统计 | 面试进度 | │
│ 学习完成度 | Offer 追踪 │
└────────────┬────────────┘
│
┌────────────────────────┼────────────────────────┐
│ │ │
┌────▼────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ 简历中心 │ │ 岗位中心 │ │ 成长中心 │
└────┬────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
┌────▼────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ 上传简历 │ │ 粘贴 JD │ │ 模拟面试 │
│ AI 解析 │ │ AI 解析 │ │ 面试报告 │
│ 画像构建 │ │ 匹配检测 │ │ 报告追问 │
│ 版本管理 │ │ 简历优化 │ │ 学习规划 │
└────┬────┘ │ 修改报告 │ │ 进度追踪 │
│ │ 导出简历 │ │ Agent 对话 │
│ └─────┬─────┘ └───────────┘
│ │
└───────────┬───────────┘
│
┌───────▼───────┐
│ 投递管理中心 │
│ (Job Tracker) │
│ │
│ 待投递岗位 │
│ 已投递岗位 │
│ 面试中岗位 │
│ Offer 岗位 │
│ 淘汰岗位 │
│ 截止提醒 │
│ 学习进度关联 │
└───────────────┘
8. 功能模块设计
8.1 AI 用户画像构建(Resume Parser + Profile Builder)
功能描述
用户首次进入平台后,核心入口为「上传简历」。支持多种格式,AI 自动识别内容并构建完整用户画像,大幅降低首次填写成本。
支持格式
| 格式 | MVP | V1.5 | 说明 |
|---|---|---|---|
| ✅ | ✅ | 主要格式,使用 PyMuPDF 解析 | |
| Word(doc/docx) | ✅ | ✅ | 使用 python-docx 解析 |
| 图片(jpg/png/webp) | ✅ | ✅ | 使用 OCR(PaddleOCR)识别后 LLM 解析 |
| 在线简历截图 | ✅ | ✅ | 同图片处理流程 |
| 超级简历导出文件 | - | ✅ | 后续版本支持 |
| Boss 直聘导出简历 | - | ✅ | 后续版本支持 |
AI 解析流程
用户上传文件
↓
判断文件类型
↓
├─ PDF → PyMuPDF 提取文本
├─ Word → python-docx 提取文本
└─ 图片 → OCR 识别文本
↓
LLM 结构化抽取
↓
生成结构化用户画像
↓
用户确认/修改
↓
保存画像,进入平台
AI 自动识别内容
| 字段 | 识别方式 | 用户确认 |
|---|---|---|
| 个人信息 | LLM 抽取 | ✅ 必须确认 |
| 教育经历 | LLM 抽取 | ✅ 必须确认 |
| 技能列表 | LLM 抽取 + 标准化 | ✅ 必须确认 |
| 项目经历 | LLM 抽取 | ✅ 必须确认 |
| 实习经历 | LLM 抽取 | ✅ 必须确认 |
| 校园经历 | LLM 抽取 | ⚪ 可选确认 |
| 获奖证书 | LLM 抽取 | ⚪ 可选确认 |
| 专业技能 | LLM 抽取 | ✅ 必须确认 |
| GitHub / 博客 / 作品集 | 正则提取 URL | ⚪ 可选确认 |
| 语言能力 | LLM 抽取 | ⚪ 可选确认 |
| 求职意向 | LLM 推断 | ✅ 必须确认 |
技能标准化
建立技能同义词库,将不同表述统一:
"Vue.js" = "Vue" = "Vue3" = "Vue 3"
"React.js" = "React" = "ReactJS"
"MySQL" = "mysql" = "MySQL 数据库"
"Docker" = "docker" = "容器化"
简历版本管理
支持用户保存多个简历版本:
简历版本:
├── 原始简历(V1)
├── 通用版简历(V2)
├── 腾讯后端定向版(V3)
├── 阿里后端定向版(V4)
└── 字节后端定向版(V5)
每个版本独立存储,可随时切换、对比、导出。
交互设计
- 上传页面:拖拽上传区域,支持多格式,显示解析进度条
- 解析结果页:分块展示 AI 提取的信息,每块可编辑、删除、新增
- 可信度标识:AI 识别可信度低的字段标黄提醒,高可信度标绿
- 一键补全:对缺失字段,AI 通过对话引导用户补充
8.2 AI JD 解析(Job Description Analyzer)
功能描述
用户粘贴或上传目标岗位 JD,AI 自动进行深度解析,输出结构化岗位画像。
解析维度
岗位画像:
├── 基础信息
│ ├── 岗位名称
│ ├── 所属部门
│ ├── 工作地点
│ └── 薪资范围(如 JD 未明确,基于市场数据推测)
├── 技能要求
│ ├── 硬性技能(必须掌握)
│ ├── 软性技能(加分项)
│ └── 技能权重分布(百分比)
├── 经验要求
│ ├── 工作年限
│ ├── 学历要求
│ └── 项目经验类型
├── 隐藏需求(AI 推断)
│ ├── 团队技术栈偏好
│ ├── 业务方向暗示
│ └── 成长空间评估
└── 竞争力评估
├── 岗位热度(投递人数预估)
└── 薪资竞争力(同岗位市场对比)
输出示例
岗位:后端开发工程师(校招)
公司:某互联网大厂
技能权重:
├─ Java / Python ████████░░ 80% [硬性要求]
├─ 数据库(MySQL/Redis) ██████░░░░ 60% [硬性要求]
├─ 分布式系统 █████░░░░░ 50% [加分项]
├─ 消息队列 ████░░░░░░ 40% [加分项]
└─ 容器化(Docker/K8s) ███░░░░░░░ 30% [加分项]
隐藏需求推断:
• 团队可能使用微服务架构(JD 多次提到"高并发""分布式")
• 业务偏向电商/支付方向(提到"交易""订单")
• 校招看重基础扎实,项目经验可放宽
竞争力评估:
• 岗位热度:🔥🔥🔥🔥 高(预计投递量 5000+)
• 建议匹配度达到 75% 以上再投递
技术实现
- 关键词提取:LLM + 规则引擎混合提取技能关键词
- 权重计算:基于 JD 中关键词出现频率、位置(标题/要求/加分项)计算权重
- 隐藏需求推断:基于行业知识库 + LLM 推理,识别 JD 中未明说但隐含的要求
8.3 JD 匹配度检测(Match Score Engine)
功能描述
对比用户画像与目标岗位 JD,从多个维度计算匹配度,生成可视化差距分析报告。
评分维度
| 维度 | 权重 | 说明 |
|---|---|---|
| 技能匹配 | 35% | 用户技能 vs 岗位硬性技能要求 |
| 项目匹配 | 25% | 用户项目经历 vs 岗位项目经验要求 |
| 关键词匹配 | 20% | 简历关键词 vs JD 高频关键词(ATS 视角) |
| 学历匹配 | 10% | 用户学历 vs 岗位要求 |
| 经验匹配 | 10% | 用户工作/实习年限 vs 岗位要求 |
输出示例
┌─────────────────────────────────────┐
│ 岗位匹配度报告 │
│ │
│ 综合评分:72 / 100 │
│ ████████░░░░░░░░░░ │
│ │
│ 各维度得分: │
│ 技能匹配 ████████░░ 80% │
│ 项目匹配 ██████░░░░ 65% │
│ 关键词匹配 █████░░░░░ 55% │
│ 学历匹配 █████████░ 95% │
│ 经验匹配 ███████░░░ 75% │
│ │
│ 优势: │
│ ✅ Python 基础扎实 │
│ ✅ 学历符合要求 │
│ │
│ 不足: │
│ ❌ 缺少 Redis 集群经验 │
│ ❌ 项目描述缺少关键词(FastAPI) │
│ ❌ 无分布式项目经历 │
│ │
│ 建议: │
│ • 补充 Redis 集群学习(预计 2 周) │
│ • 优化项目描述,增加技术关键词 │
│ • 学习分布式系统基础概念 │
└─────────────────────────────────────┘
交互设计
- 雷达图对比:用户能力雷达图 vs 岗位要求雷达图,重叠区域一目了然
- 差距列表:按优先级排序的不足项,每项可点击「追问」了解详情
- 投递建议:匹配度 < 60% 提示「建议先提升技能」;60-80% 提示「可投递,建议优化简历」;> 80% 提示「高度匹配,建议立即投递」
8.4 AI 简历定向优化(Resume Optimizer)
功能描述
基于用户画像和目标岗位 JD,AI 生成定向优化后的简历内容。提供两种优化模式,满足不同场景需求。
优化前准备
上传 JD
↓
AI 解析 JD
↓
AI 计算当前匹配度(优化前基准)
↓
用户选择优化模式
├─ ① 一键优化
└─ ② 逐条修改
↓
生成新简历
↓
重新计算 JD 匹配度
↓
生成修改报告
↓
导出 PDF
模式一:一键优化(One-Click Optimize)
适用场景:海投、校招、时间紧迫
AI 自动执行:
- 改写项目描述(STAR 法则强化)
- 调整经历排序(最匹配岗位的经历前置)
- 增加岗位关键词(自然融入 JD 高频词)
- 调整技能模块(突出岗位要求的技能)
- 优化自我评价(对齐岗位需求)
- 量化表达(将模糊描述改为具体数据)
交互:用户点击「立即生成」,10 秒内获得优化版本。
模式二:逐条对比修改(Diff Mode)
适用场景:精准投递、重要岗位、用户希望掌控每个修改点
页面设计:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 原文 │ │ AI 建议 │ │ 修改理由 │
│ │ │ │ │ │
│ 会 Python │ │ 熟练使用 Python │ │ JD 中 Python │
│ │ │ 完成 RESTful │ │ 权重 80%,建议 │
│ │ │ API 开发,熟悉 │ │ 突出框架经验 │
│ │ │ FastAPI 框架 │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
[ ✅ 接受 ] [ ❌ 拒绝 ] [ 🔄 重新生成 ]
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 负责后端开发 │ │ 基于 FastAPI │ │ 增加技术栈细节 │
│ │ │ + MySQL 设计 │ │ 和量化成果, │
│ │ │ 核心模块 API, │ │ 符合 STAR 法则 │
│ │ │ QPS 提升 40% │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
[ ✅ 接受 ] [ ❌ 拒绝 ] [ 🔄 重新生成 ]
交互设计:
- 三栏布局:原文 | AI 建议 | 修改理由
- 每行修改独立操作:接受 / 拒绝 / 重新生成
- 修改理由清晰说明:基于 JD 的哪个要求、为什么这样改
- 类似 Git Diff 的体验,用户有完全掌控感
AI 修改报告
优化完成后,不直接下载,而是生成详细修改报告:
┌─────────────────────────────────────┐
│ AI 修改报告 │
│ │
│ 本次优化概况: │
│ │
│ 增加关键词: │
│ ✅ FastAPI │
│ ✅ Docker │
│ ✅ Redis │
│ ✅ 分布式系统 │
│ │
│ 优化项目描述:3 项 │
│ 删除无关内容:2 项 │
│ 新增 STAR 描述:4 处 │
│ 调整经历顺序:1 处 │
│ │
│ ATS 评分变化: │
│ 优化前:68 分 │
│ 优化后:89 分 │
│ 提升:+21 分 │
│ │
│ JD 匹配度变化: │
│ 优化前:72% │
│ 优化后:91% │
│ 提升:+19% │
│ │
│ [查看优化后简历] [导出 PDF] │
└─────────────────────────────────────┘
优化策略
- 关键词对齐:将 JD 中的高频技能关键词自然融入简历描述
- STAR 法则强化:将平淡的描述改写为「情境-任务-行动-结果」结构
- 量化表达:将模糊描述改为具体数据(如"提升性能"→"QPS 从 100 提升到 500")
- 优势前置:将最匹配岗位要求的经历放在前面,弱化不相关内容
- 岗位语言适配:根据目标公司/行业的用语习惯调整表达方式
8.5 简历导出(Resume Export)
支持格式
| 格式 | MVP | 默认 | 说明 |
|---|---|---|---|
| ✅ | ✅ 默认 | 高质量排版,可直接用于官网、Boss、牛客上传 | |
| Word(docx) | ✅ | - | 便于后续手动修改 |
| Markdown | ✅ | - | 便于技术岗位展示 |
| 纯文本 | ✅ | - | 便于粘贴到官网表单 |
PDF 导出特性
- 专业排版模板(简洁/技术/商务三种风格)
- 自动分页优化
- 支持中文完美显示
- 文件大小优化(< 500KB)
8.6 岗位投递管理中心(Job Tracker)
功能定位
帮助用户统一管理所有求职岗位,形成「AI 求职 CRM」。这是整个产品最值钱的功能模块之一,将平台从「单点工具」升级为「全流程操作系统」。
核心能力
投递管理中心:
├── 岗位记录
│ ├── 公司名、岗位名、JD
│ ├── 投递渠道(官网 / Boss / 牛客 / 内推)
│ ├── 投递截止时间
│ ├── 当前状态(待投递 / 已投递 / 面试中 / Offer / 淘汰)
│ └── 匹配度分数
├── 面试流程跟踪
│ ├── 面试轮次(一面 / 二面 / 三面 / HR 面)
│ ├── 每轮时间、形式、面试官
│ ├── 每轮反馈记录
│ └── 下一轮提醒
├── 待投岗位管理
│ ├── 未投原因记录(缺少技能 / 等待内推 / 简历未改 / 薪资太低等)
│ ├── 缺少技能自动关联学习规划
│ └── 截止提醒
├── 学习进度关联
│ ├── 每个岗位关联需要补齐的技能
│ ├── 学习完成度可视化
│ └── 完成后自动提升匹配度
└── 数据统计
├── 投递总数、面试率、Offer 率
├── 各状态岗位分布
└── 近期截止岗位提醒
页面设计
列表视图:
┌─────────────────────────────────────────────────────────────────────┐
│ 我的岗位(Job Tracker) │
├─────────────────────────────────────────────────────────────────────┤
│ [全部] [待投递 5] [已投递 12] [面试中 3] [Offer 1] [淘汰 8] │
├─────────────────────────────────────────────────────────────────────┤
│ 岗位名称 公司 匹配度 状态 截止日期 AI 建议 │
│ ───────────────────────────────────────────────────────────────── │
│ 后端开发工程师 腾讯 89% 待投递 09-15 建议立即投递│
│ Java 开发工程师 阿里 61% 待投递 09-10 缺 Redis │
│ AI 应用工程师 美团 95% 二面 09-20 准备三面 │
│ 后端开发工程师 字节 78% 已投递 09-18 等待反馈 │
│ ... │
└─────────────────────────────────────────────────────────────────────┘
详情视图:
┌─────────────────────────────────────────────────────────────────────┐
│ 腾讯 · 后端开发工程师(校招) │
│ 匹配度:89% │ 状态:待投递 │ 截止:2026-09-15 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ JD 摘要 │
│ [查看完整 JD 解析报告] │
│ │
│ 面试流程 │
│ ○ 简历筛选 → ○ 一面 → ○ 二面 → ○ HR 面 → ○ Offer │
│ [更新状态] │
│ │
│ 投递记录 │
│ 投递渠道:官网 │
│ 投递时间:- │
│ HR 联系人:- │
│ 备注:- │
│ │
│ 关联学习 │
│ 缺少技能:Redis 集群(50%)、Docker(20%) │
│ [查看学习规划] │
│ │
│ AI 建议 │
│ • 匹配度 89%,建议立即投递 │
│ • 简历已优化(腾讯定向版 V3) │
│ • 距离截止还有 10 天 │
│ │
│ [立即投递] [查看优化简历] [模拟面试] [删除] │
└─────────────────────────────────────────────────────────────────────┘
待投岗位原因管理
用户标记岗位为「待投递」时,需选择/填写原因:
| 原因类型 | 系统动作 |
|---|---|
| 缺少技能:XXX | 自动关联学习规划,生成补齐路线 |
| 等待内推 | 记录内推联系人,到期提醒 |
| 简历还没改 | 跳转到简历优化流程 |
| 薪资太低 | 标记低优先级,后续可重新评估 |
| 其他 | 用户自定义备注 |
截止时间提醒
- 7 天提醒:系统推送「某岗位将在 7 天后截止,建议尽快投递」
- 3 天提醒:系统推送「某岗位将在 3 天后截止,当前匹配度 XX%」
- 1 天提醒:系统推送「某岗位明天截止,是否立即投递?」
- 已截止:岗位灰色显示,标记为「已截止」
8.7 面试流程管理(Interview Tracker)
功能描述
与投递管理中心联动,跟踪每个岗位的面试进度,记录每轮反馈。
面试轮次
标准流程:
简历筛选 → 一面(技术)→ 二面(技术/项目)→ 三面(主管)→ HR 面 → Offer
校招简化流程:
简历筛选 → 笔试 → 一面 → 二面 → HR 面 → Offer
功能特性
- 状态更新:用户手动更新每轮状态,系统记录时间轴
- 反馈记录:每轮面试后记录反馈(如「Redis 问得不好」「HashMap 不会」)
- AI 建议:基于反馈,Agent 自动生成复习建议(如「建议今晚复习 Redis 持久化机制」)
- 面试准备:距离下一轮面试前 1 天,自动推送模拟面试和相关知识点复习
8.8 技能学习追踪(Learning Tracker)
功能描述
基于匹配度差距分析,自动生成学习路线,并跟踪学习进度。
学习规划生成
输入:当前能力画像 + 目标岗位 JD
↓
AI 分析差距技能
↓
按优先级排序(岗位权重高 + 用户基础好 → 优先)
↓
生成阶段性学习计划
↓
推荐学习资源(文档、视频、项目、书籍)
示例输出
目标岗位:腾讯后端开发工程师
当前匹配度:72% → 目标:90%
学习路线(预计 4 周):
第 1 周:Redis 进阶
├── 目标:掌握 Redis Cluster、缓存策略
├── 资源:
│ ├── 《Redis 设计与实现》第 17 章
│ ├── 动手搭建 3 主 3 从集群
│ └── 牛客网 Redis 面试题 20 道
└── 里程碑:完成集群搭建 + 通过 10 道面试题
进度:█████░░░░░ 50%
第 2 周:Docker 容器化
├── 目标:掌握 Dockerfile、Compose、基础运维
├── 资源:
│ ├── Docker 官方文档
│ └── 实战:将现有项目容器化部署
└── 里程碑:完成 1 个项目容器化
进度:██░░░░░░░░ 20%
第 3 周:分布式系统基础
├── 目标:理解 CAP、BASE、一致性哈希
├── 资源:
│ ├── 《分布式系统概念与设计》
│ └── 面经:分布式系统设计题 10 道
└── 里程碑:能讲清楚 3 个分布式概念
进度:░░░░░░░░░░ 0%
第 4 周:项目优化
├── 目标:将分布式和缓存融入项目描述
├── 资源:
│ └── AI 简历优化工具
└── 里程碑:生成新版项目描述,匹配度提升 15%+
进度:░░░░░░░░░░ 0%
进度追踪
- 技能进度条:每个技能独立进度条,用户完成学习后手动打卡
- 里程碑系统:每个阶段设置明确里程碑,完成后解锁下一阶段
- 匹配度动态更新:每完成一个技能学习,系统自动重新计算匹配度
- Agent 提醒:未按时完成学习时,Agent 主动推送提醒
8.9 AI 模拟面试(AI Interview)
功能描述
基于用户画像(技能、项目、经历)和目标岗位 JD,AI 生成高度个性化的模拟面试。支持多轮对话,面试结束后生成详细评分报告。
面试流程
1. 从投递管理中心选择岗位(或手动粘贴 JD)
↓
2. AI 生成面试题(5-10 题,混合类型)
↓
3. 用户回答(文字输入)
↓
4. AI 追问(根据回答深度决定是否追问)
↓
5. 单题评分 + 点评
↓
6. 全部完成后生成综合报告
↓
7. 用户可对话追问报告内容
题目类型
| 类型 | 占比 | 说明 |
|---|---|---|
| 技术基础题 | 30% | 针对 JD 要求的硬性技能 |
| 项目深挖题 | 30% | 基于用户项目经历,追问技术细节和决策思路 |
| 场景设计题 | 20% | 给定业务场景,要求设计方案 |
| 行为面试题 | 15% | 考察沟通、协作、抗压能力 |
| 开放思考题 | 5% | 考察技术视野和学习能力 |
评分维度
| 维度 | 权重 | 说明 |
|---|---|---|
| 内容准确性 | 30% | 技术点是否正确、全面 |
| 表达逻辑性 | 25% | 回答结构是否清晰、有层次 |
| 项目理解深度 | 25% | 对项目细节的理解和反思深度 |
| 沟通流畅度 | 20% | 语言是否流畅、专业术语使用是否准确 |
输出:面试报告
┌─────────────────────────────────────┐
│ 模拟面试报告 │
│ 岗位:腾讯后端开发工程师 │
│ 时长:25 分钟 │
│ │
│ 综合评分:78 / 100 │
│ │
│ 各题得分: │
│ Q1 技术基础 85 ✅ 扎实 │
│ Q2 项目深挖 72 ⚠️ 细节不足 │
│ Q3 场景设计 65 ❌ 缺考虑并发 │
│ Q4 行为面试 90 ✅ 表达优秀 │
│ Q5 开放思考 80 ✅ 有见解 │
│ │
│ 核心建议: │
│ • 项目经历需补充性能优化细节 │
│ • 场景设计题需考虑高并发和容错 │
│ • 建议复习 Redis 持久化机制 │
│ │
│ [追问:Q3 的正确思路是什么?] │
└─────────────────────────────────────┘
8.10 对话式报告追问(Report Q&A)
功能描述
平台所有分析报告(JD 解析报告、匹配评分报告、面试报告、学习规划报告)均支持对话式追问。用户可对报告中的任意结论提出疑问,AI 基于报告上下文实时解答。
追问场景示例
场景 1:对 JD 解析报告追问
报告:该岗位要求熟悉分布式系统
用户追问:「分布式系统具体指什么?我需要学到什么程度?」
AI 回答:「根据 JD 上下文,这里的分布式系统主要指:
1. 了解 CAP 理论和 BASE 理论
2. 熟悉至少一种分布式缓存(Redis Cluster)
3. 了解分布式事务解决方案(如 TCC、Saga)
建议掌握程度:能结合项目讲清楚选型理由和遇到的问题」
场景 2:对匹配评分报告追问
报告:你的 Redis 技能与岗位要求差距较大
用户追问:「我学过 Redis 基础,为什么还是差距大?」
AI 回答:「岗位要求中 Redis 权重 40%,且多次提到'集群'、'高可用'。
你目前掌握的是单机版使用,而岗位需要:
• Redis Cluster 搭建与运维
• 缓存穿透/击穿/雪崩的解决方案
• 分布式锁的实现
建议优先补充第 2 点,面试高频考点」
场景 3:对面试报告追问
报告:Q3 场景设计题得分 65,缺少并发考虑
用户追问:「那道题目正确的思路应该是什么?」
AI 回答:「题目要求设计一个秒杀系统,正确思路应包含:
1. 前端:限流(验证码、按钮防抖)
2. 网关:Nginx 限流 + 黑名单
3. 应用层:Redis 预减库存 + 异步下单
4. 数据库:乐观锁防止超卖
你的回答只提到了第 4 点,缺少前三层的防护设计。
建议复习《高并发系统设计》相关章节」
技术实现
- 报告上下文注入:将当前报告的完整内容作为 System Prompt 的一部分
- 引用定位:用户点击报告中的任意段落即可发起追问,AI 自动定位到相关上下文
- 多轮记忆:同一报告内的追问保持对话上下文,支持连续深入探讨
- 知识库增强:结合求职知识库(技术文档、面经、学习资源)给出专业解答
8.11 求职驾驶舱(Dashboard)
功能定位
首页核心模块,集中展示用户求职全生命周期的关键数据,将平台从「单点 AI 工具」升级为「AI 求职操作系统」。
展示内容
┌─────────────────────────────────────────────────────────────────────┐
│ 求职驾驶舱(Dashboard) │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 目标岗位 │ │ 已优化 │ │ 已投递 │ │ 面试中 │ │ Offer │ │
│ │ 15 │ │ 8 │ │ 12 │ │ 3 │ │ 1 │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────────┐ │
│ │ 匹配度变化趋势 │ │ 技能学习完成度 │ │
│ │ │ │ │ │
│ │ 腾讯后端 89% ────── │ │ Redis █████░░░░ 50% │ │
│ │ 阿里 Java 61% ── │ │ Docker ██░░░░░░░ 20% │ │
│ │ 美团 AI 95% ─────── │ │ FastAPI █████████ 90% │ │
│ │ 字节后端 78% ───── │ │ K8s ░░░░░░░░░ 0% │ │
│ │ │ │ │ │
│ └─────────────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ ┌─────────────────────────────┐ │
│ │ 最近截止岗位 │ │ 面试通过率 │ │
│ │ │ │ │ │
│ │ ⚠️ 腾讯后端 3天后截止 │ │ 投递 → 面试:25% │ │
│ │ ⚠️ 阿里 Java 5天后截止 │ │ 一面 → 二面:67% │ │
│ │ ✅ 美团 AI 已投递 │ │ 二面 → Offer:50% │ │
│ │ │ │ │ │
│ └─────────────────────────┘ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Agent 动态 │ │
│ │ 「早上好!今天有 2 个岗位即将截止,Redis 学习进度 50%, │ │
│ │ 建议今天完成 Redis 集群搭建。」 │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────┘
数据指标
| 指标 | 说明 |
|---|---|
| 目标岗位数量 | 用户已解析 JD 的岗位总数 |
| 已优化简历数量 | 用户已生成优化版本的简历数 |
| 已投递岗位 | 投递管理中心中状态为「已投递」的数量 |
| 面试中岗位 | 状态为「面试中」的数量 |
| Offer 数量 | 状态为「Offer」的数量 |
| 匹配度变化趋势 | 各目标岗位优化前后的匹配度对比 |
| 技能学习完成度 | 各差距技能的学习进度条 |
| 最近截止岗位 | 按截止时间排序的待投递岗位提醒 |
| 面试通过率 | 投递→面试、一面→二面、二面→Offer 的转化率 |
| Agent 动态 | 今日任务提醒、学习建议、截止预警 |
8.12 AI 职业成长 Agent(Career Agent)
功能描述
Agent 持续跟踪用户的求职状态和能力成长,动态调整规划,主动推送提醒和建议。
Agent 能力
Career Agent:
├── 状态跟踪
│ ├── 记录每次简历优化记录
│ ├── 记录每次模拟面试结果
│ ├── 跟踪学习进度(用户标记完成)
│ ├── 记录投递结果(用户反馈)
│ └── 记录面试反馈
├── 动态评估
│ ├── 定期重新计算岗位匹配度
│ ├── 识别能力成长(对比历史画像)
│ └── 发现新的技能差距
├── 主动推送
│ ├── 学习任务提醒("本周该复习 Redis 集群了")
│ ├── 岗位机会推送("某大厂新开了目标岗位,匹配度 85%")
│ ├── 截止提醒("腾讯后端岗位 3 天后截止,建议立即投递")
│ ├── 面试准备提醒("你明天有面试,建议复习以下知识点")
│ └── 进度回顾("本周你完成了 3 项学习任务,匹配度提升 5%")
└── 规划调整
├── 根据学习进度调整后续计划
├── 根据面试反馈调整重点方向
└── 根据投递结果优化目标岗位选择
交互示例
Agent 每日晨报:
早上好!今天是 2026-08-15,你的求职进度:
📋 本周任务:
✅ 完成 Redis 集群学习(已打卡)
⏳ 复习 MySQL 索引优化(还剩 2 天)
⏳ 模拟面试 1 次(建议今天完成)
📈 能力成长:
• 本周匹配度提升:72% → 78%(+6%)
• 新增掌握技能:Redis Cluster、分布式锁
⚠️ 截止提醒:
• 腾讯后端岗位将在 3 天后截止(09-15)
• 当前匹配度 89%,简历已优化(腾讯定向版 V3)
💡 今日建议:
• 建议今天完成简历投递
• 需要我帮你一键复制官网填充内容吗?
【用户回复】"帮我复制填充内容"
【Agent】"好的,已生成腾讯校招官网填充内容,已复制到剪贴板。"
9. 数据库设计
9.1 数据库选型
- 结构化数据:MySQL 8.0
- 稳定可靠,JSON 字段支持半结构化数据
- 全文检索支持
- 事务支持,保证数据一致性
- 向量数据:Chroma(纯 Python,本地文件存储)
- 零配置,pip 安装即可
- 数据存本地文件,无需额外数据库服务
- 支持相似度搜索和元数据过滤
9.2 ER 图
┌─────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ users │ │ user_profiles │ │ resume_versions │
├─────────────┤ ├─────────────────┤ ├─────────────────┤
│ id (PK) │◄──────│ id (PK) │ │ id (PK) │
│ username │ 1:1 │ user_id (FK) │ │ user_id (FK) │
│ email │ │ education (JSON)│ │ resume_name │
│ password │ │ skills (JSON) │ │ resume_path │
│ phone │ │ projects (JSON) │ │ resume_type │
│ created_at │ │ experiences(JSON)│ │ parsed_json │
└─────────────┘ │ preferences(JSON)│ │ version │
│ career_goal │ │ created_at │
└─────────────────┘ └─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│job_descriptions │ │ match_results │ │resume_optimizations│
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ id (PK) │ │ id (PK) │ │ id (PK) │
│ user_id (FK) │◄──────│ user_id (FK) │ │ user_id (FK) │
│ title │ │ profile_id (FK) │ │ profile_id (FK) │
│ company │ │ jd_id (FK) │◄─────│ jd_id (FK) │
│ raw_text │ │ overall_score │ │ original_content│
│ parsed_result │ │ skill_score │ │ optimized_content│
│ required_skills │ │ project_score │ │ changes (JSON) │
│ skill_weights │ │ gap_analysis │ │ ats_score_before│
│ hidden_needs │ │ advantages │ │ ats_score_after │
│ competitiveness │ │ disadvantages │ │ match_score_before│
└─────────────────┘ └─────────────────┘ │ match_score_after│
│ optimize_mode │
│ user_confirmed │
│ exported_at │
└─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│interview_sessions│ │ report_qa │ │ learning_plans │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ id (PK) │ │ id (PK) │ │ id (PK) │
│ user_id (FK) │ │ user_id (FK) │ │ user_id (FK) │
│ profile_id (FK) │ │ report_type │ │ profile_id (FK) │
│ jd_id (FK) │ │ report_id │ │ target_jd_id(FK)│
│ questions (JSON)│ │ question │ │ plan_content │
│ answers (JSON) │ │ answer │ │ milestones (JSON)│
│ scores (JSON) │ │ context_snapshot│ │ status │
│ overall_score │ │ parent_id (FK) │ │ created_at │
│ overall_feedback│ │ created_at │ └─────────────────┘
│ status │ └─────────────────┘
└─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ job_tracker │ │ website_fill_ │ │ agent_memories │
│ │ │ templates │ │ │
├─────────────────┤ ├─────────────────┤ ├─────────────────┤
│ id (PK) │ │ id (PK) │ │ id (PK) │
│ user_id (FK) │ │ company_name │ │ user_id (FK) │
│ company │ │ website_domain │ │ memory_type │
│ position │ │ field_mapping │ │ content │
│ jd_id (FK) │◄─────│ template_content│ │ related_report │
│ status │ │ is_popular │ │ context (JSON) │
│ apply_deadline │ │ created_at │ │ is_read │
│ apply_time │ └─────────────────┘ │ created_at │
│ interview_round │ └─────────────────┘
│ interview_feedback│
│ reason_not_apply│
│ missing_skills │
│ learning_progress│
│ match_score │
│ notes │
│ next_action │
└─────────────────┘
9.3 核心表结构
-- 用户表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
phone VARCHAR(20),
target_city VARCHAR(50),
expected_salary_min INT,
expected_salary_max INT,
career_status ENUM('preparing', 'applying', 'interviewing', 'offered') DEFAULT 'preparing',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
-- 用户画像表
CREATE TABLE user_profiles (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL UNIQUE,
education JSON COMMENT '教育背景数组',
skills JSON COMMENT '技能列表 [{name, level, proof}, ...]',
projects JSON COMMENT '项目经历数组',
experiences JSON COMMENT '实习/工作经历数组',
preferences JSON COMMENT '职业偏好',
career_goal TEXT COMMENT '长期职业规划',
resume_file_path VARCHAR(500) COMMENT '上传的简历文件路径',
parsed_resume JSON COMMENT 'AI 解析后的简历结构化数据',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- 简历版本管理表
CREATE TABLE resume_versions (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
resume_name VARCHAR(100) NOT NULL COMMENT '简历名称(如"腾讯定向版")',
resume_path VARCHAR(500) NOT NULL,
resume_type ENUM('pdf', 'doc', 'docx', 'image') NOT NULL,
parsed_json JSON COMMENT 'AI 解析结果',
version INT DEFAULT 1,
is_default BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- 岗位描述表
CREATE TABLE job_descriptions (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
title VARCHAR(200) NOT NULL,
company VARCHAR(200),
raw_text TEXT COMMENT '原始 JD 文本',
parsed_result JSON COMMENT '解析结果',
required_skills JSON COMMENT '硬性技能列表',
bonus_skills JSON COMMENT '加分技能列表',
skill_weights JSON COMMENT '技能权重分布',
hidden_needs TEXT COMMENT 'AI 推断的隐藏需求',
competitiveness JSON COMMENT '竞争力评估',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- 匹配结果表
CREATE TABLE match_results (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
profile_id INT NOT NULL,
jd_id INT NOT NULL,
overall_score INT COMMENT '综合评分 0-100',
skill_score INT COMMENT '技能匹配分',
project_score INT COMMENT '项目匹配分',
keyword_score INT COMMENT '关键词匹配分',
education_score INT COMMENT '学历匹配分',
experience_score INT COMMENT '经验匹配分',
gap_analysis JSON COMMENT '差距分析',
advantages JSON COMMENT '优势列表',
disadvantages JSON COMMENT '不足列表',
suggestions TEXT COMMENT '综合建议',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (jd_id) REFERENCES job_descriptions(id)
);
-- 简历优化记录表
CREATE TABLE resume_optimizations (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
profile_id INT NOT NULL,
jd_id INT NOT NULL,
original_content TEXT COMMENT '原始简历内容',
optimized_content TEXT COMMENT '优化后内容',
changes JSON COMMENT '修改点记录',
ats_score_before INT COMMENT '优化前 ATS 评分',
ats_score_after INT COMMENT '优化后 ATS 评分',
match_score_before INT COMMENT '优化前匹配度',
match_score_after INT COMMENT '优化后匹配度',
optimize_mode ENUM('one_click', 'diff') NOT NULL,
user_confirmed BOOLEAN DEFAULT FALSE,
exported_at TIMESTAMP NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (jd_id) REFERENCES job_descriptions(id)
);
-- 面试会话表
CREATE TABLE interview_sessions (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
profile_id INT NOT NULL,
jd_id INT NOT NULL,
questions JSON COMMENT '题目列表',
answers JSON COMMENT '用户回答',
scores JSON COMMENT '各题评分',
overall_score INT COMMENT '综合评分',
overall_feedback TEXT COMMENT '综合反馈',
weak_points JSON COMMENT '薄弱点列表',
improvement_plan TEXT COMMENT '改进建议',
status ENUM('ongoing', 'completed') DEFAULT 'ongoing',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
completed_at TIMESTAMP NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- 报告追问记录表
CREATE TABLE report_qa (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
report_type ENUM('jd', 'match', 'interview', 'learning') NOT NULL,
report_id INT NOT NULL,
question TEXT NOT NULL,
answer TEXT NOT NULL,
context_snapshot JSON COMMENT '追问时的报告上下文快照',
parent_id INT NULL COMMENT '支持追问链',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (parent_id) REFERENCES report_qa(id)
);
-- 学习规划表
CREATE TABLE learning_plans (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
profile_id INT NOT NULL,
target_jd_id INT COMMENT '目标岗位',
plan_content JSON COMMENT '规划内容',
milestones JSON COMMENT '里程碑',
status ENUM('active', 'completed', 'abandoned') DEFAULT 'active',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
-- 投递管理表(Job Tracker)
CREATE TABLE job_tracker (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
company VARCHAR(200) NOT NULL COMMENT '公司名称',
position VARCHAR(200) NOT NULL COMMENT '岗位名称',
jd_id INT COMMENT '关联的 JD ID',
jd_text TEXT COMMENT 'JD 文本(冗余存储)',
status ENUM('pending', 'applied', 'screening', 'interview', 'offer', 'rejected', 'expired') DEFAULT 'pending',
apply_deadline DATE COMMENT '投递截止时间',
apply_time TIMESTAMP NULL COMMENT '实际投递时间',
apply_channel ENUM('website', 'boss', 'niuke', 'referral', 'email', 'other') COMMENT '投递渠道',
interview_round INT DEFAULT 0 COMMENT '当前面试轮次',
interview_feedback JSON COMMENT '每轮面试反馈',
reason_not_apply VARCHAR(200) COMMENT '未投原因',
missing_skills JSON COMMENT '缺少技能列表',
learning_progress JSON COMMENT '学习进度',
match_score INT COMMENT '匹配度分数',
notes TEXT COMMENT '用户备注',
next_action VARCHAR(200) COMMENT '下一步行动',
reminder_sent BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (jd_id) REFERENCES job_descriptions(id)
);
-- 官网填充模板表
CREATE TABLE website_fill_templates (
id INT PRIMARY KEY AUTO_INCREMENT,
company_name VARCHAR(100) NOT NULL,
website_domain VARCHAR(200),
field_mapping JSON COMMENT '字段映射规则',
template_content TEXT COMMENT '填充模板内容',
is_popular BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Agent 记忆表
CREATE TABLE agent_memories (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
memory_type ENUM('learning', 'milestone', 'reminder', 'feedback', 'interaction') NOT NULL,
content TEXT NOT NULL,
related_report_type VARCHAR(50),
related_report_id INT,
context JSON,
is_read BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
10. 系统架构设计
10.1 整体架构
┌─────────────────────────────────────────────────────────────────────┐
│ 用户层 │
│ 浏览器 / 移动端(响应式 Web) │
└─────────────────────────┬───────────────────────────────────────────┘
│ HTTPS
┌─────────────────────────▼───────────────────────────────────────────┐
│ 接入层 │
│ Nginx(反向代理 + 静态资源托管) │
└─────────────────────────┬───────────────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────────────┐
│ 前端层 │
│ Vue3 + Vite + JavaScript + Element Plus │
│ Axios(API 请求)+ ECharts(数据可视化) │
└─────────────────────────┬───────────────────────────────────────────┘
│ RESTful API + JWT
┌─────────────────────────▼───────────────────────────────────────────┐
│ 网关层 │
│ FastAPI + Pydantic(参数校验)+ 统一异常处理 │
│ JWT 认证 + 请求限流 + CORS │
└─────────────────────────┬───────────────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────────────┐
│ 服务层 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 简历解析 │ │ 画像构建 │ │ JD 解析 │ │ 匹配评分 │ │ 简历优化 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 导出简历 │ │ 投递管理 │ │ 面试管理 │ │ 学习追踪 │ │ 模拟面试 │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ 报告追问 │ │ 驾驶舱 │ │ Agent │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────┬───────────────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────────────┐
│ AI 层 │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ LLM Gateway(多模型统一封装) │ │
│ │ - DeepSeek-V3(主力,中文理解好,性价比高) │ │
│ │ - GPT-4(备用,复杂推理场景) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ Prompt 模板引擎(Jinja2 动态渲染) │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ 向量检索(Chroma) │ │
│ └─────────────────────────────────────────────────────────────┘ │
└─────────────────────────┬───────────────────────────────────────────┘
│
┌─────────────────────────▼───────────────────────────────────────────┐
│ 数据层 │
│ ┌──────────────────────┐ ┌──────────────────────┐ │
│ │ MySQL 8.0 │ │ Chroma(本地文件) │ │
│ │ (结构化数据存储) │ │ (向量数据存储) │ │
│ └──────────────────────┘ └──────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
10.2 核心数据流
用户上传简历(PDF/Word/图片)
↓
OCR / 文档解析 → 提取文本
↓
LLM 结构化抽取 → 生成用户画像
↓
保存到 MySQL(users + user_profiles + resume_versions)
↓
用户粘贴目标岗位 JD
↓
LLM 解析 JD → 提取技能要求、权重、隐藏需求
↓
保存到 MySQL(job_descriptions)
↓
匹配度计算(用户画像 vs 岗位画像)
↓
生成匹配报告 → 保存到 MySQL(match_results)
↓
用户选择优化模式(一键 / 逐条)
↓
LLM 生成优化内容
↓
保存优化记录(resume_optimizations)
↓
生成 AI 修改报告(ATS 评分变化、关键词补充)
↓
用户确认 → 导出简历(PDF 默认)
↓
记录岗位到投递管理中心(job_tracker,状态:待投递)
↓
用户完成投递 → 更新状态为「已投递」
↓
模拟面试 → 保存到 interview_sessions
↓
生成学习规划 → 保存到 learning_plans
↓
Agent 持续跟踪 → 保存到 agent_memories
↓
循环:学习进度更新 → 重新计算匹配度 → 优化简历 → 投递
10.3 技术选型
| 层级 | 技术选型 | 选型理由 |
|---|---|---|
| 后端框架 | FastAPI + Python 3.11 | 异步高性能、自动 API 文档、类型提示、开发效率高 |
| 前端框架 | Vue3 + Vite + JavaScript | 组合式 API、响应式系统、构建速度快、生态成熟 |
| UI 组件库 | Element Plus + Tailwind CSS | 企业级组件丰富、主题定制灵活、中文文档完善 |
| 数据库 | MySQL 8.0 | 稳定可靠,JSON 字段支持半结构化数据,全文检索 |
| 向量检索 | Chroma | 纯 Python、零配置、数据存本地文件、无需额外服务 |
| 缓存 | Python 内存缓存 / 本地 JSON | 轻量级,后续可平滑替换为 Redis |
| 文档解析 | PyMuPDF + python-docx + PaddleOCR | PDF/Word 精准提取、图片 OCR 识别 |
| AI/LLM | DeepSeek API + LangChain | 中文理解好、性价比高、LangChain 工具链成熟 |
| Embedding | BGE-small-zh | 轻量级、中文效果好、可本地运行 |
| 可视化 | ECharts | 功能强大、中文文档完善、Vue 集成简单 |
| 部署 | 云服务器 + Nginx + Gunicorn | 轻量级部署,运维成本低 |
11. 页面设计
11.1 页面结构
┌─────────────────────────────────────────────────────────────────────┐
│ 导航栏 │
│ [Logo] [驾驶舱] [JD解析] [简历优化] [模拟面试] [投递管理] [学习] [Agent] │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ 【页面内容区域】 │
│ │
└─────────────────────────────────────────────────────────────────────┘
11.2 核心页面清单
| 页面 | 路径 | 功能 |
|---|---|---|
| 登录/注册 | /auth | 用户认证 |
| 简历上传 | /resume/upload | 上传简历,AI 解析 |
| 画像确认 | /profile | 查看/编辑用户画像 |
| 驾驶舱 | /dashboard | 首页,展示核心数据 |
| JD 解析 | /jd/parse | 粘贴 JD,查看解析报告 |
| 匹配报告 | /match/:jd_id | 查看匹配度分析 |
| 简历优化 | /optimize/:jd_id | 一键/逐条优化简历 |
| 修改报告 | /optimize/report/:id | 查看 AI 修改报告 |
| 模拟面试 | /interview/:jd_id | 进行模拟面试 |
| 面试报告 | /interview/report/:id | 查看面试评分报告 |
| 投递管理 | /tracker | 管理所有投递岗位 |
| 岗位详情 | /tracker/:id | 查看单个岗位详情 |
| 学习规划 | /learning | 查看学习路线和进度 |
| Agent 对话 | /agent | 与 Career Agent 对话 |
| 设置 | /settings | 个人信息、偏好设置 |
12. API 设计
12.1 核心接口列表
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/auth/register | 用户注册 |
| POST | /api/auth/login | 用户登录 |
| GET | /api/auth/me | 获取当前用户 |
| POST | /api/resume/upload | 上传简历 |
| GET | /api/resume/versions | 获取简历版本列表 |
| GET | /api/profile | 获取用户画像 |
| PUT | /api/profile | 更新用户画像 |
| POST | /api/jd/parse | 解析岗位 JD |
| GET | /api/jd/:id | 获取 JD 详情 |
| POST | /api/match/calculate | 计算匹配度 |
| GET | /api/match/:id | 获取匹配报告 |
| POST | /api/optimize/one-click | 一键优化简历 |
| POST | /api/optimize/diff | 逐条优化简历 |
| GET | /api/optimize/report/:id | 获取优化报告 |
| POST | /api/optimize/confirm | 确认优化内容 |
| POST | /api/export/pdf | 导出 PDF 简历 |
| POST | /api/interview/start | 开始模拟面试 |
| POST | /api/interview/answer | 提交面试回答 |
| GET | /api/interview/report/:id | 获取面试报告 |
| POST | /api/qa/ask | 报告追问 |
| GET | /api/tracker | 获取投递列表 |
| POST | /api/tracker | 添加投递记录 |
| PUT | /api/tracker/:id | 更新投递状态 |
| DELETE | /api/tracker/:id | 删除投递记录 |
| GET | /api/learning/plan | 获取学习规划 |
| POST | /api/learning/milestone | 完成里程碑 |
| GET | /api/agent/messages | 获取 Agent 消息 |
| POST | /api/agent/chat | 与 Agent 对话 |
| GET | /api/dashboard | 获取驾驶舱数据 |
13. AI Agent 工作流
13.1 Agent 架构
用户输入
│
┌──────────────┼──────────────┐
│ │ │
┌─────▼─────┐ ┌────▼────┐ ┌─────▼─────┐
│ 意图识别 │ │ 上下文 │ │ 知识检索 │
│ (Intent) │ │ (Context)│ │ (RAG) │
└─────┬─────┘ └────┬────┘ └─────┬─────┘
│ │ │
└────────────┼────────────┘
│
┌──────▼──────┐
│ LLM 推理 │
│ (DeepSeek) │
└──────┬──────┘
│
┌────────────┼────────────┐
│ │ │
┌─────▼─────┐ ┌────▼────┐ ┌─────▼─────┐
│ 生成回答 │ │ 执行动作 │ │ 更新记忆 │
│ (Response) │ │ (Action) │ │ (Memory) │
└────────────┘ └─────────┘ └───────────┘
13.2 Agent 记忆机制
记忆分层:
├── 短期记忆(对话上下文)
│ └── 存储:当前会话的最近 10 轮对话
│ └── 用途:报告追问、面试对话、Agent 聊天
├── 中期记忆(用户状态)
│ └── 存储:MySQL agent_memories 表
│ └── 内容:学习进度、面试结果、投递记录、Agent 推送历史
├── 长期记忆(用户画像)
│ └── 存储:MySQL user_profiles 表
│ └── 内容:技能、项目、经历、偏好、职业规划
└── 知识记忆(领域知识)
└── 存储:Chroma 向量库
└── 内容:技能文档、面试题库、学习资源、行业报告
13.3 Agent 触发器
| 触发条件 | 触发时机 | Agent 动作 |
|---|---|---|
| 每日晨报 | 每天 9:00 | 推送今日任务、学习提醒、截止预警 |
| 截止提醒 | 截止前 7/3/1 天 | 推送岗位截止提醒,建议立即投递 |
| 面试准备 | 面试前 1 天 | 推送模拟面试和相关知识点复习 |
| 学习完成 | 用户标记完成 | 更新匹配度,生成新的学习建议 |
| 匹配度变化 | 每周 | 生成匹配度变化报告,调整目标岗位 |
| 新岗位推送 | 用户设置目标公司后 | 推送目标公司新开岗位 |
14. 商业模式
14.1 C 端免费增值模式
| 功能 | 免费版 | 付费版(会员) |
|---|---|---|
| 简历上传解析 | ✅ 完整功能 | ✅ 完整功能 |
| 用户画像构建 | ✅ 完整功能 | ✅ 完整功能 |
| JD 解析 | ✅ 每日 3 次 | ✅ 无限次 |
| 匹配评分 | ✅ 基础评分 | ✅ 深度分析 + 竞争力评估 |
| 简历优化 | ✅ 每日 1 次 | ✅ 无限次 + 多版本管理 |
| 官网填充 | ✅ 基础模板 | ✅ 热门企业模板 + Chrome 插件 |
| 模拟面试 | ✅ 每日 1 轮(3 题) | ✅ 无限轮次 + 详细报告 |
| 报告追问 | ✅ 每报告 3 次 | ✅ 无限追问 |
| 投递管理 | ✅ 完整功能 | ✅ 完整功能 |
| 学习规划 | ✅ 基础 3 个月计划 | ✅ 动态调整 + 资源推荐 |
| Agent 跟进 | ✅ 基础提醒 | ✅ 深度跟进 + 岗位推送 |
| 驾驶舱 | ✅ 基础数据 | ✅ 完整数据 + 趋势分析 |
会员定价建议:
- 月卡:¥29.9
- 季卡:¥69.9
- 年卡:¥199
14.2 B 端拓展(V2.0)
- 高校就业中心:批量简历诊断、就业数据看板、AI 就业指导
- 招聘机构:候选人能力画像、岗位匹配推荐、人才库管理
- 企业 HR:简历智能筛选、面试问题生成、候选人评估报告
附录
A. 项目目录结构
zhituxingtu/
├── backend/ # FastAPI 后端
│ ├── app/
│ │ ├── api/ # API 路由
│ │ │ ├── auth.py # 认证
│ │ │ ├── resume.py # 简历解析
│ │ │ ├── profile.py # 用户画像
│ │ │ ├── jd.py # JD 解析
│ │ │ ├── match.py # 匹配评分
│ │ │ ├── optimize.py # 简历优化
│ │ │ ├── interview.py # 模拟面试
│ │ │ ├── tracker.py # 投递管理
│ │ │ ├── learning.py # 学习规划
│ │ │ ├── qa.py # 报告追问
│ │ │ ├── agent.py # Agent 对话
│ │ │ └── dashboard.py # 驾驶舱
│ │ ├── core/ # 配置、安全、日志
│ │ ├── models/ # SQLAlchemy 模型
│ │ ├── services/ # 业务逻辑
│ │ ├── agents/ # LangChain Agent
│ │ ├── prompts/ # Prompt 模板
│ │ └── utils/ # 工具函数
│ ├── tests/
│ ├── alembic/ # 数据库迁移
│ ├── requirements.txt
│ └── main.py
├── frontend/ # Vue3 前端
│ ├── src/
│ │ ├── views/ # 页面视图
│ │ ├── components/ # 公共组件
│ │ ├── api/ # 后端接口封装
│ │ ├── stores/ # Pinia 状态管理
│ │ └── utils/
│ ├── package.json
│ └── vite.config.js
├── chroma_data/ # Chroma 向量数据
├── docs/ # 设计文档
├── README.md
└── docker-compose.yml
B. Python 依赖(requirements.txt)
# Web 框架
fastapi==0.111.0
uvicorn[standard]==0.30.0
python-multipart==0.0.9
# 数据库
sqlalchemy==2.0.31
pymysql==1.1.1
alembic==1.13.2
# 文档解析
pymupdf==1.24.7
python-docx==1.1.2
paddleocr==2.7.0
# AI / LLM
langchain==0.2.0
langchain-openai==0.1.0
openai==1.35.0
# 向量检索
chromadb==0.5.0
sentence-transformers==3.0.0
# 工具
pydantic==2.8.0
python-jose[cryptography]==3.3.0
passlib[bcrypt]==1.7.4
httpx==0.27.0
jinja2==3.1.0
# 开发
pytest==8.2.0
C. 前端依赖(package.json 核心)
{
"dependencies": {
"vue": "^3.4.0",
"vue-router": "^4.3.0",
"pinia": "^2.1.0",
"axios": "^1.7.0",
"element-plus": "^2.7.0",
"echarts": "^5.5.0",
"vue-echarts": "^6.7.0"
},
"devDependencies": {
"vite": "^5.3.0",
"@vitejs/plugin-vue": "^5.0.0",
"tailwindcss": "^3.4.0"
}
}
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)