All checks were successful
Build & Deploy / build-and-deploy (push) Successful in 7s
The agents used /api/agents/{id}/wake (404) with a fallback of INSERT
INTO agent_wakeup_requests. The DB insert creates only the wakeup
record without a heartbeat_run, so the Paperclip dispatcher never
processes it — agents get stuck in queued forever.
Fix:
- All agents: /wake → /wakeup (correct Paperclip API endpoint)
- Remove all DB INSERT fallbacks, replace with warning
- Document the rule in CLAUDE.md: always API, never DB insert
- Save to memory for future conversations
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
9.5 KiB
9.5 KiB
עוזר משפטי — Legal Decision Assistant
רקע הפרויקט
מערכת AI לסיוע בכתיבת החלטות של ועדת ערר לתכנון ובניה, מחוז ירושלים, בראשות עו"ד דפנה תמיר.
מה עושה ועדת ערר?
ועדת ערר היא גוף מעין-שיפוטי שדן בעררים על החלטות ועדות מקומיות לתכנון ובניה. הוועדה מקבלת חומרי מקור (כתבי ערר, תגובות, פרוטוקולים, תכניות), דנה בטענות הצדדים, ומוציאה החלטה כתובה מנומקת — מסמך משפטי פורמלי שניתן לביקורת שיפוטית בבית משפט לעניינים מנהליים.
שלושה סוגי עררים
| סוג | מספרי תיקים | טון | מאפיין |
|---|---|---|---|
| רישוי ובנייה | 1xxx | חם יחסית | הקשר תכנוני רחב, אלמנטים אנושיים |
| היטל השבחה | 8xxx | קר ומקצועי | יבש, ללא רגשות |
| פיצויים (ס' 197) | 9xxx | קר ומקצועי | דומה להיטל השבחה |
מטרת המערכת
לבנות כלי עבודה שמסייע ליו"ר הוועדה לנסח החלטות:
- ניהול תיקים — ייבוא חומרי מקור, סיווג מסמכים, מעקב סטטוס
- בסיס ידע — פסיקה, ביטויי מעבר, לקחים מהחלטות קודמות, חקיקה
- חיפוש סמנטי (RAG) — מציאת תקדימים רלוונטיים ופסקאות דומות
- סיוע בכתיבה — ייצור טיוטות לפי ארכיטקטורת 12 בלוקים בסגנון דפנה
- ייצוא DOCX — מסמך מעוצב מוכן להגשה
מה היה קודם (Legacy)
המערכת הקודמת היתה Obsidian vault עם Claude Code skills על שרת אחר. פותחו:
- ניתוח סגנון של 3 החלטות (הכט — דחייה, בית הכרם — קבלה חלקית, אריאלי — השוואה)
- ארכיטקטורת 12 בלוקים מבוססת CREAC / DITA / Akoma Ntoso / Federal Judicial Center
- כללי כתיבה (רקע ניטרלי, ללא כפילות, טענות מקוריות בלבד)
- לקחים מהשוואת טיוטות לגרסאות סופיות
- סקריפט ייצוא DOCX
כל החומר הועבר לתיקיית legacy/ כקריאה בלבד. הפרויקט הנוכחי מעביר את הידע הזה למערכת מובנית עם PostgreSQL + pgvector + n8n.
מסמכי ייחוס
| מסמך | תוכן | מתי לקרוא |
|---|---|---|
docs/architecture.md |
ארכיטקטורת המערכת, תרשים רכיבים, זרימת נתונים, 4 שכבות DB | לפני עבודה על תשתית |
docs/block-schema.md |
הגדרת 12 בלוקים — content model, constraints, processing params | לפני כל כתיבת החלטה |
docs/migration-plan.md |
תוכנית מעבר vault → DB — טבלאות, עדיפויות, כמויות | לפני ייבוא נתונים |
docs/legal-decision-lessons.md |
לקחים מ-3 החלטות — מה עבד, מה השתנה, ביטויי מעבר חדשים | לפני כל כתיבת החלטה |
docs/decision-methodology.md |
מתודולוגיה אנליטית — איך לחשוב על החלטה מעין-שיפוטית | לפני כל כתיבת החלטה |
docs/corpus-analysis.md |
ניתוח שיטתי של 24 החלטות — מפת תוכן, דפוסי דיון תכנוני, פערים | לפני כל כתיבת החלטה |
docs/memory.md |
הקשר כללי — skills, פרויקטים שהושלמו, מבנה vault | להתמצאות כללית |
skills/decision/SKILL.md |
מדריך סגנון מלא של דפנה — טון, מבנה, ביטויים, מתודולוגיה | לפני כל כתיבת החלטה |
שרת Nautilus (158.178.131.193)
| שירות | תפקיד | כתובת |
|---|---|---|
| Coolify | ניהול containers | http://158.178.131.193:8000 |
| PostgreSQL + pgvector | בסיס נתונים ראשי | legal-ai-postgres |
| Redis | תור משימות | legal-ai-redis |
| n8n | אוטומציית workflows | להגדרה |
| Gitea | מאגר קוד | gitea.nautilus.marcusgroup.org/ezer-mishpati |
| ezer-mishpati-web | ממשק העלאת מסמכים (Docker/Coolify) | legal-ai.nautilus.marcusgroup.org |
| Paperclip | סוכן AI — מריץ Claude Code agents (pm2, מקומי) | localhost:3100 |
| Infisical | ניהול סודות | secret.dev.marcus-law.co.il |
מבנה תיקיות
/home/chaim/legal-ai/
├── CLAUDE.md ← הקובץ הזה
├── Dockerfile ← Docker build
├── docs/ ← תיעוד + לקחים
│ ├── architecture.md ארכיטקטורה
│ ├── block-schema.md 12 בלוקים (המסמך החשוב ביותר)
│ ├── migration-plan.md תוכנית מעבר vault → DB
│ ├── legal-decision-lessons.md לקחים מ-3 החלטות
│ └── memory.md הקשר כללי — skills, פרויקטים
├── skills/ ← כלי עבודה ומדריכים
│ ├── decision/ מדריך סגנון + references + 12 בלוקים
│ ├── assistant/ קטלוג מסמכים
│ └── docx/ עיצוב DOCX
├── data/
│ ├── training/ ← 4 החלטות לאימון (DOCX)
│ ├── exports/ ← ייצוא legacy (תיקים ישנים)
│ └── cases/{case-number}/ ← תיקי עררים (מבנה שטוח, סטטוס ב-DB)
├── web/ ← UI + API + integration clients
├── mcp-server/ ← MCP server + services + tools
└── scripts/ ← סקריפטים וכלי עזר
ניהול משימות — TaskMaster AI
הפרויקט משתמש ב-TaskMaster AI (MCP server) לניהול משימות מובנה:
- תמיד להשתמש ב-TaskMaster לפירוק, מעקב וניהול משימות — לא ב-TASKS.md ידני
- קובץ המשימות:
tasks/tasks.json - פקודות עיקריות:
get_tasks,next_task,add_task,update_task,expand_task - לפני התחלת עבודה →
next_taskכדי לדעת מה הבא לפי תלויות - אחרי סיום משימה →
update_taskעם status=done - משימה מורכבת →
expand_taskלפירוק לתתי-משימות
Paperclip — כללי אינטגרציה קריטיים
Wakeup API — תמיד דרך API, לעולם לא דרך DB
- הנתיב הנכון:
POST /api/agents/{agent-id}/wakeupעם{"source": "...", "reason": "..."} - ⚠️ אסור:
INSERT INTO agent_wakeup_requestsישירות — זה יוצר רק את הרשומה בטבלה בליheartbeat_run, והסוכן לא יתעורר לעולם - הסיבה: ה-dispatcher של Paperclip מעבד
heartbeat_runs, לאagent_wakeup_requests. רק ה-API יוצר את שניהם אטומית - Board API Key: שמור ב-DB (
board_api_keys), מאפשר גישה ל-API מ-CLI
ניתוב comments דרך CEO
- כשמשתמש כותב תגובה על issue ב-Paperclip, הפלאגין (
plugin-legal-ai) מעיר את ה-CEO דרךctx.agents.invoke() - ה-CEO קורא את ה-comment, מחליט על ניתוב, ויוצר issue לסוכן המתאים
- כל הסוכנים חייבים לקרוא comments אחרונים לפני שהם מתחילים לעבוד (HEARTBEAT שלבים 2b-2c)
עקרונות כתיבה קריטיים
- "מבחן השופט" — כל החלטה חייבת להיות קריאה לשופט שלא מכיר את התיק
- "רקע ניטרלי" — בלוק ו = עובדות בלבד. אין ציטוטים מצדדים, אין מילות שיפוט
- "ללא כפילות" — בלוק י (דיון) מפנה לבלוקים קודמים, לא חוזר עליהם
- "טענות מקוריות בלבד" — בלוק ז = מכתבי טענות מקוריים בלבד. השלמות → בלוק ח
- ארכיטקטורת 12 בלוקים — ראה
docs/block-schema.md - צ'קליסט תוכן — בלוק י מקבל צ'קליסט תוכן אוטומטי לפי סוג הערר (ראה
lessons.py: CONTENT_CHECKLISTS)
הערות יו"ר (Chair Feedback)
מנגנון לתיעוד הערות דפנה על טיוטות:
- DB: טבלת
chair_feedback(case_id, block_id, feedback_text, category, lesson_extracted) - API:
GET/POST /api/feedback,PATCH /api/feedback/{id}/resolve - MCP tools:
record_chair_feedback,list_chair_feedback - UI: דף ניהול ב-
/feedback(ב-Next.js) - קטגוריות: missing_content, wrong_tone, wrong_structure, factual_error, style, other
יו"ר: עו"ד דפנה תמיר
- מדריך סגנון מלא:
skills/decision/SKILL.md