diff --git a/scripts/start-hr1-runner.sh b/scripts/start-hr1-runner.sh new file mode 100644 index 0000000..c4f3f1e --- /dev/null +++ b/scripts/start-hr1-runner.sh @@ -0,0 +1,8 @@ +#!/bin/bash +cd /opt/data/skills/recruitment-resume-screener/scripts || exit 1 +mkdir -p /opt/data/logs/recruitment +LOG=/opt/data/logs/recruitment/runner-hr1-$(date +%F).log +ACCOUNT=hr1 CDP_PORT=9223 nohup node daily-runner.js hr1 9223 >> "$LOG" 2>&1 & +PID=$! +echo "$PID" > /opt/data/logs/recruitment/runner-hr1.pid +echo "hr1 runner started PID=$PID" diff --git a/scripts/zhaopin-scrape.js b/scripts/zhaopin-scrape.js index 654cabc..942b834 100755 --- a/scripts/zhaopin-scrape.js +++ b/scripts/zhaopin-scrape.js @@ -272,9 +272,11 @@ async function extractModalData(page) { // v10.8:候选人级提示 ≠ 平台阻碍。"对方已关闭求职/简历已删除/对方已找到工作/用户已隐藏在线简历"等 // 是单个候选人的状态提示,应跳过该人继续;只有限额/系统级文案才是平台阻碍 // v10.9(2026-09-02):补"用户已隐藏在线简历/暂不可查看/已屏蔽"——同样是被关闭的单人弹窗 + // v10.11(2026-09-15):补"当前职位未上线"——职位级状态(推荐位职位被下线,所有弹窗同文案),终态停止 const body = text; + const jobLevelNotice = /当前职位未上线|职位已下线|职位已关闭/.test(body) && body.length < 200; const candidateLevelNotice = /已关闭求职|无法继续进行沟通|已删除|简历不存在|已找到工作|职位已关闭|隐藏在线简历|暂不可查看|已屏蔽|不合适该职位|已停止找/.test(body) && body.length < 200; - const modalBlocked = (!hasName || !hasStructure) && !candidateLevelNotice; + const modalBlocked = (!hasName || !hasStructure) && !candidateLevelNotice && !jobLevelNotice; return { modalBlocked, candidateLevelNotice,