fix(cases): מספור 5-ספרתי לבל"מ — סיווג, ולידציה, וחיפוש פסיקה-חסרה #219

Merged
chaim merged 1 commits from worktree-case-numbering-blam into main 2026-06-12 06:18:33 +00:00
Owner

רקע — נוהל-יו"ר (2026-06-11)

מבנה מספר-תיק קנוני: <סידורי>-<חודש>-<שנה>. אורך הסידורי מקודד את סוג-ההליך:

אורך סוג דוגמה
4 ספרות ערר 1230-04-26
5 ספרות בל"מ 85074-09-24

הספרה הראשונה ממשיכה לקבוע תחום בשני האורכים (1→רישוי, 8→היטל, 9→פיצויים). כלל חד-כיווני: 5-ספרתי הוא תמיד בל"מ; 4-ספרתי אינו מחייב ערר (בל"מ-מורשת מזוהה מהנושא). רקע: ירושלים אימצה מספור 5-ספרתי לבל"מ רק עכשיו; ת"א מזה זמן (81002-01-21).

הבאג שדווח

חיפוש פסיקה-חסרה לפי מספר-תיק החזיר 404 על כל ערך שאינו תיק קיים → שבר את הטבלה תוך כדי הקלדה, ובפרט על מספרי 5-ספרות שהדף נועד לחפש.

