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

9.4 KiB
Raw Blame History

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 分钟演示视频(按方案第十章演示脚本录制)。

(补充完)