fix: 修复 BOSS 实习岗位类型筛选#342
Conversation
802c802 to
151b4ff
Compare
|
Rebased onto master after the 1.16.0 release and pushed (maintainer edit). The rebase needed one fix: your Full CI is green on the rebased commit (P0 baseline, lint, typecheck, docs, tests 3.10–3.13), and it's Before merge, could you confirm the two empirical BOSS API assumptions — request |
|
已确认,这两个假设都来自 2026-07-16 至 2026-07-17 的 BOSS 现场搜索,不是 mock 或仅根据标题推断:
因此可以确认当前现场语义是:请求 这里的 fail-closed 是有意设计,且只在 BOSS 的“仅实习”请求中启用:如果以后 BOSS 省略或更改该枚举,宁可记录类型不匹配并少返回,也不要把兼职/全职岗位进入后续导出或批量候选;混合职位类型搜索和其他平台不受影响。 感谢帮忙 rebase,并把 CHANGELOG 调整到新的 |
can4hou6joeng4
left a comment
There was a problem hiding this comment.
感谢修复与详实的现场验证,已复核通过:
boss.yaml实习 1903→1902 与你在网页端交叉验证的结果一致;响应侧校验仅在 zhipin 且明确只搜实习时按jobType=4失败关闭,混合类型搜索与其他平台不受影响(均有测试覆盖)。cache_schema: 2通过缓存键版本化让旧的混合岗位缓存自然失效,无需数据迁移,处理干净。- 新增字段均为加性扩展、信封结构不变,字段名也避开了输出脱敏关键词表。
- export 的过滤余量固定 +5 页、有上界,不会因 hasMore 异常形成无界翻页。
- 已确认
run_search_pipeline(platform, ...)在真实调用链上传入的是带name属性的 Platform 实例,过滤在生产路径生效,不只是测试 fake。
CI 9 项全绿,合并。
关联 Issue / Related Issue
无现有 Issue。本 PR 直接修复已复现的 BOSS 实习筛选错误。
变更说明 / Summary
BOSS 直聘的职位类型存在两层编码:搜索请求中的“实习”应使用
jobType=1902,列表响应中真实实习岗位的jobType为4。原实现把“实习”错误映射成了兼职参数1903,并且仅依赖请求条件,可能把标题含“接受实习生”的全职或兼职岗位当作实习结果。本 PR 做了以下修复:
1903修正为1902,与全职1901、兼职1903明确区分。jobType=4失败关闭;类型缺失或非4的岗位不进入搜索、导出和批量打招呼候选。该校验不会影响智联等其他平台,也不会影响全职、兼职或混合职位类型搜索。
变更类型 / Type
Breaking Change
输出信封结构不变,仅为职位数据增加字段;严格实习搜索会正确排除非实习或类型缺失的结果。
截图 / Screenshot
无 UI 截图。终端职位表新增
type列,用于显示规范化用工类型。测试 / Test Plan
156 passeduv run ruff check src/ tests/无报错uv run mypy src/boss_agent_cli无报错uv run boss --help可加载uv run boss schema --format native返回合法 JSON 信封git diff --check通过uv run pytest tests/ -q全部通过隔离本机用户配置后,全量测试结果为
1601 passed, 2 failed。两个失败均为现有 Windows 环境问题,与本 PR 无关:test_chat_snapshot_page_merge使用系统默认 CP936 读取 UTF-8 JSON,触发UnicodeDecodeError。test_all_checks_pass在当前 Windows 环境中将windows_uv_tool_path判为warn,而测试固定断言为ok。文档与契约 / Docs & Contracts
CHANGELOG.md的[Unreleased]段落安全与规范 / Safety & Convention
fix: 修复 BOSS 实习岗位类型筛选Co-authored-by尾注或 AI 署名行