fix(precedents): חילוץ-מטא-דאטה ממלא תחום (practice_area) ושם-יו"ר לכל החלטת-ועדה #288

Merged
chaim merged 1 commits from worktree-halacha-metadata-fixes into main 2026-06-17 09:54:42 +00:00
Owner

רקע

שני באגים קטנים-אך-מעצבנים בחילוץ-ההלכות/מטא-דאטה ב-/precedents (דווחו ע"י היו"ר), שורשם ב-precedent_metadata_extractor.py. אומתו מול ה-DB החי, כולל תיק 1132-09-24.

הממצאים (מעוגנים בנתונים)

  • practice_area לא נגזר מעולם — הועבר ל-LLM כקונטקסט-קריאה-בלבד, לא חולץ. העלאות שהשאירו אותו ריק נשארו ריקות → רדיו-התחום הופיע ללא בחירה.
  • chair_name חולץ רק ל-internal_committee — 1132-09-24 הוא external_upload + source_type=appeals_committee (החלטת ועדת-ערר ת"א מנבו). היו"ר (מיכל דגני הלברשטם) יושב בבלוק-החתימה אך המיזוג דילג עליו בשקט. (ה-יו"ר הראשון בגוף הטקסט שייך להחלטה מצוטטת — מטעה.)

השינויים

Backend (precedent_metadata_extractor.py)

  1. apply_to_record ממלא practice_area כשריק — עדיפות לגזירה דטרמיניסטית מקידומת מספר-התיק (derive_domain_practice_area: 1xxx→rishuy, 8xxx→היטל, 9xxx→197), ובנפילה סיווג-תוכן של ה-LLM. אנום-סגור; abstain כשאין ודאות.
  2. שדה practice_area חדש בפרומפט (סיווג-תוכן לפסקי-בית-משפט) + ולידציה מול DOMAIN_PRACTICE_AREAS.
  3. שער ה-chair_name/district הורחב מ-source_kind=='internal_committee' ל-"האם זו החלטת-ועדה" (source_type/level אפקטיביים), לעולם לא פסק-בית-משפט. בטוח: ה-CHECK כופה non-empty רק ל-internal.
  4. חיזוק-פרומפט chair_name (לבקשת היו"ר): מציין מפורשות את בלוק-החתימה הדו-טורי (מזכיר↔יו"ר — לקחת צד-היו"ר) ומזהיר לא לחלץ יו"ר של פסקים מצוטטים.

UI (לוגיקה/hook בלבד — פטור משער-העיצוב)

  • precedent-edit-sheet.tsx: re-arm לסנכרון-הטופס בכל פתיחה → מילוי-רקע מופיע בלי refresh מלא ("הכפתור לא נשאר מסומן").
  • usePrecedent: poll בזמן חילוץ-פעיל (כמו ה-list) כדי לתפוס את מילוי-הדריינר.

בדיקות

test_metadata_extract_chair_practice_area.py — 6 תרחישי-מיזוג offline (חבר-ועדה חיצוני מקבל יו"ר; פסק-דין לעולם לא; גזירת-תחום מקידומת; נפילה ל-LLM; שימור-ערך-קיים; דחיית-ערך-לא-חוקי). tsc+eslint נקיים.

Invariants

  • G1 — נרמול במקור (מילוי בחילוץ, לא תיקון-בקריאה ב-UI).
  • G2 — אותו extractor, ללא מסלול מקביל.
  • INV-AH — גזירה דטרמיניסטית מועדפת; abstention כשאין ודאות.

🤖 Generated with Claude Code

## רקע שני באגים קטנים-אך-מעצבנים בחילוץ-ההלכות/מטא-דאטה ב-/precedents (דווחו ע"י היו"ר), שורשם ב-`precedent_metadata_extractor.py`. אומתו מול ה-DB החי, כולל תיק **1132-09-24**. ## הממצאים (מעוגנים בנתונים) - **`practice_area` לא נגזר מעולם** — הועבר ל-LLM כקונטקסט-קריאה-בלבד, לא חולץ. העלאות שהשאירו אותו ריק נשארו ריקות → רדיו-התחום הופיע ללא בחירה. - **`chair_name` חולץ רק ל-`internal_committee`** — 1132-09-24 הוא `external_upload` + `source_type=appeals_committee` (החלטת ועדת-ערר ת"א מנבו). היו"ר (**מיכל דגני הלברשטם**) יושב בבלוק-החתימה אך המיזוג דילג עליו בשקט. (ה-`יו"ר` הראשון בגוף הטקסט שייך להחלטה **מצוטטת** — מטעה.) ## השינויים **Backend (`precedent_metadata_extractor.py`)** 1. `apply_to_record` ממלא `practice_area` כשריק — עדיפות לגזירה דטרמיניסטית מקידומת מספר-התיק (`derive_domain_practice_area`: 1xxx→rishuy, 8xxx→היטל, 9xxx→197), ובנפילה סיווג-תוכן של ה-LLM. אנום-סגור; abstain כשאין ודאות. 2. שדה `practice_area` חדש בפרומפט (סיווג-תוכן לפסקי-בית-משפט) + ולידציה מול `DOMAIN_PRACTICE_AREAS`. 3. שער ה-`chair_name`/`district` הורחב מ-`source_kind=='internal_committee'` ל-"האם זו החלטת-ועדה" (`source_type`/`level` אפקטיביים), לעולם לא פסק-בית-משפט. בטוח: ה-CHECK כופה non-empty רק ל-internal. 4. **חיזוק-פרומפט `chair_name`** (לבקשת היו"ר): מציין מפורשות את בלוק-החתימה הדו-טורי (מזכיר↔יו"ר — לקחת צד-היו"ר) ומזהיר לא לחלץ יו"ר של פסקים **מצוטטים**. **UI (לוגיקה/hook בלבד — פטור משער-העיצוב)** - `precedent-edit-sheet.tsx`: re-arm לסנכרון-הטופס בכל פתיחה → מילוי-רקע מופיע בלי refresh מלא ("הכפתור לא נשאר מסומן"). - `usePrecedent`: poll בזמן חילוץ-פעיל (כמו ה-list) כדי לתפוס את מילוי-הדריינר. ## בדיקות `test_metadata_extract_chair_practice_area.py` — 6 תרחישי-מיזוג offline (חבר-ועדה חיצוני מקבל יו"ר; פסק-דין לעולם לא; גזירת-תחום מקידומת; נפילה ל-LLM; שימור-ערך-קיים; דחיית-ערך-לא-חוקי). `tsc`+`eslint` נקיים. ## Invariants - **G1** — נרמול במקור (מילוי בחילוץ, לא תיקון-בקריאה ב-UI). - **G2** — אותו extractor, ללא מסלול מקביל. - **INV-AH** — גזירה דטרמיניסטית מועדפת; abstention כשאין ודאות. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-17 09:54:31 +00:00
fix(precedents): חילוץ-מטא-דאטה ממלא תחום (practice_area) ושם-יו"ר לכל החלטת-ועדה
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 3s
Lint — undefined names / undefined-names (pull_request) Successful in 10s
406e93b9bf
שני פערים שצפו מ-/precedents בחילוץ-ההלכות:

1. **practice_area לא סומן** — השדה הועבר ל-LLM כקונטקסט-קריאה-בלבד ולא חולץ
   מעולם, כך שהעלאות שהשאירו אותו ריק נשארו ריקות והרדיו ב-/precedents הופיע
   ללא בחירה. עכשיו נגזר ב-apply_to_record: עדיפות לגזירה דטרמיניסטית מקידומת
   מספר-התיק (1xxx→rishuy, 8xxx→היטל, 9xxx→197 — מקור-אמת לדוקטי ועדת-ערר,
   INV-AH rule-based), ובנפילה — סיווג-תוכן של ה-LLM (שדה practice_area חדש
   בפרומפט, אנום-סגור) עבור פסקי-בית-משפט שהקידומת שלהם אינה מקודדת תחום.
   ממלא רק כשריק (G1 — נרמול במקור, לא תיקון-בקריאה).

2. **שם-יו"ר לא חולץ** (למשל 1132-09-24) — המיזוג היה מגודר על
   source_kind=='internal_committee' בלבד, ודילג בשקט על החלטות-ועדה שהועלו
   במסלול הפסיקה החיצוני (external_upload + source_type=appeals_committee, כמו
   החלטת ת"א מנבו) — היו"ר ישב בבלוק-החתימה אך לא חולץ. עכשיו מגודר על "האם זו
   החלטת-ועדה" (source_type/level אפקטיביים), לעולם לא על פסק-בית-משפט. ה-CHECK
   כופה non-empty רק ל-internal_committee, לכן כתיבה ל-external בטוחה.

חיזוק-פרומפט (לבקשת היו"ר): chair_name מציין מפורשות את בלוק-החתימה הדו-טורי
(מזכיר↔יו"ר — לקחת את צד-היו"ר) ומזהיר לא לחלץ יו"ר של פסקי-דין **מצוטטים**
בגוף ההחלטה.

UI (לוגיקה-בלבד, פטור משער-העיצוב): edit-sheet מסנכרן-מחדש מהרשומה הטרייה בכל
פתיחה (re-arm על סגירה) ו-usePrecedent עושה poll בזמן חילוץ — כך מילוי-רקע של
practice_area/chair_name מופיע בלי refresh מלא ("הכפתור לא נשאר מסומן").

בדיקות: test_metadata_extract_chair_practice_area.py (6 תרחישי-מיזוג, offline).

Invariants: G1 (נרמול-במקור), G2 (אותו extractor, לא מסלול מקביל),
INV-AH (גזירה דטרמיניסטית מועדפת, abstention כשאין ודאות).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit f3b5223f0f into main 2026-06-17 09:54:42 +00:00
chaim deleted branch worktree-halacha-metadata-fixes 2026-06-17 09:54:42 +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#288