新增文档: 筛选规则与流程总览(架构图/时间线/单人处理链/异常矩阵/消息策略/控制命令)
This commit is contained in:
@@ -0,0 +1,151 @@
|
|||||||
|
# 智联简历筛选机器人 — 规则与流程总览
|
||||||
|
|
||||||
|
> 更新:2026-08-27 · 代码版本 zhaopin-scrape.js v10.6 / daily-runner.js v1.3
|
||||||
|
> 岗位:二手车出口外贸业务员 · 双账号:hr1(Chrome·合塑)/ hr2(Edge·派卡)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、总体架构
|
||||||
|
|
||||||
|
```
|
||||||
|
┌────────────────────────────────────────────────────────────┐
|
||||||
|
│ Hermes 容器(服务器) │
|
||||||
|
│ │
|
||||||
|
│ cron 定时任务 ×3 │
|
||||||
|
│ ├─ 09:30 启动 hr1 runner ─┐ │
|
||||||
|
│ ├─ 09:30 启动 hr2 runner ─┤→ daily-runner.js(守护循环) │
|
||||||
|
│ └─ 18:05 强制收队+异常检测 → enforce-cutoff.js │
|
||||||
|
│ │
|
||||||
|
│ 数据库:/opt/data/recruitment-data/recruitment-live.db │
|
||||||
|
│ 日报:daily-report.js(固定模板,仅18点发) │
|
||||||
|
└──────────────┬─────────────────────────────────────────────┘
|
||||||
|
│ SSH 隧道(9223→Chrome / 9225→Edge)
|
||||||
|
▼
|
||||||
|
任务机 100.64.0.7(Tailscale 组网)
|
||||||
|
├─ Chrome(hr1·合塑账号)→ 智联推荐页
|
||||||
|
└─ Edge (hr2·派卡账号)→ 智联推荐页
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 二、每日时间线
|
||||||
|
|
||||||
|
```
|
||||||
|
09:30 ─── cron 触发,双账号 runner 启动
|
||||||
|
│ 每批 50-100 人(随机)|批间休息 10-20 分钟(随机)
|
||||||
|
│ 循环跑批,直到 ↓ 三种结束条件之一
|
||||||
|
│
|
||||||
|
├── 聊天次数耗尽(智联每日上限)→ 收工
|
||||||
|
├── 北京时间 18:00 → 收工
|
||||||
|
└── 异常(见第四节)→ 停止/等待
|
||||||
|
│
|
||||||
|
18:05 ─── 强制收队任务:强杀残留进程 → 状态核对 → 日报发群(每日仅此1条统计)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 三、单个候选人处理流程(核心筛选链)
|
||||||
|
|
||||||
|
```
|
||||||
|
列表卡片(不开弹窗的快速预筛)
|
||||||
|
│
|
||||||
|
├─ 同事已聊过 ──────────────────→ 跳过
|
||||||
|
├─ 已打招呼(显示"继续沟通")─────→ 跳过
|
||||||
|
├─ 年龄 > 35 ───────────────────→ 跳过(一票否决)
|
||||||
|
├─ 卡片文本命中黑名单企业 ────────→ 跳过(当前黑名单:合塑、派卡)
|
||||||
|
│
|
||||||
|
▼ 打开简历弹窗
|
||||||
|
│
|
||||||
|
├─ ⛔ 阻碍即停:弹窗无有效简历数据(日浏览1000份限额/提示页)
|
||||||
|
│ → 不入库 → 二次核查 → 私聊告警 → 当日终态停止
|
||||||
|
│
|
||||||
|
├─ 弹窗"人才处理记录" > 2条 ─────→ 通过筛选也不打招呼(照常评分入库)
|
||||||
|
│
|
||||||
|
▼ 硬性预筛门槛(v10,任一不过即"不相关",不评分不打招呼)
|
||||||
|
│
|
||||||
|
│ A 外贸经验关键词(仅看工作经历):外贸/外销/国际贸易/国贸/海外销售/
|
||||||
|
│ 出口/跨境电商/跨境/二手车出口/汽车出口/整车出口/海外市场 —— 必须命中
|
||||||
|
│ D 毕业年份 2020-2026(教育经历中最晚年份;解析不到不硬拒)
|
||||||
|
│ 年龄 ≤ 35
|
||||||
|
│ (B 专业 / C 证书 命中只作加分记录,不单独放行)
|
||||||
|
│
|
||||||
|
▼ 七维评分(满分35)
|
||||||
|
│
|
||||||
|
│ 行业匹配 / 外贸核心能力 / 语言能力 / 客户开发获客 /
|
||||||
|
│ 专业背景 / 稳定性 / 活跃度 各 1-5 分
|
||||||
|
│ ⚠ highTrade/获客 只从工作经历匹配(求职意向写的不算)
|
||||||
|
│ ⚠ 外贸经验强时语言保底 2 分(语言不一票否决)
|
||||||
|
│
|
||||||
|
▼ 分级(动态阈值)
|
||||||
|
│
|
||||||
|
│ 行业≥4 时:≥24 推荐 ✅ | 其他:≥26 推荐 ✅
|
||||||
|
│ ≥18 待定 ⏳ | <18 不推荐 ❌
|
||||||
|
│
|
||||||
|
▼ 打招呼(弹窗内点击,天然绑定正确的人)
|
||||||
|
│
|
||||||
|
├─ 推荐/待定 且 门槛通过 且 处理记录≤2 且 未打过 → ✋ 打招呼
|
||||||
|
└─ 其余 → 跳过(照常入库)
|
||||||
|
│
|
||||||
|
▼ 入库(弹窗完整内容:raw_text 全文 + 结构化拆分字段 + 评分明细)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 四、异常场景处理矩阵
|
||||||
|
|
||||||
|
| 场景 | 检测方式 | 动作 | 通知 |
|
||||||
|
|------|---------|------|------|
|
||||||
|
| **登录失效** | URL 跳登录页 / 页面报登录失效 | 刷新登录页抓二维码 → 进入扫码监听 | 🚨 群(文字+二维码+"今日不需要可忽略") |
|
||||||
|
| **被顶号**(他人登录) | km-modal弹窗+"账号已在其他设备或浏览器登录"文案+重登按钮 三重判定 | 点掉弹窗 → 抓二维码 → 进入扫码监听 | 🚨 群(同上样式) |
|
||||||
|
| **扫码监听** | 每30秒读页面:登录成功 / 二维码过期 / 17:30到时 | 成功→自动复工+群内回应扫码人;过期或到时→当日收工 | ✅ 群("扫码登录成功,任务已自动恢复") |
|
||||||
|
| **平台阻碍**(日浏览1000份限额等) | 弹窗有效性核查:缺姓名或缺全部结构信号=无效页 | 碰到即终态停止,当日不恢复(start 命令也拒绝) | 🚨 私聊(附弹窗原文) |
|
||||||
|
| **风控/验证码** | 验证码DOM / "操作过于频繁"等文案 | 立即停止(不自动恢复,需人工评估) | 🚨 私聊 |
|
||||||
|
| **隧道断连** | CDP 端口探测 | 重建隧道(最多等10分钟) | 失败才 🚨 私聊 |
|
||||||
|
| **触底** | .recommend-indicator "已经到底啦" | 立即刷新页面取新数据 | 无(日志) |
|
||||||
|
| **累计200人** | 账号当日累计计数 | 刷新页面(清理DOM/内存) | 无(日志) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 五、消息策略(渠道纪律)
|
||||||
|
|
||||||
|
| 消息 | 渠道 | 频次 |
|
||||||
|
|------|------|------|
|
||||||
|
| 登录失效/被顶号告警(带二维码) | 群(数字HR) | 事件触发 |
|
||||||
|
| 扫码成功回应 | 群 | 事件触发 |
|
||||||
|
| 📊 每日数据日报 | 群 | 每日 1 条(仅 18:05,异常中止不发) |
|
||||||
|
| 平台阻碍 / 风控 / 隧道失败 | 私聊(管理员) | 事件触发 |
|
||||||
|
| 批次过程消息(人数/聊天剩/累计等) | ❌ 不发 | 只写日志 |
|
||||||
|
|
||||||
|
- 所有消息文案写死在代码模板里,禁止手写改写、不用礼貌用语
|
||||||
|
- 日报由 daily-report.js 确定性生成(双账号分开统计合并在一条消息)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 六、运行控制命令
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bash stop-tasks.sh status # 查状态(含卡死检测)
|
||||||
|
bash stop-tasks.sh stop # 全停(hr1+hr2)
|
||||||
|
bash stop-tasks.sh stop hr2 # 只停 hr2
|
||||||
|
bash stop-tasks.sh start hr1 # 启动(platform_blocked 当日拒绝)
|
||||||
|
bash stop-tasks.sh restart hr2 # 重启(先停干净再启)
|
||||||
|
```
|
||||||
|
|
||||||
|
停止机制三层:STOP.flag 旗标优雅退出(不打断进行中的打招呼)→ SIGTERM/3秒/SIGKILL → ps 复验无残留。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 七、关键文件
|
||||||
|
|
||||||
|
| 文件 | 用途 |
|
||||||
|
|------|------|
|
||||||
|
| scripts/zhaopin-scrape.js | 单批抓取+评分+打招呼(v10.6) |
|
||||||
|
| scripts/daily-runner.js | 每日守护循环+异常处理+扫码监听(v1.3) |
|
||||||
|
| scripts/enforce-cutoff.js | 18:05 强制收队+异常检测+日报兜底 |
|
||||||
|
| scripts/daily-report.js | 日报固定模板生成 |
|
||||||
|
| scripts/login-qrcode.js | 登录二维码抓取 |
|
||||||
|
| scripts/stop-tasks.sh | 启停控制 |
|
||||||
|
| scripts/scoring.js | 门槛+评分纯逻辑(改关键词改这里) |
|
||||||
|
| templates/report-format.md | 消息模板纪律文档 |
|
||||||
|
|
||||||
|
**改筛选关键词/毕业年份窗口** → 改 `scoring.js` 顶部 CONFIG,跑 `node scoring.js` 自测,然后 git 提交推送。
|
||||||
Reference in New Issue
Block a user