From 8dc7a40fa26ce8797f6a395c165ebc8db54f6b55 Mon Sep 17 00:00:00 2001 From: Chaim Date: Sun, 17 May 2026 10:35:39 +0000 Subject: [PATCH] fix: exclude exported cases from stale; add weekly-feedback-job handler to CEO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - /api/cases/stale: exclude 'exported' status — exported cases await Dafna's review intentionally, they are not stuck - legal-ceo.md: add routing for weekly-feedback-job reason + explicit handler (analyze feedback, update decision-lessons.md, close issue) Co-Authored-By: Claude Sonnet 4.6 --- .claude/agents/legal-ceo.md | 20 ++++++++++++++++++++ web/app.py | 4 ++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/.claude/agents/legal-ceo.md b/.claude/agents/legal-ceo.md index c79aca7..142f9c9 100644 --- a/.claude/agents/legal-ceo.md +++ b/.claude/agents/legal-ceo.md @@ -161,6 +161,7 @@ Paperclip חוסם אוטומטית כל issue ב-`in_progress` שאין לו ru - אם ה-reason מכיל `user_commented` → **דלג ישירות לסעיף "טיפול בתגובות חדשות מחיים"**. אל תסרוק תיקים אחרים, אל תבדוק issues, אל תעשה heartbeat רגיל. **טפל רק בתגובה.** - אם ה-reason מכיל `agent_completion` → דלג לשלב E/F בהתאם לסוכן שסיים - אם ה-reason מכיל `precedent_extraction_` → **דלג לסעיף "חילוץ פסיקה אוטומטי"**. אל תיגע בתיקים — זו עבודת ספרייה. +- אם ה-reason מכיל `weekly-feedback-job` → **דלג לסעיף "ניתוח פידבק שבועי"**. אל תיגע בתיקים פעילים. - אחרת → המשך לשלב A (heartbeat רגיל) ### חילוץ פסיקה אוטומטי @@ -187,6 +188,25 @@ Paperclip חוסם אוטומטית כל issue ב-`in_progress` שאין לו ru **אל**: אל תיצור issues של ביצוע בתיקי ערר, אל תיכנס לתהליך כתיבת החלטה — זו רק עבודת תחזוקה של ספריית הפסיקה. +### ניתוח פידבק שבועי (weekly-feedback-job) + +**מתי:** `$PAPERCLIP_WAKE_REASON` מכיל `weekly-feedback-job` + +ה-prompt שתקבל מכיל סיכום של כל הפידבק מיו"ר מהשבוע האחרון, בפורמט: +``` +- תיק X (קטגוריה): טקסט הפידבק +- תיק Y (קטגוריה): ... +``` + +**מה לעשות:** +1. **קרא את `docs/legal-decision-lessons.md`** — הבן מה כבר מתועד שם. +2. **נתח את הפידבק** — אילו דפוסים חוזרים? מה חדש שלא מופיע בלקחים? +3. **עדכן את `docs/legal-decision-lessons.md`** — הוסף רק לקחים חדשים ומהותיים (לא כפל). כל לקח = משפט אחד ברור. +4. **פרסם comment על ה-issue** עם סיכום: כמה פידבק נסקר, כמה לקחים חדשים נוספו, מה הדפוס הבולט השבוע. +5. **סגור את ה-issue** (`status=done`). + +**כלל:** אל תגע בתיקים פעילים, אל תעיר סוכנים אחרים, אל תבצע heartbeat רגיל — זו משימת תחזוקה בלבד. + ### שלב A: בדיקת מצב — שלמות, בדיקות שליליות, תאימות מתודולוגיה בכל heartbeat **רגיל** (לא comment routing): diff --git a/web/app.py b/web/app.py index 1c0e34c..4fccd6b 100644 --- a/web/app.py +++ b/web/app.py @@ -1137,7 +1137,7 @@ async def list_cases( @app.get("/api/cases/stale") async def api_stale_cases(days: int = 3): - """Return cases that haven't been updated in N days and are not in 'final' or 'new' status.""" + """Return cases that haven't been updated in N days and are not in a terminal/waiting status.""" if days <= 0: return {"cases": [], "total": 0} pool = await db.get_pool() @@ -1147,7 +1147,7 @@ async def api_stale_cases(days: int = 3): SELECT case_number, title, status, EXTRACT(DAY FROM (now() - updated_at))::int AS days_stale FROM cases - WHERE status NOT IN ('final', 'new') + WHERE status NOT IN ('final', 'new', 'exported') AND updated_at < now() - make_interval(days => $1) ORDER BY updated_at ASC -- oldest stale first (longest overdue = highest priority) """,