feat(sweeper): 新增 Incident Analysis Sweeper — 自動觸發未分析 Incident AI 決策
Gap修復: Signal Worker 創建 Incident 後,AI 分析只在 GET /api/v1/incidents 被呼叫時觸發 若前端無人訪問,新 Incident 永遠沒有 AI 分析與 Telegram 通知 解法: 新增 src/jobs/incident_analysis_sweeper.py 每 90 秒掃描無 decision token 的 INVESTIGATING incidents 自動背景觸發 get_or_create_decision() — Semaphore(3) 限流,每批最多 5 筆 main.py lifespan 啟動時 asyncio.create_task() 掛載 2026-04-16 Claude Sonnet 4.6 Asia/Taipei Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -334,6 +334,17 @@ async def lifespan(_app: FastAPI) -> AsyncGenerator[None, None]:
|
||||
except Exception as e:
|
||||
logger.warning("stale_ready_tokens_resend_schedule_failed", error=str(e))
|
||||
|
||||
# 2026-04-16 Claude Sonnet 4.6: 自動 AI 分析 Sweeper(每 90 秒)
|
||||
# 修復核心 Gap:Signal Worker 創建 Incident 後無人觸發 AI 分析
|
||||
# 除非有人呼叫 GET /api/v1/incidents,否則 Incident 永遠沒有決策
|
||||
# Sweeper 定期掃描無 decision token 的 INVESTIGATING incidents → 背景觸發
|
||||
try:
|
||||
from src.jobs.incident_analysis_sweeper import run_incident_analysis_sweeper
|
||||
asyncio.create_task(run_incident_analysis_sweeper())
|
||||
logger.info("incident_analysis_sweeper_scheduled", interval_sec=90)
|
||||
except Exception as e:
|
||||
logger.warning("incident_analysis_sweeper_schedule_failed", error=str(e))
|
||||
|
||||
# ADR-076 Task 4: 每日 08:00 台北時間自動日度巡檢報告
|
||||
# 2026-04-14 Claude Haiku 4.5 Asia/Taipei
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user