feat(approvals): קטגוריית "חילוץ-הלכות תקוע" במרכז-האישורים (#133)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 10s
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 10s
ה-wakeup המיידי ל-CEO לחילוץ-הלכות הוא best-effort; כשהוא נכשל
(למשל churn-פריסה), הבקשה נשענת רק על הדריינר-הלילי והפריט נשאר
'pending' בלי שאיש רואה — עד ~16-18 שעות. מוסיף קטגוריה חמישית
ל-api_chair_pending שמציפה case_law עם halacha_extraction_status=
'pending' שכבר עבר את חלון-הדריינר (requested_at < now()-6h), כך
שכשל-שקט הופך לפריט-יו"ר גלוי במרכז-האישורים ("שלא יישכח").
שאילתת-מקור ישירה (תואם הדפוס), href ל-/precedents (שם כפתור
request-halachot מעיר CEO = retry). אפס שינוי-frontend — דף-האישורים
מרנדר categories גנרית (ApprovalCard לפי label/severity/count/href).
gate-free (לוגיקה/נתון בלבד). הסף 6h תכוונן.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
21
web/app.py
21
web/app.py
@@ -5737,6 +5737,27 @@ async def api_chair_pending():
|
|||||||
"href": f"/cases/{r['case_number']}"} for r in qa_rows[:5]],
|
"href": f"/cases/{r['case_number']}"} for r in qa_rows[:5]],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# 5) חילוץ-הלכות תקוע — כשל-שקט (#133): ה-wakeup המיידי ל-CEO הוא
|
||||||
|
# best-effort; אם הוא נכשל, הבקשה נשענת רק על הדריינר-הלילי (23:00–05:00),
|
||||||
|
# והפריט נשאר 'pending' בלי שאיש רואה. מציפים רק כאלה שכבר עברו את חלון
|
||||||
|
# הדריינר (>6 שעות) — כך בקשת-בוקר שתנוקה הלילה לא מקפיצה אזעקת-שווא.
|
||||||
|
STUCK = "halacha_extraction_status='pending' AND " \
|
||||||
|
"halacha_extraction_requested_at < now() - interval '6 hours'"
|
||||||
|
se_count = await conn.fetchval(f"SELECT count(*) FROM case_law WHERE {STUCK}")
|
||||||
|
se_oldest = await conn.fetchval(
|
||||||
|
f"SELECT min(halacha_extraction_requested_at) FROM case_law WHERE {STUCK}")
|
||||||
|
se_sample = await conn.fetch(
|
||||||
|
f"SELECT coalesce(case_number,'') AS cn, coalesce(case_name,'') AS name "
|
||||||
|
f"FROM case_law WHERE {STUCK} ORDER BY halacha_extraction_requested_at ASC LIMIT 5")
|
||||||
|
categories.append({
|
||||||
|
"key": "stuck_halacha_extraction", "label": "חילוץ-הלכות תקוע",
|
||||||
|
"description": "החלטות סופיות שחילוץ-ההלכות שלהן לא נכנס לתור — להרצה מחדש מ-ספריית הפסיקה.",
|
||||||
|
"count": se_count, "severity": "high" if se_count else "ok",
|
||||||
|
"href": "/precedents",
|
||||||
|
"oldest_at": se_oldest.isoformat() if se_oldest else None,
|
||||||
|
"sample": [{"text": r["cn"], "source": r["name"]} for r in se_sample],
|
||||||
|
})
|
||||||
|
|
||||||
total_pending = sum(c["count"] for c in categories)
|
total_pending = sum(c["count"] for c in categories)
|
||||||
return {
|
return {
|
||||||
"total_pending": total_pending,
|
"total_pending": total_pending,
|
||||||
|
|||||||
Reference in New Issue
Block a user