תיקונים

  • web/app.pyGET /api/missing-precedents: מסנן case_number שלא תאם תיק מחזיר רשימה ריקה (200), לא 404. סמנטיקה תקינה ל-collection-filter.
  • missing-precedents/page.tsx — debounce (350ms) על שדות-הסינון: קוורי אחד אחרי שמפסיקים להקליד, לא אחד לכל הקשה.
  • practice_area.py — regex סידורי \d{4}\d{4,5}; הוספת case_serial_digits() + is_blam_by_number(); derive_subtype_with_blam ו-derive_proceeding_type מזהים בל"מ גם מ-5-ספרות (בנוסף לנושא). Callers עודכנו: cases.py, internal_decisions.py.
  • proofreader.py — דפוסי חילוץ-שם-קובץ \d{3,4}\d{3,5}.
  • web-uipractice-area.ts (מראָה ל-backend), schemas/case.ts (regex serial-month-year, 4-or-5 ספרות, superRefine: 5⇒בל"מ), placeholder בוויזר.
  • תיעודdocs/spec/X1-identifiers.md §1א (מקור-אמת) + CLAUDE.md.

אימות

  • סיווג 6 דוגמאות (כולל 85074-09-24→בל"מ/היטל, ו-בל"מ-מורשת 4-ספרות מהנושא) ✓
  • proofreader.decision_number_from_filename מחלץ 5-ספרות ✓
  • tsc --noEmit נקי · eslint 0 errors · pytest (domain-scope + corpus-constraints) 11/11 ✓
  • (2 doctest-failures ב-practice_area הם קיימים-מראש — מרכאה לא-escaped ב-בל"מ בתוך docstring; לא נגעתי בהם)

Invariants

  • G1 — נרמול-במקור: הספרה הראשונה כמקור-אמת יחיד לתחום, ללא עמודה כפולה.
  • G2 — מסלול-סיווג יחיד; אין מסלול מקביל.
  • INV-DM / X1 — מפתח קנוני (case_number, proceeding_type); serial-month-year כצורה מועדפת.

🤖 Generated with Claude Code

## רקע — נוהל-יו"ר (2026-06-11) מבנה מספר-תיק קנוני: `<סידורי>-<חודש>-<שנה>`. **אורך הסידורי מקודד את סוג-ההליך:** | אורך | סוג | דוגמה | |------|-----|-------| | 4 ספרות | **ערר** | `1230-04-26` | | 5 ספרות | **בל"מ** | `85074-09-24` | הספרה הראשונה ממשיכה לקבוע תחום בשני האורכים (`1→רישוי`, `8→היטל`, `9→פיצויים`). **כלל חד-כיווני:** 5-ספרתי הוא תמיד בל"מ; 4-ספרתי אינו מחייב ערר (בל"מ-מורשת מזוהה מהנושא). רקע: ירושלים אימצה מספור 5-ספרתי לבל"מ רק עכשיו; ת"א מזה זמן (`81002-01-21`). ## הבאג שדווח חיפוש פסיקה-חסרה לפי מספר-תיק החזיר `404` על כל ערך שאינו תיק קיים → שבר את הטבלה תוך כדי הקלדה, ובפרט על מספרי 5-ספרות שהדף נועד לחפש. ## תיקונים - **`web/app.py`** — `GET /api/missing-precedents`: מסנן `case_number` שלא תאם תיק מחזיר רשימה ריקה (200), לא 404. סמנטיקה תקינה ל-collection-filter. - **`missing-precedents/page.tsx`** — debounce (350ms) על שדות-הסינון: קוורי אחד אחרי שמפסיקים להקליד, לא אחד לכל הקשה. - **`practice_area.py`** — regex סידורי `\d{4}`→`\d{4,5}`; הוספת `case_serial_digits()` + `is_blam_by_number()`; `derive_subtype_with_blam` ו-`derive_proceeding_type` מזהים בל"מ גם מ-5-ספרות (בנוסף לנושא). Callers עודכנו: `cases.py`, `internal_decisions.py`. - **`proofreader.py`** — דפוסי חילוץ-שם-קובץ `\d{3,4}`→`\d{3,5}`. - **web-ui** — `practice-area.ts` (מראָה ל-backend), `schemas/case.ts` (regex serial-month-year, 4-or-5 ספרות, `superRefine`: 5⇒בל"מ), placeholder בוויזר. - **תיעוד** — `docs/spec/X1-identifiers.md` §1א (מקור-אמת) + `CLAUDE.md`. ## אימות - סיווג 6 דוגמאות (כולל `85074-09-24`→בל"מ/היטל, ו-בל"מ-מורשת 4-ספרות מהנושא) ✓ - `proofreader.decision_number_from_filename` מחלץ 5-ספרות ✓ - `tsc --noEmit` נקי · eslint 0 errors · pytest (domain-scope + corpus-constraints) 11/11 ✓ - (2 doctest-failures ב-practice_area הם **קיימים-מראש** — מרכאה לא-escaped ב-`בל"מ` בתוך docstring; לא נגעתי בהם) ## Invariants - **G1** — נרמול-במקור: הספרה הראשונה כמקור-אמת יחיד לתחום, ללא עמודה כפולה. - **G2** — מסלול-סיווג יחיד; אין מסלול מקביל. - **INV-DM / X1** — מפתח קנוני `(case_number, proceeding_type)`; serial-month-year כצורה מועדפת. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-12 06:17:49 +00:00
fix(cases): מספור 5-ספרתי לבל"מ — סיווג, ולידציה, וחיפוש פסיקה-חסרה
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 6s
e8bcb9c1ea
נוהל-יו"ר (2026-06-11): מבנה מספר-תיק = <סידורי>-<חודש>-<שנה>, ואורך הסידורי
מקודד את סוג-ההליך — 4 ספרות = ערר, 5 ספרות = בל"מ. הספרה הראשונה ממשיכה
לקבוע תחום בשני האורכים (1→רישוי, 8→היטל, 9→פיצויים). הכלל חד-כיווני:
5-ספרתי הוא תמיד בל"מ; 4-ספרתי אינו מחייב ערר (בל"מ-מורשת מזוהה מהנושא).

הבאג שדיווח עליו היו"ר: חיפוש פסיקה-חסרה לפי מספר-תיק החזיר 404 על כל ערך
שאינו תיק קיים — שבר את הטבלה תוך כדי הקלדה ועל מספרי 5-ספרות.

תיקונים:
- web/app.py: GET /api/missing-precedents — מסנן case_number שלא תאם תיק מחזיר
  רשימה ריקה (200), לא 404. סמנטיקה תקינה ל-collection-filter.
- missing-precedents/page.tsx: debounce (350ms) על שדות-הסינון — קוורי אחד
  אחרי שמפסיקים להקליד, לא אחד לכל הקשה.
- practice_area.py: regex סידורי \d{4}→\d{4,5}; case_serial_digits() +
  is_blam_by_number() (5⇒בל"מ); derive_subtype_with_blam ו-derive_proceeding_type
  מזהים בל"מ גם מ-5-ספרות (בנוסף לנושא). callers: cases.py, internal_decisions.py.
- proofreader.py: דפוסי חילוץ-שם-קובץ \d{3,4}→\d{3,5}.
- web-ui: practice-area.ts (מראָה ל-backend), schemas/case.ts (regex
  serial-month-year, 4-or-5 ספרות, superRefine 5⇒בל"מ), placeholder בוויזרד.
- תיעוד: docs/spec/X1-identifiers.md §1א + legal-ai/CLAUDE.md.

Invariants: מקיים G1 (נרמול-במקור — ספרה ראשונה כמקור-אמת יחיד לתחום),
G2 (מסלול-סיווג יחיד, אין כפילות), INV-DM/X1 (מפתח קנוני + proceeding_type).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim changed title from fix(cases): מספור 5-ספרתי לבל&quot;מ — סיווג, ולידציה, וחיפוש פסיקה-חסרה to fix(cases): מספור 5-ספרתי לבל"מ — סיווג, ולידציה, וחיפוש פסיקה-חסרה 2026-06-12 06:18:00 +00:00
chaim merged commit 208be9061b into main 2026-06-12 06:18:33 +00:00
chaim deleted branch worktree-case-numbering-blam 2026-06-12 06:18:33 +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#219