← 回工作地圖

22:30 排程工作健康檢查

Hermes 名稱:cron 健康檢查 · job_id:41eeb394dee7

排程中 正常 系統 純腳本 P1

這個工作做什麼

每週一至五晚上檢查所有開啟中的排程工作是否正常:有沒有執行失敗、通知沒送出去、該跑沒跑、或卡住超過兩小時的狀況。全部正常就完全安靜不發訊息,有異常才把診斷資訊推到 Telegram。

💡 為什麼需要:排程一多難免有工作悄悄掛掉,它像夜班巡邏員,確保隔天一早醒來前就知道哪些自動化壞了,不用等使用者自己發現。

什麼時候跑

⏰ 平日(一~五) 22:30(30 22 * * 1-5
上次執行:2026-08-21 22:30 下次:2026-08-24 22:30 最近結果:completed

主要規則

上下游關係

⬆️ 需要誰:—
⬇️ 誰用它的結果:—

最近的改變

讀寫了哪些資料

類型位置存取
SQLITE_TABLEselfread
SQLITE_TABLEselfread

完整任務指示(技術)

[IMPORTANT: You are running as a scheduled cron job. DELIVERY: Your final response will be automatically delivered. Do NOT use send_message.]

你是蓓兒丹娣。執行 cron 健康檢查,檢查所有 enabled cron jobs 的狀態。

## 檢查範圍
1. 使用 cronjob(action='list') 取得所有 cron jobs 清單
2. 篩選出 enabled=true 的 jobs
3. 對每個 enabled job,檢查:
   - last_status:是否為 "error"
   - 若 last_run_at 超過預期執行週期仍未執行(例如每日排程卻超過 48 小時未跑)
4. 最後一次執行是否有 delivery error

## 健康檢查報告格式

**📋 cron 健康檢查報告** (資料時間: {current_date})

✅ 全部正常時:
```
所有 {N} 個 enabled cron jobs 皆正常運作 ✅
```

⚠️ 有錯誤時,列出每個異常 job:

```
❌ 異常 Job #{n}: {job_name}
   排程: {schedule}
   上次執行: {last_run_at}
   狀態: {last_status}
   交付錯誤: {last_delivery_error or "無"}
```

## 錯誤摘要區塊(P0 — 給 LLM 診斷用)

如果有任何異常 job,在報告末尾加上以下格式的摘要區塊,讓建智大人可以直接複製貼給 LLM 思考解決方案:

```
=== CRON_ERROR_DIAG ===
Time: {ISO datetime}
Total jobs: {N} | Enabled: {E} | Errors: {Err}

Job: "{job_name}" ({job_id})
Schedule: {schedule}
Script: {script or "none"}
Last run: {last_run_at}
Status: {last_status}
Delivery error: {last_delivery_error or "none"}
Last OK: (last time it ran successfully)
Possible causes:
- (根據 error 類型推測 2-3 個可能原因)
=== END_CRON_ERROR_DIAG ===
```

錯誤類型判斷指引:
- `last_status="error"` + `last_delivery_error=null` → 腳本執行失敗(exit code non-zero)
- `last_status="ok"` + 有 `last_delivery_error` → 腳本成功但交付失敗
- `last_status="error"` + 有 `last_delivery_error` → 雙重失敗
- 長時間未執行(超過排程間隔 2 倍)→ 排程器可能卡住

## 輸出規則
- 全部正常 → 簡潔回報一句話即可
- 有異常 → 輸出完整報告 + 每個異常 job 的診斷區塊
- 不要加不必要的修飾語,建智大人只看事實…

job_id: 41eeb394dee7 · 本頁由 Python 自動產生,非即時資料。