feat(operations): פאנל בריאות-הסוכנים + הסלמות אחרונות ב-/operations (#218+#222 UI) #409

Merged
chaim merged 1 commits from worktree-ops-agent-health-ui into main 2026-07-07 04:46:09 +00:00
Owner

מה

הטמעת מוקאפ 02e (אושר על-ידך ב-Claude Design X17): פאנל בריאות-הסוכנים ב-/operations שהופך את חבילת-ה-recovery השרת-צדית לגלויה — זומבים, תקועים, והסלמות ה-watchdog במבט אחד.

איך

Backend (משלים את החסר במוקאפ):

  • get_recent_escalations() ב-paperclip_client — משחזר הסלמות מהערות author_type='system' (🚨 הסלמה [severity]…); severity+reason מנותחים מהגוף, identifier מ-join. Port pc_get_recent_escalations (read-only); endpoint GET /api/operations/agents/escalations.

Frontend (web-ui):

  • useAgentHealth + useRecentEscalations (טיפוסים מקומיים, כמו שאר operations.ts).
  • AgentHealthPanel תחת סקשן חדש "בריאות-הסוכנים" (אחרי "סוכנים פעילים"): 4 stat-tiles (זומבי/תקוע/עובד/רגוע · אדום/ענבר/ירוק/אפור), שורות-בעיה worst-first, וקארד gold-wash "הסלמות אוטומטיות אחרונות" (severity+תיק+סיבה+מתי).

דיוק מול המוקאפ: issue מוסלם עובר לבעלות-חיים → יוצא מרשימת-הבריאות; לכן שורות-הבריאות = זומבים טרם-הסלמה וקארד-ההסלמות = מטופלים (משלימים). השמטתי את פיל "✓ הוסלם" משורת-הבריאות (לא מדויק) לטובת קארד-ההסלמות.

Invariants + שער-עיצוב

  • שער-Claude-Design: מוקאפ 02e-operations-agent-health אושר לפני קוד (feedback_claude_design_gate).
  • G12 — ה-fetch במעטפת, המגע מהשער; ה-UI צורך endpoint דומייני.
  • G2 — מקור-בריאות/הסלמות יחיד.

בדיקות

  • 13 pytest (2 חדשות: parse severity/reason + fallback ל-severity לא-מתויג). אומת חי read-only: query ההסלמות רץ נקי (0 כרגע).
  • frontend: tsc --noEmit + eslint נקיים. build מלא ב-CI/deploy (symlink node_modules שובר next build ב-worktree — reference_worktree_turbopack_build).
  • api:types לא נדרשoperations.ts מגדיר טיפוסים ידניים (כמו שאר הקובץ); ה-endpoint נפרס אטומית עם ה-UI.

🤖 Generated with Claude Code

## מה הטמעת **מוקאפ 02e** (אושר על-ידך ב-Claude Design X17): פאנל **בריאות-הסוכנים** ב-`/operations` שהופך את חבילת-ה-recovery השרת-צדית לגלויה — זומבים, תקועים, והסלמות ה-watchdog במבט אחד. ## איך **Backend** (משלים את החסר במוקאפ): - `get_recent_escalations()` ב-`paperclip_client` — משחזר הסלמות מהערות `author_type='system'` (`🚨 הסלמה [severity]…`); severity+reason מנותחים מהגוף, identifier מ-join. Port `pc_get_recent_escalations` (read-only); endpoint `GET /api/operations/agents/escalations`. **Frontend** (`web-ui`): - `useAgentHealth` + `useRecentEscalations` (טיפוסים מקומיים, כמו שאר `operations.ts`). - `AgentHealthPanel` תחת סקשן חדש **"בריאות-הסוכנים"** (אחרי "סוכנים פעילים"): 4 stat-tiles (זומבי/תקוע/עובד/רגוע · אדום/ענבר/ירוק/אפור), שורות-בעיה worst-first, וקארד gold-wash "הסלמות אוטומטיות אחרונות" (severity+תיק+סיבה+מתי). **דיוק מול המוקאפ:** issue מוסלם עובר לבעלות-חיים → יוצא מרשימת-הבריאות; לכן שורות-הבריאות = זומבים *טרם-הסלמה* וקארד-ההסלמות = *מטופלים* (משלימים). השמטתי את פיל "✓ הוסלם" משורת-הבריאות (לא מדויק) לטובת קארד-ההסלמות. ## Invariants + שער-עיצוב - **שער-Claude-Design**: מוקאפ `02e-operations-agent-health` אושר לפני קוד ([[feedback_claude_design_gate]]). - **G12** — ה-fetch במעטפת, המגע מהשער; ה-UI צורך endpoint דומייני. - **G2** — מקור-בריאות/הסלמות יחיד. ## בדיקות - **13 pytest** (2 חדשות: parse severity/reason + fallback ל-severity לא-מתויג). ✅ אומת חי read-only: query ההסלמות רץ נקי (0 כרגע). - **frontend**: `tsc --noEmit` + `eslint` נקיים. build מלא ב-CI/deploy (symlink node_modules שובר `next build` ב-worktree — [[reference_worktree_turbopack_build]]). - **api:types לא נדרש** — `operations.ts` מגדיר טיפוסים ידניים (כמו שאר הקובץ); ה-endpoint נפרס אטומית עם ה-UI. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-07-07 04:45:17 +00:00
feat(operations): פאנל בריאות-הסוכנים + הסלמות אחרונות ב-/operations (#218+#222 UI)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 30s
Lint — undefined names / undefined-names (pull_request) Successful in 10s
cf7c918bed
הטמעת מוקאפ 02e (מאושר Claude-Design X17) — נראות שרת-הצד שנבנתה כ-backend:
- backend: get_recent_escalations() ב-paperclip_client — משחזר הסלמות מהערות
  author_type='system' (severity+reason מנותחים מהגוף, identifier מ-join); Port
  pc_get_recent_escalations (read-only); endpoint GET /api/operations/agents/escalations.
- frontend: useAgentHealth + useRecentEscalations (טיפוסים מקומיים כמו שאר
  operations.ts) + AgentHealthPanel ב-/operations תחת "בריאות-הסוכנים":
  4 stat-tiles (זומבי/תקוע/עובד/רגוע), שורות-בעיה worst-first, וקארד
  הסלמות-אוטומטיות-אחרונות (severity+תיק+סיבה+מתי).

דיוק מול המוקאפ: issue מוסלם עובר לבעלות-חיים→יוצא מרשימת-הבריאות, לכן
שורות-הבריאות = זומבים טרם-הסלמה וקארד-ההסלמות = מטופלים (משלימים).

Invariants: G12 (fetch מהמעטפת, המגע מהשער; UI צורך endpoint דומייני), G2
(מקור-בריאות/הסלמות יחיד). שער-עיצוב: מוקאפ 02e אושר לפני קוד (feedback_claude_design_gate).

בדיקות: 13 pytest (2 חדשות ל-get_recent_escalations: parse severity/reason,
fallback). frontend: tsc --noEmit + eslint נקיים (build מלא ב-CI/deploy —
symlink node_modules שובר next build ב-worktree). api:types לא נדרש (operations.ts
טיפוסים ידניים); ה-endpoint נפרס אטומית עם ה-UI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
chaim merged commit 8d0f8ad17b into main 2026-07-07 04:46:09 +00:00
chaim deleted branch worktree-ops-agent-health-ui 2026-07-07 04:46:09 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ezer-mishpati/legal-ai#409