feat(missing-precedents): חיפוש לפי מראה‑מקום בדף פסיקה‑חסרה (85074 מאתר את הפער) #229

Merged
chaim merged 1 commits from worktree-mp-citation-search into main 2026-06-12 07:59:01 +00:00
Owner

הבעיה

בדף /missing-precedents לא ניתן היה לאתר פסיקה חסרה לפי מספר ההחלטה החסרה עצמה (למשל 85074). השדה היחיד שדמה לחיפוש — "תיק (מספר ערר)" — עשה get_case_by_number על מספר ה‎ערר שבו צוטטה הפסיקה, ולכן הקלדת מספר‑הפסיקה החזירה רשימה ריקה, למרות שהרשומה קיימת:

ערר (ת"א 85074-04-25) רפאל לוי ואח' נ' הוועדה המקומית לתכנון ובניה - חולון · status=open

ב‎-db.list_missing_precedents לא היה כלל סינון מעל mp.citation.

התיקון (הרחבת השדה הקיים — בהנחיית חיים, בלי עמוד/שדה חדש)

  • DB (db.py): פרמטר q חדש — ILIKE על mp.citation + mp.case_name + cited‑in c.case_number (אינדקס‑פרמטר יחיד, additive; שאר הקוראים — MCP tool, court_fetch_orchestrator — לא נוגעים).
  • API (app.py): פרמטר q; case_id/case_number נשארים מסננים‑מדויקים לקוראים תכנותיים.
  • UI: התווית "תיק (מספר ערר)" → "מספר תיק", placeholder 85074 או 1017-03-26; השדה שולח כעת q (חיפוש חופשי) במקום case_number. ה‎-debounce (350ms) נשמר.

למה לא npm run api:types

ה‎-hook בונה את ה‎-querystring ידנית (URLSearchParams) וה‎-response לא השתנה. חידוש‑טיפוסים מול prod (שעוד לא נפרס) רק היה מושך drift לא‑קשור; אין בו צורך לתפקוד.

בדיקות

  • tsc --noEmit נקי · eslint נקי על הקבצים שהשתנו · py_compile נקי.
  • אחרי דפלוי: הקלדת 85074 בשדה "מספר תיק" תאתר את הפער.

Invariants

  • G2 — הרחבת היכולת הקיימת, לא מסלול‑חיפוש מקביל.
  • INV-IA1 — שער/דף יחיד לפסיקה‑חסרה; בלי עמוד חדש.
  • §6 — ללא בליעת‑שגיאות.

🤖 Generated with Claude Code

## הבעיה בדף [/missing-precedents](web-ui/src/app/missing-precedents/page.tsx) לא ניתן היה לאתר פסיקה חסרה לפי **מספר ההחלטה החסרה עצמה** (למשל `85074`). השדה היחיד שדמה לחיפוש — "תיק (מספר ערר)" — עשה `get_case_by_number` על מספר ה‎*ערר שבו צוטטה* הפסיקה, ולכן הקלדת מספר‑הפסיקה החזירה רשימה ריקה, למרות שהרשומה קיימת: > `ערר (ת"א 85074-04-25) רפאל לוי ואח' נ' הוועדה המקומית לתכנון ובניה - חולון` · `status=open` ב‎-`db.list_missing_precedents` לא היה כלל סינון מעל `mp.citation`. ## התיקון (הרחבת השדה הקיים — בהנחיית חיים, בלי עמוד/שדה חדש) - **DB** ([db.py](mcp-server/src/legal_mcp/services/db.py)): פרמטר `q` חדש — `ILIKE` על `mp.citation` + `mp.case_name` + cited‑in `c.case_number` (אינדקס‑פרמטר יחיד, additive; שאר הקוראים — MCP tool, court_fetch_orchestrator — לא נוגעים). - **API** ([app.py](web/app.py)): פרמטר `q`; `case_id`/`case_number` נשארים מסננים‑מדויקים לקוראים תכנותיים. - **UI**: התווית "תיק (מספר ערר)" → **"מספר תיק"**, placeholder `85074 או 1017-03-26`; השדה שולח כעת `q` (חיפוש חופשי) במקום `case_number`. ה‎-debounce (350ms) נשמר. ## למה לא `npm run api:types` ה‎-hook בונה את ה‎-querystring ידנית (`URLSearchParams`) וה‎-response לא השתנה. חידוש‑טיפוסים מול prod (שעוד לא נפרס) רק היה מושך drift לא‑קשור; אין בו צורך לתפקוד. ## בדיקות - `tsc --noEmit` נקי · `eslint` נקי על הקבצים שהשתנו · `py_compile` נקי. - אחרי דפלוי: הקלדת `85074` בשדה "מספר תיק" תאתר את הפער. ## Invariants - **G2** — הרחבת היכולת הקיימת, לא מסלול‑חיפוש מקביל. - **INV-IA1** — שער/דף יחיד לפסיקה‑חסרה; בלי עמוד חדש. - **§6** — ללא בליעת‑שגיאות. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-12 07:58:54 +00:00
feat(missing-precedents): חיפוש-טקסט לפי מראה-מקום בדף פסיקה-חסרה
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 5s
b49cde7c24
הבעיה: בדף /missing-precedents לא ניתן היה לאתר פסיקה חסרה לפי מספר ההחלטה
החסרה עצמה (למשל 85074). השדה היחיד לחיפוש-תיק עשה get_case_by_number על
מספר ה-ערר שבו צוטטה הפסיקה — ולכן הקלדת מספר-הפסיקה החזירה רשימה ריקה,
למרות שהרשומה קיימת (ערר (ת"א 85074-04-25) ... status=open).

התיקון (הרחבת השדה הקיים, ללא עמוד/שדה חדש — בהנחיית חיים):
- db.list_missing_precedents: פרמטר q חדש — ILIKE על mp.citation +
  mp.case_name + cited-in c.case_number (אינדקס-פרמטר יחיד, additive;
  שאר הקוראים לא נוגעים).
- GET /api/missing-precedents: פרמטר q; case_id/case_number נשארים
  מסננים-מדויקים לקוראים תכנותיים.
- web-ui: התווית "תיק (מספר ערר)" → "מספר תיק", placeholder
  "85074 או 1017-03-26"; השדה שולח q (חיפוש חופשי) במקום case_number.
  Debounce 350ms נשמר.

api:types לא חודש: ה-hook בונה את ה-querystring ידנית וה-response לא
השתנה; חידוש מול prod (שעוד לא נפרס) רק היה מושך drift לא-קשור.

בדיקות: tsc --noEmit נקי, eslint נקי על הקבצים שהשתנו, py_compile נקי.

Invariants: G2 (הרחבת היכולת הקיימת, לא מסלול-חיפוש מקביל), INV-IA1
(שער/דף יחיד לפסיקה-חסרה — בלי עמוד חדש), §6 (ללא בליעת-שגיאות).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 99fe16a43d into main 2026-06-12 07:59:01 +00:00
chaim deleted branch worktree-mp-citation-search 2026-06-12 07:59:01 +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#229