Files
CareerNexus/docs/CareerNexus职联_项目方案补充_v3.1.md
T
RoyirinRosmontis a10442d78c CareerNexus 职联:岗位能力图谱构建与动态演化分析平台(挑战杯 XH-202621)
- 全链路:多源JD接入/清洗交叉验证/结构化抽取(星火+离线双通道)/时序知识图谱/新岗位发现/演化分析/人岗匹配/学习路径
- WebUI 五视图:驾驶舱/图谱工作台/岗位演化/匹配(单人+批量)/学习路径
- 设置中心(config.json)/Token鉴权/SQLite状态库/语义向量通道(BGE-M3本地或联网API)
- 71 个 pytest 用例;数据目录仅保留结构(.gitkeep),数据由 scripts/generate_dataset.py 复现
2026-08-03 13:15:35 +08:00

136 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# CareerNexus 职联 · 项目方案补充(v3.1)
> 本文档是《CareerNexus职联_项目方案.md》(v3.0)的补充,记录方案定稿后的**实现增量**。
> 所有内容均已落地为可运行代码并通过测试验证(pytest 53 用例全绿),与原方案不一致处以本文为准。
> 版本:v3.1 · 2026-08
---
## 一、补充概览
v3.0 方案交付了"能跑的最小完整系统"。v3.1 在此之上完成四个方向的增强:
1. **交互与展示深化**:WebUI 从"能用"升级到"企业级产品形态",演化分析从单一图表升级为七模块图表体系;
2. **应用能力扩展**:结构化简历模板与导出、批量人岗匹配、语义相似匹配通道;
3. **运行时工程化**:设置中心、Token 鉴权、SQLite 状态库、按需下载的打包策略、静态缓存控制;
4. **诚实性维护**:多处指标口径修正、测试隔离加固、文档与实现对齐。
---
## 二、前端体系(WebUI 2.0)
### 2.1 企业级设计系统
- 布局重构:**顶部品牌栏(56px)+ 横向导航条(46px,居中、选中态三重信号:主色加粗/浅蓝底/3px 指示条)**,替代原左侧深色边栏,主内容全宽。
- 设计 token:主色 #2f54eb、Arco 系语义色、8px 间距网格、按钮四态/tag/卡片/弹窗/toast/空态/骨架屏统一组件;图标全部内联 SVG,**零外部依赖、断网可用**。
- 静态资源缓存控制:非 /api 响应统一 `Cache-Control: no-cache` + 资源版本号,杜绝"浏览器拿旧前端"问题。
- **统一系统弹窗**(sysDialog 组件族:sysPrompt/sysConfirm/sysAlert/sysCopy),前端已无任何浏览器原生 alert/prompt/confirm。
- **URL 路由**:视图与图谱节点写入 location.hash(`#view=xxx&node=xxx`),刷新/分享可恢复到同一视图同一节点。
### 2.2 全景图谱工作台
- 节点四型分色分形状(Job/Skill/Industry/Scenario、待审核虚线框),必备实线/加分虚线 + 文字标签双编码,选中节点一跳高亮。
- 左上工具条(缩放/适应/筛选/标签开关/整理布局)、左下小地图与图例、导出 PNG、保存视图/分享链接。
- **右侧详情面板**(320px 可滚动):基础信息、关联节点(可点击跳转+返回)、证据来源(点击弹 JD 原文)、技能热度 sparkline、审核留痕。
- **可编辑**:节点属性编辑弹窗(写后端并留痕)、备注增删、候选节点确认/驳回。
- **连线类型复选框**:必备/加分/场景/行业四类边独立开关(默认全开),选中高亮与之一致。
- 右下"智能建议"浮层、底部演化逻辑链 chips。
### 2.3 首次使用引导
- 首次启动自动弹出"初始设置"弹窗(同设置面板),完成标记 `guided` 持久化在服务端 `config.json`(换浏览器不重弹);保存/跳过均可完成。
---
## 三、岗位演化页:七模块图表体系
信息结构自顶向下逐级下钻:
| 模块 | 内容 | 数据源 |
|---|---|---|
| ① 全部岗位演化热力图 | 岗位×季度矩阵,色深=事件数(开方缩放+封顶色阶),悬停看类型分布,点击行切换岗位 | /api/graph events |
| ② 统计条 | 当前必备/加分技能数、近 4 季度新增/退出、证据 JD 总量 | 岗位定义+事件 |
| ③ 能力画像时点对比器 | 任意两日期技能集合 diff:已退出(红)/保留(灰)/新增(绿),重要性升级带↑,点击跳图谱 | 新接口 `GET /api/jobs/{id}/snapshot?at=` |
| ④ 变更类型构成堆叠柱状图 | 每季度 新增/增强/减弱/退出 四色堆叠 | 事件 |
| ⑤ 技能生命周期甘特图 | 每技能一行,横条=生效区间(必备蓝/加分青),圆点=变更事件;读出"Struts 2019 进场 2022 退场"编年史 | 边 intervals |
| ⑥ 技能热度走势 | **每季度实际生效的技能关系数**(按 REQUIRES 边生效区间统计) | 边 intervals |
| ⑦ 事件时间轴 | 四类事件分色,点击弹证据 JD 原文,时间轴限高滚动 | 事件+source_ids |
**指标口径修正**:原"累计新增−退出"算法基线错误(忽略技能存量,导致曲线贴底看似无数据),v3.1 改为按生效区间统计真实活跃数,已用线上数据验证。
---
## 四、人岗匹配增强
### 4.1 技能归一化四级容错
1. 精确/别名(大小写不敏感):`redis→Redis`、`K8s→Kubernetes`;
2. 包含匹配(取最长命中):`微服务架构→微服务`、`Java语言→Java`(`JavaScript` 不被截胡);
3. 类别迁移提示:同类别技能作为"可迁移技能"展示;
4. **语义召回(v3.1 新增,可选增强)**:词表未命中时经向量相似度兜底(阈值 0.62,经真实数据标定——正确拦截 `JVM调优→模型微调` 错配与垃圾输入)。
诊断结果页补充"与目标岗位无关的技能(不计入评分)"展示区,消除"我加的技能哪去了"的困惑。
### 4.2 结构化简历模板与导出
- 解析增强:性别/学历/家庭住址识别(住址脱敏)、20+ 常见标题**智能分节**、**证件照提取**(docx 内嵌图 / pdf 页面图,data URI 返回)。
- 第 3 步左栏渲染**标准表格风简历**:左上照片、标签-值信息格、分节行(蓝底标题列),技能按匹配结论三色标注。
- **DOCX 导出**(`POST /api/resume/export`):照片嵌入 + 信息表 + 分节正文(命中技能加粗上色)+ 人岗匹配诊断摘要,一键下载。
- 上传支持 .txt/.docx/.pdf(≤5MB,临时文件即解析即删)。
### 4.3 批量匹配(企业服务雏形)
- 新接口 `POST /api/match/batch`:≤50 份简历对同一岗位批量打分,单份失败不拖垮整批。
- 前端"单人诊断 / 批量匹配"子页签:**拖拽文件/文件夹(递归遍历)、多选、整目录导入**三种添加方式;结果表按总分降序(候选人/总分进度条/命中/缺口/结论)。
- **CSV 批量导出**(14 列含四维分,带 BOM,Excel 中文不乱码)。
---
## 五、语义向量通道(BGE-M3)
- 双模式可选:`local`(本地权重,sentence-transformers 懒加载)/ `api`(联网 Embedding API,默认 DashScope 兼容模式 text-embedding-v4);任一就绪即启用,失败静默回退词表模式。
- 就绪检测:权重目录文件完整性(config.json + 权重文件 + 分词器)+ 依赖可导入,五字段状态经 /api/health 与 /api/config 暴露。
- 本机已实配:BGE-M3 权重 4.3GB(ModelScope 下载至 `models/bge-m3`),实测 `数据分析报表→数据分析(0.889)`、`写微服务→微服务(0.856)` 等正确命中。
---
## 六、设置中心与运行时工程
- **设置面板**(顶栏 ⚙,加宽 780px):服务监听(127.0.0.1/0.0.0.0 + 端口 + 访问令牌)、LLM API(星火/OpenAI 兼容,密钥脱敏回显)、语义向量(双模式 + 下载引导)。
- **config.json 运行时设置**:白名单键持久化,优先级 config.json > config.yaml > 默认值;LLM/令牌/语义配置保存即热生效,监听/端口需重启(面板提供"保存并重启",os.execv 原地重启)。
- **Token 鉴权**:设置令牌后 /api/* 需 `X-Access-Token` 头(health 与只读 GET /api/config 豁免),前端自动携带,401 自动弹设置引导。
- **双横幅提示**:LLM 离线回退 / 语义模型未就绪,同款橙色横幅上下排列,可独立关闭,配置后自动消失。
- **一键下载并配置**:`POST /api/semantic/setup` 异步管线(装依赖→镜像站下载权重→自动写配置),进度轮询(阶段+日志),幂等防并发——**打包只含基础环境(~400MB),重依赖按需下载**;`INCLUDE_EMBED=1` 全量镜像变体保留为断网交付选项。
---
## 七、SQLite 应用状态库
`data/careernexus.db`(标准库 sqlite3、WAL、零新增依赖):
| 表 | 内容 | 消费方 |
|---|---|---|
| audit_log | 审核/编辑留痕(时间/节点/动作/操作人/改前改后) | 图谱详情留痕区、驾驶舱消息流、/api/audit |
| review_candidates | 新岗位待审核候选(与正式图谱隔离) | 审核台、候选节点、待办计数 |
| tasks | 异步任务状态,重启可恢复,中断自动标记失败 | 任务轮询 |
首次启动自动从旧 JSON 文件迁移种子(幂等,原文件保留)。语料(jd_raw JSONL)、图谱快照(graph.json)、配置(config.json)仍留文件——**"随运行增改的状态进库,语料与快照留文件"**。
---
## 八、工程与验证现状(2026-08 实测)
- **pytest 53 用例全绿**,覆盖率 78%(新增:批量匹配、语义双模式、一键配置、结构化简历与导出、存储层、设置与鉴权等专项)。
- 测试卫生修复:路径隔离(不再污染真实 config.json)、幂等快路径(单测 150s→1.5s)。
- 装配层重构:`main.py` 瘦身为 10 行入口,`app/bootstrap.py` 承担启动装配;全工程 32 个 Python 模块、10 个子包。
- 三项指标维持:JD 解析 100% / 简历提取 100% / 人岗匹配 100%(scripts/evaluate.py 可复现)。
- Neo4j 可选组件:compose `advanced` profile + `scripts/sync_neo4j.py`(MERGE 幂等,--dry-run 可预览);Docker 默认镜像轻量离线,语义变体可选构建。
## 九、待办(下一步)
- Docker 镜像实际构建验证(Dockerfile 已就绪,未实机构建)。
- Neo4j 真实容器同步实测(当前 dry-run 验证)。
- 项目介绍 PPT(≤10 页)与 ≤10 分钟演示视频(按方案第十章演示脚本录制)。
*(补充完)*