mirror of
https://github.com/geekgeekrun/geekgeekrun.git
synced 2026-06-09 17:39:47 +08:00
- Improve chat-page-processor with better candidate handling and filtering - Update chat-page-resume extraction logic - Add new constants to constant.mjs - Enhance boss auto browse main flow with verification detection and multi-job sequence support - Expand boss chat page main flow with HR guide features - Update BossAutoSequence and BossChatPage Vue components - Add plan docs: current_status and recruiter_chat_page_hr_guide Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5.5 KiB
5.5 KiB
当前状况(2026-03-18)
本文档用于记录 招聘端(BOSS)当前已实现能力、已知问题、以及下一步修复/测试计划,方便在打包测试前统一对齐。
结论先行:沟通页流程总体正常;主要欠账在「推荐牛人」的状态判定与流程闭环(已读/已打招呼/已处理/去重不够精确),以及 Webhook 功能尚未做端到端验证与“功能安排”完善。
1. 已实现(可用能力)
1.1 Worker / UI 入口
- BossAutoBrowseAndChat / BossAutoSequence:推荐牛人 + 沟通页串联(复用同一 browser)
- BossRecommend / BossChatPage:两段可分别单独跑(用于调试)
- WebhookIntegration:Webhook 配置页(启用、URL、Headers、Payload options、测试发送/手动触发)
1.2 数据持久化(SQLite)
CandidateInfo:候选人基础信息(用于去重与状态追踪的基础)CandidateContactLog:联系记录(用于判断“是否已联系/已处理”的依据)- 迁移:
AddCandidateTables
1.3 自动化核心(boss-auto-browse-and-chat)
- 推荐牛人页:解析候选人列表、筛选、点击打招呼、处理弹窗、主循环翻页/滚动加载
- 沟通页:解析会话列表(unread 优先)、打开在线简历(Canvas hook)、可请求附件简历/下载 PDF(按配置)
- 反爬/拟人:ghost-cursor 人类轨迹、随机 delay、stealth/laodeng 等插件栈
2. 已知问题(需要修复/补齐)
2.1 推荐牛人:状态判定不够精确(优先级最高)
你提到的核心痛点是 “哪些已读、哪些已打招呼、哪些已经处理过” 没有被准确识别和闭环,导致:
- 重复处理:同一候选人被多次进入流程(浪费配额/触发风控风险)
- 漏处理:本应处理的候选人因为状态误判被跳过
- UI 展示与实际行为不一致:页面上看似“已读/已沟通”,但本地状态未落库或落库不一致
需要补齐的“状态模型”(建议落库维度)
- viewed(已读/已查看详情):是否点击过候选人卡片进入详情弹窗
- greeted(已打招呼):是否成功触发并完成“打招呼”链路(含弹窗确认)
- processed(已处理):本轮流程是否已经对该候选人做完“筛选 →(可选)打招呼/不感兴趣 → 记录”闭环
- skippedReason(跳过原因):如重复推荐/命中屏蔽名/学历不符/工作年限不符/薪资不符/技能不符/日限已满等
备注:上述状态不一定都需要新表字段;也可以通过
CandidateContactLog的 action/type + timestamp 来推断。但目前推断链路不够稳,建议明确化并保证写入时机一致。
可能的根因方向(便于定位修复点)
- DOM 层状态标识不稳定:推荐列表/卡片上的“已读/已沟通/已打招呼”可能是 class/图标变化,当前解析没有覆盖或覆盖不全
- 打招呼成功条件定义不一致:点击按钮 ≠ 实际送达;需要用弹窗、toast、按钮状态变化、或网络请求成功作为确认信号
- 去重 key 不统一:
geekId/encryptGeekId/ DOM data 属性在不同阶段使用不一致,导致写库与判断对不上 - 写库时机缺口:只在某些节点写
CandidateInfo/ContactLog,导致“已读但未落库/已打招呼但未落库”的灰状态
2.2 Webhook:尚未端到端测试 + 功能安排不完善
当前实现已经包含配置、mock 测试与触发入口,但缺少:
- 真实 run 的联动验证:推荐/沟通真实跑一轮后,是否能正确汇总候选人数据并发送
- 错误与重试体验:网络失败/4xx/5xx 时的日志、重试、以及失败队列(若开启)是否可用
- payload 与下游契合:JSON / multipart 两种模式的边界,以及简历字段(path/base64)在不同配置下是否符合预期
- “功能安排”:比如 realtime/batch 两种 sendMode 与 UI/日志/存储的配套是否完善、默认值是否合理
2.3 沟通页:目前认为正常(仅保留回归点)
你反馈沟通页正常,这里只建议在打包测试时做最小回归:
- unread 会话能按预期被识别与逐条处理
- 在线简历 Canvas 提取正常
- 附件简历下载/跳过下载配置(
skipDownload)行为符合预期
3. 打包前的测试计划(本次目标)
3.1 推荐牛人(重点验证)
- 状态一致性:同一候选人连续运行两次,不应重复“已打招呼”的人
- 去重有效:刷新/翻页/滚动加载后,已处理候选人不会再次进入队列
- 打招呼确认:出现弹窗/按钮变灰/提示信息时均能稳定判定成功或失败,并落库
3.2 Webhook(最小可行验证)
- 在本地起一个临时接收端(或用现成 request bin)接收 webhook
- 用 UI 的 保存并测试发送 验证接口可达
- 真实跑一轮推荐/沟通后,验证自动触发 payload(batch 模式)确实发送且内容合理
3.3 沟通页(回归)
- 选 3-5 个 unread 会话跑一轮,确认不崩、不重复、能落库
4. 下一步修复建议(按优先级)
- 先把推荐牛人的“状态模型”落地:明确 viewed/greeted/processed/skippedReason 的来源与写入点
- 统一去重 key:全链路统一使用同一种
geekId(或明确映射),避免 DB 与 DOM key 不一致 - 把 Webhook 做一次真实跑通:补齐失败重试/日志,并把 payload 与配置默认值调整到“开箱可用”