fix(precedents): חילוץ-מטא-דאטה ממלא תחום (practice_area) ושם-יו"ר לכל החלטת-ועדה #288
Reference in New Issue
Block a user
Delete Branch "worktree-halacha-metadata-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
רקע
שני באגים קטנים-אך-מעצבנים בחילוץ-ההלכות/מטא-דאטה ב-/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)apply_to_recordממלאpractice_areaכשריק — עדיפות לגזירה דטרמיניסטית מקידומת מספר-התיק (derive_domain_practice_area: 1xxx→rishuy, 8xxx→היטל, 9xxx→197), ובנפילה סיווג-תוכן של ה-LLM. אנום-סגור; abstain כשאין ודאות.practice_areaחדש בפרומפט (סיווג-תוכן לפסקי-בית-משפט) + ולידציה מולDOMAIN_PRACTICE_AREAS.chair_name/districtהורחב מ-source_kind=='internal_committee'ל-"האם זו החלטת-ועדה" (source_type/levelאפקטיביים), לעולם לא פסק-בית-משפט. בטוח: ה-CHECK כופה non-empty רק ל-internal.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
🤖 Generated with Claude Code
שני פערים שצפו מ-/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>