fix(中电建): 跨天首次运行回溯 3 天, 补抓前一天后半天发布的公告
bug 复现: state 文件按日期存放, 跨天首次运行 sinceDate=今天, 漏掉前一天 8:00 CST 之后才发布的公告 (用户实例: 2409490555 中电建水电十四局橡胶电缆, 7/21 22:45 发布). 修复: 新增 BACKFILL_DAYS=3 配置, state 为空时 sinceDate = today - 3 天, 新增'跨天补抓'日志分支. 验证: 删 state 后重跑拉到 80 条 / 28 条招采公告, 全部下载成功. 本地 + 生产 scp 同步部署, 4 个关键词全流程测试通过.
This commit is contained in:
parent
072696321e
commit
fc4a4e81d4
@ -36,6 +36,8 @@ const TYPES = ['招采公告'];
|
||||
// 可选:留空则从上次抓取日期继续;有值则从指定日期开始
|
||||
const START_DATE = '';
|
||||
const END_DATE = new Date().toISOString().split('T')[0]; // 今天
|
||||
// 跨天首次运行(state 为空)时回溯 N 天, 避免错过前一天后半天发布的公告
|
||||
const BACKFILL_DAYS = 3;
|
||||
const OUTPUT_DIR = path.join(process.env.HOME, 'desktop/招标公告', END_DATE);
|
||||
const PDF_DIR = path.join(OUTPUT_DIR, 'pdf'); // PDF 附件
|
||||
const HTML_DIR = path.join(OUTPUT_DIR, 'html'); // HTML 转换(待安装转换技能)
|
||||
@ -346,12 +348,17 @@ async function main() {
|
||||
|
||||
log(`========== 开始抓取: ${KEYWORD} ==========`);
|
||||
|
||||
// 确定起始日期(差量:上次运行日期 或 配置的 START_DATE)
|
||||
const sinceDate = START_DATE || (state.lastRun ? state.lastRun.split('T')[0] : null) || END_DATE;
|
||||
// 确定起始日期(差量:上次运行日期 或 配置的 START_DATE;跨天首次运行回溯 N 天)
|
||||
const sinceDate = START_DATE || (state.lastRun ? state.lastRun.split('T')[0] : null) || (() => {
|
||||
const d = new Date(Date.now() - BACKFILL_DAYS * 86400 * 1000);
|
||||
return d.toISOString().split('T')[0];
|
||||
})();
|
||||
if (START_DATE) {
|
||||
log(`指定日期范围: ${START_DATE} ~ ${END_DATE}`);
|
||||
} else if (state.lastRun) {
|
||||
log(`差量模式: 自 ${state.lastRun.substring(0, 10)} 以来新增`);
|
||||
} else if (sinceDate !== END_DATE) {
|
||||
log(`跨天补抓: ${sinceDate} ~ ${END_DATE}`);
|
||||
} else {
|
||||
log(`首次运行: ${sinceDate} ~ ${END_DATE}`);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user