haixunMaster/worker/scheduler.ts

36 lines
943 B
TypeScript

import cron from "node-cron";
import { runDueAutomationTick } from "../lib/automation/engine";
let ticking = false;
async function tick() {
if (ticking) {
console.log("[automation] 上一輪尚未結束,跳過本次 tick");
return;
}
ticking = true;
const now = new Date();
try {
const results = await runDueAutomationTick(now);
if (results.length > 0) {
for (const r of results) {
console.log(
`[automation] ${r.taskType}: ${r.ok ? "OK" : "FAIL"}${r.summary}`
);
}
}
} catch (error) {
console.error("[automation] tick 失敗:", error);
} finally {
ticking = false;
}
}
function main() {
console.log("[automation] 巡樓自動化排程已啟動,每分鐘檢查到點的規則…");
console.log("[automation] 提醒:只有開啟『帳號總開關』且規則 enabled 的任務才會執行。");
cron.schedule("* * * * *", tick);
}
main();