fix: 修复档案扫描并优化岗位 AI 批量匹配 - #47
Open
damingishere-coder wants to merge 12 commits into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
改动摘要 - 简历 AI 配置通过现有本地 Codex CLI 生成最多 8 个岗位关键词;BOSS 与智联分别选择并使用标签式输入。 - 修复固定 Chrome 扩展身份和精确 CORS 授权,扩展版本升级为 1.4.2,仅访问本机 6866。 - BOSS 与智联扫描启动、状态、停止、查重和批量提交均绑定必填 profileId;切换档案会清除其他档案和旧版无档案断点,并从第一个关键词开始。 - 后端拒绝缺失档案和已切换档案的请求,固定使用请求档案完成入库与入队;进度事件携带档案 ID,前端忽略其他档案的迟到事件。 - 两个平台优先使用稳定岗位 ID 去重;只有缺失稳定 ID 时才回退公司加职位,避免不同岗位 ID 被错误合并。 - 新增 Flyway V13,为 BOSS 的 profile_id 加规范化 encrypt_id 建立唯一索引;历史重复会明确失败,不自动删数据。 - AI 分析任务校验 profileId、jobRowId 和 jobKey 与岗位行一致;本地 Codex 返回非法 JSON 时只使用同一模型和 Schema 重试一次。 - 多关键词采集按当前档案历史去重后继续深翻,并记录候选、重复、新增和停止原因。 ## 验证结果 - 后端:263 个测试通过,0 失败,4 个既有条件测试跳过。 - 前端:20 个测试通过;typecheck、生产构建通过;lint 0 error、34 个既有 warning。 - Chrome 扩展:78 个测试通过;15 个引用文件和 11 个 JavaScript 文件校验通过。 - git diff --check 通过,仅测试文件行尾转换提示。 - 本地运行时:Flyway V13、数据库完整性 ok、/api/ready 正常;仅监听 127.0.0.1:6866,8888 未监听。 - CORS:固定扩展 Origin 预检 200;未知扩展与普通网页 403。 - 受控验收:ID 4 从第 1/1 个关键词开始,45 个候选中新增 1 个,入库 1、入队 1、分析成功 1;岗位、任务与 AI 结果稳定 ID 一致,未执行真实投递;原 8 关键词和每词 30 条配置已恢复。 ## 风险 - Chrome 未打包扩展更新后必须手动重新加载并刷新招聘网站标签页。 - 平台反爬、验证码或实际可用新岗位不足时,单关键词结果仍可能低于目标数。 - V13 遇到历史稳定 ID 重复会中止启动,需要先人工核对数据。 ## 回滚 - 代码可回退提交 623c1f1,并由 RunDock 重新启动 Backend。 - 本地数据库和 RunDock 配置已在清理前完整备份;恢复数据库前必须先停止 6866,并同时恢复对应备份文件。 - 不自动合并本 PR。 ## 本次追加:岗位 AI 匹配提质、提速与失败修复 - 合法 JSON 先原样解析,只有失败后才进入兼容修复,避免中文弯引号破坏本来合法的内容。 - 模型只输出六维状态和双方原文证据;后端按 35/25/15/10/10/5 权重与 MATCH/PARTIAL/UNKNOWN/CONFLICT 系数确定性计分,再按普通/优先公司现有阈值决定 APPLY/SKIP。缺失信息按 UNKNOWN 处理;硬冲突必须有双方原文并与 CONFLICT 分项复用证据,否则降级为待核实。 - 持久队列按同一档案、同一平台每批最多 5 岗,最多 2 批并发;每岗保留独立任务 ID、租约、状态和事务。整批格式错误最多重试一次,单项缺失或无效只重试该岗位,不影响其余结果。 - 任务去重键加入当前简历指纹;批次日志记录数量、耗时、失败数、未知数和失败率。 - Boss 分析页结构化展示结论、匹配证据、明确差距、待核实、分项得分和硬冲突;按 Boss 平台显示排队/处理中数量,页面可见且有任务时每 3 秒轮询,失败任务支持单岗重试。 ## 最新验证 - 后端:277 个测试,0 失败,0 错误,4 个条件测试跳过;
BUILD SUCCESSFUL。 - 前端:9 个测试文件、29 个测试通过;typecheck 通过;lint 0 error、34 个既有 warning;生产构建通过并生成 13 个静态页面。 -git diff --check通过;未修改依赖、数据库结构、AI Provider、登录方式、认证配置或模型。 ## 本次追加风险与回滚 - 实际 3–5 倍提速需在下一次正常扫描中依据新增批次耗时/失败率日志验证,本次未额外消耗真实模型额度压测。 - 未自动重跑历史失败岗位、未重启 6866 服务、未执行真实投递。 - 本次追加可依次回退提交99b1edee09455e1c0d23af95e6958be208b18dcc与e6564ea333948f6c1e11d176ad416c476f9ce879;不自动合并本 PR。 ## 本次追加:历史 Boss 岗位应用新分数线 - 保存普通/优先公司分数线时,在同一事务内使用历史ai_score重判当前档案的 Boss “AI不匹配”岗位。 - 仅将达到对应分数线的岗位改为“待确认”并同步ai_decision=APPLY;保留 AI 分数、原因和历史分析记录。 - 不反向降级其他状态,不调用 AI Provider,不创建投递请求,不触发真实投递。 - 接口响应增加bossHistoricalPromotedCount,页面显示提升数量并刷新列表和统计;重复保存幂等。 ## 本次追加验证 - 后端:281 个测试,0 失败、0 错误,4 个条件测试跳过;包含临时 SQLite 的档案隔离、普通/优先阈值、状态保护、幂等、投递尝试不变和事务回滚验证。 - 前端:10 个测试文件、31 个测试通过;lint 0 error(34 个既有 warning),typecheck 与生产构建通过,13 个静态页面生成成功。 -git diff --check通过;未新增数据库迁移、依赖或真实外部调用。 ## 本次追加风险与回滚 - 上线前先备份真实 SQLite;保存分数线后符合条件的历史岗位会发生预期的单向状态提升,但仍需用户确认才会实际投递。 - 本次追加可回退提交03b51b67679f9ad1ab4ef4bdee5fa3a4e5025261;数据库恢复必须先停止 6866 服务。 - 不自动合并本 PR。 ## 2026-09-03 线上应用结果 - 已通过 Alter 精确重启AI-JobPilot/Backend;6866 继续仅监听127.0.0.1,新监听 PID 为206144。 - 停服后备份 SQLite 到项目内target/backups/boss-threshold-20260903-174837/getjobs.db;大小13,799,424字节,SHA-2561546F1ECFB4C6E691109A91BF45654660E2CB079CD093079D70B69F9B17745C8,源与备份一致。 - 当前档案以60/60保存一次:接口返回历史提升58条;AI不匹配从87降为29,待确认从0增至58,岗位总数仍为108。 -17条已投递和4条 AI 分析失败未变化;提升岗位的 AI 分数与原因未变化。 - Boss 投递尝试数保持1,AI 分析任务数保持108,待处理与处理中均为0;未触发 AI Provider 或外部平台操作。 - 重启后首页、/api/ready、/api/ai/thresholds和 Boss 统计接口均验证通过,数据库状态UP、SchemaVALID。本次追加:BOSS 岗位 JD 话术可靠发送
AI_GREETING/CONFIRMED/GREETING_RENDERED_EXACT。UNKNOWN且不自动重试;批量遇到首个UNKNOWN立即暂停,后续岗位不触达并回到待确认。EXISTING_CONVERSATION/NOT_SENT/ALREADY_CONTACTED证据供人工核对。greeting_source、greeting_outcome、greeting_evidence;BOSS 历史页同步显示来源、快照和验证结果。本次追加验证
clean test jacocoTestReport成功。git diff --check通过;未修改依赖或锁文件,未重启服务、未重载扩展、未执行真实投递。本次追加风险与回滚
git revert ebf5a04cfbc822170b216f0ecc420a94ac52dc79,如需恢复旧数据库结构,必须先停服并恢复迁移前备份。