v10.7 18点平稳落地三连修: ①scrape批内18点软截止(处理完当前候选人即优雅收,不再被收队强杀) ②runner识别软截止正常收工 ③enforce-cutoff无条件以最新数据发日报(白天异常早发的不完整日报不再拦截18点正式日报)
This commit is contained in:
+20
-11
@@ -77,26 +77,35 @@ for (const acct of ['hr1', 'hr2']) {
|
||||
}
|
||||
}
|
||||
|
||||
// ---------- 3. 日报补发 ----------
|
||||
// ---------- 3. 日报发送(v1.1:18:05 无条件生成当日完整数据日报发群)----------
|
||||
// 2026-08-27 教训:白天异常时旧代码发过一次不完整日报并落 flag,收队看到 flag 就跳过,
|
||||
// 导致当天最终日报缺失。现在收队是日报唯一出口,无条件以最新数据重发。
|
||||
const sentFlag = path.join(STATE_DIR, `report-sent-${today()}`);
|
||||
if (fs.existsSync(sentFlag)) {
|
||||
reportSent = true;
|
||||
log('日报今日已由 runner 发送 ✅');
|
||||
} else {
|
||||
log('日报未发送,补发中...');
|
||||
{
|
||||
log('生成当日日报并发群...');
|
||||
try {
|
||||
const env = { ...process.env };
|
||||
// 从状态文件取聊天剩余
|
||||
for (const [acct, key] of [['hr1', 'CHAT_LEFT_HR1'], ['hr2', 'CHAT_LEFT_HR2']]) {
|
||||
try { const s = JSON.parse(fs.readFileSync(path.join(STATE_DIR, `state-${acct}.json`), 'utf8')); if (s.chatLeft != null) env[key] = String(s.chatLeft); } catch { }
|
||||
// 从状态文件取聊天剩余 + 状态文案
|
||||
for (const [acct, key, skey] of [['hr1', 'CHAT_LEFT_HR1', 'HR1_STATUS'], ['hr2', 'CHAT_LEFT_HR2', 'HR2_STATUS']]) {
|
||||
try {
|
||||
const s = JSON.parse(fs.readFileSync(path.join(STATE_DIR, `state-${acct}.json`), 'utf8'));
|
||||
if (s.chatLeft != null) env[key] = String(s.chatLeft);
|
||||
const map = {
|
||||
kicked_out: '🚨 被顶号(他处登录)', login_expired: '🚨 登录失效', platform_blocked: '⛔ 平台阻碍(限额等)',
|
||||
qr_expired: '🚨 等扫码但二维码过期', waiting_relogin: '⏳ 等待扫码登录', stopped_by_user: '⏹️ 手动停止',
|
||||
tunnel_failed: '⚠️ 隧道失败', alert: '⚠️ 异常中止', chat_exhausted: '✅ 聊天耗尽收工',
|
||||
time_cutoff: '✅ 18点收工', running: '✅ 在线',
|
||||
};
|
||||
if (s.date === today()) env[skey] = map[s.status] || '✅ 在线';
|
||||
} catch { }
|
||||
}
|
||||
const md = execSync(`node ${SCRIPTS}/daily-report.js`, { cwd: SCRIPTS, encoding: 'utf8', timeout: 60000, env });
|
||||
fs.writeFileSync(`/tmp/daily-report-enforce-${today()}.md`, md);
|
||||
execSync(`${HERMES} send -t "feishu:${GROUP}" -f /tmp/daily-report-enforce-${today()}.md`, { stdio: ['pipe', 'pipe', 'pipe'], timeout: 60000 });
|
||||
fs.writeFileSync(sentFlag, new Date().toISOString());
|
||||
reportSent = true;
|
||||
log('日报已补发到群 ✅');
|
||||
} catch (e) { findings.push(`日报补发失败: ${String(e.message).slice(0, 150)}`); }
|
||||
log('日报已发送到群 ✅');
|
||||
} catch (e) { findings.push(`日报发送失败: ${String(e.message).slice(0, 150)}`); }
|
||||
}
|
||||
|
||||
// ---------- 4. 汇总输出 ----------
|
||||
|
||||
Reference in New Issue
Block a user