Files
legal-ai/CLAUDE.md
Chaim 5c9a5d702a Clean up scripts/: archive 17, delete 5, add SCRIPTS.md registry
Active scripts (5): auto-sync-cases.sh, backup-db.sh, restore-db.sh,
notify.py, bidi_table.py

Archived (17): one-time migration/seeding scripts whose functionality
is now in MCP server or web API. Moved to scripts/.archive/

Deleted (5): zero-value scripts (duplicates, hardcoded single-case,
debug scripts)

Added scripts/SCRIPTS.md — registry of all scripts with purpose,
status, and what superseded them. CLAUDE.md updated with rule:
any script change requires SCRIPTS.md update.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-14 16:30:19 +00:00

10 KiB
Raw Blame History

עוזר משפטי — Legal Decision Assistant

רקע הפרויקט

מערכת AI לסיוע בכתיבת החלטות של ועדת ערר לתכנון ובניה, מחוז ירושלים, בראשות עו"ד דפנה תמיר.

מה עושה ועדת ערר?

ועדת ערר היא גוף מעין-שיפוטי שדן בעררים על החלטות ועדות מקומיות לתכנון ובניה. הוועדה מקבלת חומרי מקור (כתבי ערר, תגובות, פרוטוקולים, תכניות), דנה בטענות הצדדים, ומוציאה החלטה כתובה מנומקת — מסמך משפטי פורמלי שניתן לביקורת שיפוטית בבית משפט לעניינים מנהליים.

שלושה סוגי עררים

סוג מספרי תיקים טון מאפיין
רישוי ובנייה 1xxx חם יחסית הקשר תכנוני רחב, אלמנטים אנושיים
היטל השבחה 8xxx קר ומקצועי יבש, ללא רגשות
פיצויים (ס' 197) 9xxx קר ומקצועי דומה להיטל השבחה

מטרת המערכת

לבנות כלי עבודה שמסייע ליו"ר הוועדה לנסח החלטות:

  1. ניהול תיקים — ייבוא חומרי מקור, סיווג מסמכים, מעקב סטטוס
  2. בסיס ידע — פסיקה, ביטויי מעבר, לקחים מהחלטות קודמות, חקיקה
  3. חיפוש סמנטי (RAG) — מציאת תקדימים רלוונטיים ופסקאות דומות
  4. סיוע בכתיבה — ייצור טיוטות לפי ארכיטקטורת 12 בלוקים בסגנון דפנה
  5. ייצוא DOCX — מסמך מעוצב מוכן להגשה

מה היה קודם (Legacy)

המערכת הקודמת היתה Obsidian vault עם Claude Code skills על שרת אחר. פותחו:

  • ניתוח סגנון של 3 החלטות (הכט — דחייה, בית הכרם — קבלה חלקית, אריאלי — השוואה)
  • ארכיטקטורת 12 בלוקים מבוססת CREAC / DITA / Akoma Ntoso / Federal Judicial Center
  • כללי כתיבה (רקע ניטרלי, ללא כפילות, טענות מקוריות בלבד)
  • לקחים מהשוואת טיוטות לגרסאות סופיות
  • סקריפט ייצוא DOCX

הידע שהופק מה-vault הוטמע במערכת הנוכחית — מסמכי ייחוס (docs/), קורפוס אימון (data/training/), ומבנה 12 בלוקים. ה-vault המקורי נמחק; הפרויקט הנוכחי עובד עם PostgreSQL + pgvector.


מסמכי ייחוס

מסמך תוכן מתי לקרוא
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/                       ← טיוטות DOCX מיוצאות
│   └── cases/{case-number}/           ← תיקי עררים (מבנה שטוח, סטטוס ב-DB)
├── web/                               ← UI + API + integration clients
├── mcp-server/                        ← MCP server + services + tools
└── scripts/                           ← סקריפטים וכלי עזר (ראה scripts/SCRIPTS.md)
    └── .archive/                      ← סקריפטים שהושלמו (לא להריץ)

כלל: עדכון scripts/SCRIPTS.md

בכל פעם שנוצר, נמחק, או משתנה סקריפט בתיקיית scripts/חובה לעדכן את scripts/SCRIPTS.md בהתאם. הקובץ מתעד את התפקיד, הסטטוס, וההחלפה (אם יש) של כל סקריפט.


ניהול משימות — 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 (לא /wake!)
  • ⚠️ אסור: INSERT INTO agent_wakeup_requests ישירות — זה יוצר רק רשומה בלי heartbeat_run, והסוכן לא יתעורר לעולם
  • ⚠️ חובה לשלוח payload עם issueId — בלי זה הסוכן מתעורר בלי הקשר (בלי תיק, בלי issue, בלי cwd נכון)
  • דוגמה נכונה:
    {"source": "automation", "triggerDetail": "system", "reason": "...",
     "payload": {"issueId": "...", "mutation": "comment", "commentId": "..."}}
    
  • Board API Key: שמור ב-DB (board_api_keys), auth: Authorization: Bearer pbk_...

ניתוב comments דרך CEO

  • כשמשתמש כותב תגובה על issue ב-Paperclip, הפלאגין (plugin-legal-ai) מעיר את ה-CEO דרך ctx.agents.invoke()
  • ה-CEO קורא את ה-comment, מחליט על ניתוב, ויוצר issue לסוכן המתאים
  • כל הסוכנים חייבים לקרוא comments אחרונים לפני שהם מתחילים לעבוד (HEARTBEAT שלבים 2b-2c)

עקרונות כתיבה קריטיים

  1. "מבחן השופט" — כל החלטה חייבת להיות קריאה לשופט שלא מכיר את התיק
  2. "רקע ניטרלי" — בלוק ו = עובדות בלבד. אין ציטוטים מצדדים, אין מילות שיפוט
  3. "ללא כפילות" — בלוק י (דיון) מפנה לבלוקים קודמים, לא חוזר עליהם
  4. "טענות מקוריות בלבד" — בלוק ז = מכתבי טענות מקוריים בלבד. השלמות → בלוק ח
  5. ארכיטקטורת 12 בלוקים — ראה docs/block-schema.md
  6. צ'קליסט תוכן — בלוק י מקבל צ'קליסט תוכן אוטומטי לפי סוג הערר (ראה 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