feat(arguments): פופאפ פרופוזיציות גולמיות בלחיצה על "מסתמך על N" #166

Merged
chaim merged 1 commits from worktree-argument-claims-popover into main 2026-06-09 06:51:51 +00:00
Owner

מה זה עושה

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

למה זה היה אפשרי בקלות

הקישור טיעון↔פרופוזיציות כבר נשמר ב-DB (טבלת legal_argument_propositions), וטקסט הטענות ב-claims. ה-UI כבר קיבל את ה-IDs (כך ידע להציג "N"). הפער היחיד: ה-IDs הוחזרו בלי הטקסט. אין כאן קריאת-LLM ואין עלות — רק חיבור הנתון הקיים.

השינוי

Backendargument_aggregator.get_legal_arguments: השאילתה שכבר שולפת את ה-claim_ids עושה כעת JOIN claims ומחזירה שדה חדש supporting_propositions = [{id, text, source_document}] באותו round-trip. supporting_claims נשאר id-only (תאימות לאחור — מונה ה-UI, צרכני MCP).

Frontendlegal-arguments-panel.tsx: השורה נעטפה ב-shadcn Popover המרנדר רשימה ממוספרת של הפרופוזיציות + מקור. Fallback לטקסט הסטטי הישן כשהשדה חסר (דאטה ישן לפני deploy).

Invariants

  • G2 (אין מסלול מקביל) — העשרה של אותו endpoint/שאילתה קיימים, לא מסלול חדש.
  • G1 (נרמול-במקור) — הנתון כבר מנורמל ב-DB; רק מצרפים אותו, אין תיקון-בקריאה.
  • §6 (אין בליעה שקטה) — לא נוגע בטיפול-שגיאות.

בדיקות

  • tsc --noEmit → נקי (exit 0)
  • eslint על הקבצים שהשתנו → נקי
  • py_compile על השירות → OK
  • הערה: npm run build נכשל ב-worktree על symlink של node_modules (Turbopack, ארטיפקט-סביבה) — לא קשור לשינוי; ייבנה תקין ב-Docker/CI.

🤖 Generated with Claude Code

## מה זה עושה בדף הטיעונים, השורה "מסתמך על N פרופוזיציות גולמיות" הייתה טקסט סטטי בלבד. עכשיו לחיצה עליה פותחת פופאפ שמציג את **הטענות הגולמיות (claims) verbatim** שמהן אוגד הטיעון, כולל מסמך-המקור של כל אחת. ## למה זה היה אפשרי בקלות הקישור טיעון↔פרופוזיציות **כבר נשמר ב-DB** (טבלת `legal_argument_propositions`), וטקסט הטענות ב-`claims`. ה-UI כבר קיבל את ה-IDs (כך ידע להציג "N"). הפער היחיד: ה-IDs הוחזרו בלי הטקסט. אין כאן קריאת-LLM ואין עלות — רק חיבור הנתון הקיים. ## השינוי **Backend** — `argument_aggregator.get_legal_arguments`: השאילתה שכבר שולפת את ה-claim_ids עושה כעת `JOIN claims` ומחזירה שדה חדש `supporting_propositions = [{id, text, source_document}]` **באותו round-trip**. `supporting_claims` נשאר id-only (תאימות לאחור — מונה ה-UI, צרכני MCP). **Frontend** — `legal-arguments-panel.tsx`: השורה נעטפה ב-shadcn `Popover` המרנדר רשימה ממוספרת של הפרופוזיציות + מקור. Fallback לטקסט הסטטי הישן כשהשדה חסר (דאטה ישן לפני deploy). ## Invariants - **G2 (אין מסלול מקביל)** — העשרה של אותו endpoint/שאילתה קיימים, לא מסלול חדש. - **G1 (נרמול-במקור)** — הנתון כבר מנורמל ב-DB; רק מצרפים אותו, אין תיקון-בקריאה. - **§6 (אין בליעה שקטה)** — לא נוגע בטיפול-שגיאות. ## בדיקות - `tsc --noEmit` → נקי (exit 0) - `eslint` על הקבצים שהשתנו → נקי - `py_compile` על השירות → OK - הערה: `npm run build` נכשל ב-worktree על symlink של node_modules (Turbopack, ארטיפקט-סביבה) — לא קשור לשינוי; ייבנה תקין ב-Docker/CI. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-09 06:51:45 +00:00
הקישור טיעון↔פרופוזיציות כבר נשמר ב-DB (legal_argument_propositions),
אך ה-UI הציג רק את המספר. מעשיר את get_legal_arguments באותו round-trip
(JOIN ל-claims) להחזיר supporting_propositions = {id, text, source_document},
ועוטף את שורת "מסתמך על N פרופוזיציות" ב-Popover שמציג את הטענות הגולמיות
verbatim עם מקור. שקיפות ועקיבוּת מהטיעון המאוגד חזרה לטענות-המקור.

- supporting_claims נשאר id-only (תאימות לאחור: מונה, צרכני MCP)
- supporting_propositions שדה חדש אופציונלי; fallback לטקסט סטטי כשחסר
- אין מסלול מקביל (G2) — העשרה של אותו endpoint; נרמול-במקור (G1)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 6299998267 into main 2026-06-09 06:51:51 +00:00
chaim deleted branch worktree-argument-claims-popover 2026-06-09 06:51:51 +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#166