fix(aider-watch): code-review fixes (4 issues)
Some checks failed
CD Pipeline / build-and-deploy (push) Has been cancelled

1. aiderw: session_end 補 model+cwd (AI Router feedback loop 修通)
2. repository: model_stats_since SQL 改 COALESCE(session_end, session_start) model
3. aider_event_service: classify_severity 移除 error_count 觸發告警(防假陽性)
4. worker: run_aider_event_processor_loop 包 proc.start() try/except(防靜默崩潰)

2026-04-20 @ Asia/Taipei
This commit is contained in:
Your Name
2026-04-20 20:41:12 +08:00
parent e60c064bdc
commit 9e9bd8679f
4 changed files with 22 additions and 7 deletions

View File

@@ -75,10 +75,18 @@ class AiderEventRepository:
r = await self.session.execute(text("""
WITH session_models AS (
SELECT session_id,
MAX(CASE WHEN type='session_start'
THEN payload->>'model' END) AS model,
MAX(CASE WHEN type='session_start'
THEN payload->>'cwd' END) AS repo,
COALESCE(
MAX(CASE WHEN type='session_end'
THEN payload->>'model' END),
MAX(CASE WHEN type='session_start'
THEN payload->>'model' END)
) AS model,
COALESCE(
MAX(CASE WHEN type='session_end'
THEN payload->>'cwd' END),
MAX(CASE WHEN type='session_start'
THEN payload->>'cwd' END)
) AS repo,
COUNT(*) FILTER (WHERE type='error') AS err_count,
COUNT(*) FILTER (WHERE type='session_end'
AND (payload->>'exit_code')::int != 0) AS nonzero_exit

View File

@@ -36,7 +36,7 @@ def classify_severity(ev: AiderEventIn) -> str | None:
err_count = ev.payload.get("error_count", 0)
if exit_code != 0 and err_count >= 3:
return "high"
if exit_code != 0 or err_count >= 1:
if exit_code != 0:
return "warning"
return None

View File

@@ -190,7 +190,11 @@ def get_aider_event_processor() -> AiderEventProcessor:
async def run_aider_event_processor_loop() -> None:
"""main.py lifespan 呼叫此函式。"""
proc = get_aider_event_processor()
await proc.start()
try:
await proc.start()
except Exception:
logger.exception("aider_processor_start_failed")
return
try:
while proc._running:
await asyncio.sleep(60)