目标
构建把任务定义与调度存于 SQLite、按解析后的 cron 表达式准时触发、在隔离子进程中带硬超时执行、并把每次结果连同输出记录进运行历史供面板展示的定时任务系统。
要点
调度器从“意图触发时刻”而非“观察到的完成时刻”重排,两分钟任务跑在五分钟调度上才不会永久漂移;漏掉的间隔只触发一次并回到日历锚点,五分钟停机不会连发五次;执行都是带超时与独立输出的子进程,卡死的命令只损失一条运行记录而非整个面板;健康是从运行历史派生的事实而非独立存储。
提示
输出在入库前截尾到固定行数——话痨任务不能慢性拖垮数据库。
验证
注入时钟测试模拟跨三个间隔的跳变断言单次触发;超时测试跑真 sleep 过限断言记录为 timed out。 项目目录骨架:
cron-dashboard/
├── src/
│ ├── scheduler.js
│ ├── runner.js
│ ├── server.js
│ ├── store.js
│ └── ui/
│ └── index.html
├── test/
│ ├── scheduler.test.js
│ └── runner.test.js
├── package.json
└── README.md
实施阶段:Job store and schedule computation → Scheduler loop → Isolated runner → Dashboard API and UI。