Legal-i Claude Opus 4.7 (1M context) commited on
Commit
7bc737d
·
1 Parent(s): 76b9874

feat(Day 49 phase 2.5): refinement chips per matched doctrine

Browse files

Adds context-aware refinement suggestions to the doctrine panel.
After matching e.g. chovat_shimoa, the user sees chips like:
פגם בשימוע · ויתור על שימוע · שימוע פיקטיבי · שימוע בדיעבד

Click → appends the chip text to the question and re-submits.
Reduces cognitive load: user doesn't need to know what sub-topics
exist within a doctrine; the system suggests them.

Backend:
- Added `refinements: [...]` field to 20 high-traffic doctrines in
doctrines.json (covers all of labor + health + 7 contracts + 4
torts). Pure Hebrew sub-topic phrases.
- /v1/doctrines/classify now includes `refinements` array per match.

Frontend:
- leRenderDossierPanels aggregates refinements from top 2 matches,
dedupes, caps at 8. Renders below the doctrine pills.
- Click handler routes to chat (window.ask) or Lawyer Ask
(submitLawyerAsk) based on the result origin.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

tau_rag/api/fastapi_app.py CHANGED
@@ -22577,6 +22577,10 @@ def doctrines_classify(body: _DoctrineClassifyRequest): # type: ignore
22577
  "statute": ((doc.get("statute_refs") or [{}])[0]
22578
  .get("law") if doc.get("statute_refs") else None),
22579
  "pending_review": bool(doc.get("_pending_lawyer_review")),
 
 
 
 
22580
  })
22581
  return {"ok": True, "matches": out, "n_total": len(out)}
22582
  except Exception as e:
 
22577
  "statute": ((doc.get("statute_refs") or [{}])[0]
22578
  .get("law") if doc.get("statute_refs") else None),
22579
  "pending_review": bool(doc.get("_pending_lawyer_review")),
22580
+ # Day 49 Phase 2.5 — refinement chips. Pre-curated Hebrew
22581
+ # sub-topic phrases per doctrine. Frontend appends to the
22582
+ # user's question and re-submits to narrow the topic.
22583
+ "refinements": doc.get("refinements") or [],
22584
  })
22585
  return {"ok": True, "matches": out, "n_total": len(out)}
22586
  except Exception as e:
tau_rag/data/doctrines.json CHANGED
@@ -68,6 +68,12 @@
68
  "במו\"מ לכריתת חוזה",
69
  "הסתרת מידע מהותי",
70
  "הצד השני הסתיר"
 
 
 
 
 
 
71
  ]
72
  },
73
  {
@@ -232,6 +238,13 @@
232
  "פוטר שלא כדין",
233
  "שלא כדין",
234
  "פיטורים לא חוקיים"
 
 
 
 
 
 
 
235
  ]
236
  },
237
  {
@@ -853,6 +866,12 @@
853
  "פרשנות סעיף",
854
  "פרשנות הסכם",
855
  "המטרה החוזית"
 
 
 
 
 
 
856
  ]
857
  },
858
  {
@@ -954,6 +973,12 @@
954
  "מגפה וחוזה",
955
  "מלחמה וחוזה",
956
  "חוזה שלא ניתן לקיים"
 
 
 
 
 
 
957
  ]
958
  },
959
  {
@@ -1007,6 +1032,12 @@
1007
  "תנאי שירות",
1008
  "תקנון אתר",
1009
  "תניות בלתי הוגנות"
 
 
 
 
 
 
1010
  ]
1011
  },
1012
  {
@@ -1124,6 +1155,12 @@
1124
  "נזק רפואי",
1125
  "טיפול רשלני",
1126
  "רופא רשלן"
 
 
 
 
 
 
1127
  ]
1128
  },
1129
  {
@@ -1241,6 +1278,13 @@
1241
  "פיטורים שלא כדין",
1242
  "פיצוי על פיטורים שלא כדין",
1243
  "פיטורים לא חוקיים"
 
 
 
 
 
 
 
1244
  ]
1245
  },
1246
  {
@@ -1335,6 +1379,12 @@
1335
  "ללא הודעה מוקדמת",
1336
  "פיצוי הודעה מוקדמת",
1337
  "פיטורים שלא כדין"
 
 
 
 
 
 
1338
  ]
1339
  },
1340
  {
@@ -1678,6 +1728,12 @@
1678
  "שעות עבודה ומנוחה",
1679
  "שעות עבודה",
1680
  "חוק שעות עבודה ומנוחה"
 
 
 
 
 
 
1681
  ]
1682
  },
1683
  {
@@ -1722,6 +1778,12 @@
1722
  "השלמה לשכר מינימום",
1723
  "פחות משכר מינימום",
1724
  "תביעה לשכר מינימום"
 
 
 
 
 
 
1725
  ]
1726
  },
1727
  {
@@ -1797,6 +1859,13 @@
1797
  "הפליה על רקע גיל",
1798
  "הפליה מטעמי גיל",
1799
  "הפליה מטעמי מין"
 
 
 
 
 
 
 
1800
  ]
1801
  },
1802
  {
@@ -1851,6 +1920,12 @@
1851
  "אני עובד או קבלן",
1852
  "יחסי עובד מעביד",
1853
  "תביעת סיווג עובד"
 
 
 
 
 
 
1854
  ]
1855
  },
1856
  {
@@ -1908,6 +1983,12 @@
1908
  "לא הפריש לפנסיה",
1909
  "פיגור בהפרשות",
1910
  "תביעה לפנסיה"
 
 
 
 
 
 
1911
  ]
1912
  },
1913
  {
@@ -1969,6 +2050,12 @@
1969
  "לא קיבלתי הסבר",
1970
  "סיכוני הניתוח",
1971
  "סיבוכים מהטיפול"
 
 
 
 
 
 
1972
  ]
1973
  },
1974
  {
@@ -2150,6 +2237,12 @@
2150
  "איחר באבחון",
2151
  "איחר באבחנה",
2152
  "איחר לזהות"
 
 
 
 
 
 
2153
  ]
2154
  },
2155
  {
@@ -2189,6 +2282,11 @@
2189
  "חוק התרופות",
2190
  "לחייב לקיים את החוזה",
2191
  "תביעה לאכיפה"
 
 
 
 
 
2192
  ]
2193
  },
2194
  {
@@ -2235,6 +2333,12 @@
2235
  "פיצויי קיום",
2236
  "פיצויי הסתמכות",
2237
  "תביעת פיצויים על הפרה"
 
 
 
 
 
 
2238
  ]
2239
  },
2240
  {
@@ -2278,6 +2382,12 @@
2278
  "חוזה בטל מחמת טעות",
2279
  "סעיף 14",
2280
  "טעות הדדית"
 
 
 
 
 
 
2281
  ]
2282
  },
2283
  {
@@ -2320,6 +2430,12 @@
2320
  "שיקר לי על",
2321
  "הטעייה",
2322
  "הטעייה בעת כריתת חוזה"
 
 
 
 
 
 
2323
  ]
2324
  },
2325
  {
@@ -2513,6 +2629,12 @@
2513
  "סעיף 17",
2514
  "סעיף 18",
2515
  "חוזה תחת כפייה"
 
 
 
 
 
 
2516
  ]
2517
  },
2518
  {
 
68
  "במו\"מ לכריתת חוזה",
69
  "הסתרת מידע מהותי",
70
  "הצד השני הסתיר"
71
+ ],
72
+ "refinements": [
73
+ "תום-לב בניהול משא ומתן",
74
+ "הפרת תום-לב",
75
+ "חובת גילוי",
76
+ "פיצוי על הפרת תום-לב"
77
  ]
78
  },
79
  {
 
238
  "פוטר שלא כדין",
239
  "שלא כדין",
240
  "פיטורים לא חוקיים"
241
+ ],
242
+ "refinements": [
243
+ "פגם בשימוע",
244
+ "ויתור על שימוע",
245
+ "שימוע פיקטיבי",
246
+ "שימוע בדיעבד",
247
+ "שימוע במגזר ציבורי"
248
  ]
249
  },
250
  {
 
866
  "פרשנות סעיף",
867
  "פרשנות הסכם",
868
  "המטרה החוזית"
869
+ ],
870
+ "refinements": [
871
+ "הלכת אפרופים",
872
+ "כוונת הצדדים",
873
+ "פרשנות סעיף ספציפי",
874
+ "פרשנות חוזה אחיד"
875
  ]
876
  },
877
  {
 
973
  "מגפה וחוזה",
974
  "מלחמה וחוזה",
975
  "חוזה שלא ניתן לקיים"
976
+ ],
977
+ "refinements": [
978
+ "מגפת קורונה כסיכול",
979
+ "מלחמה כסיכול",
980
+ "הפרה צפויה",
981
+ "סיכול חלקי"
982
  ]
983
  },
984
  {
 
1032
  "תנאי שירות",
1033
  "תקנון אתר",
1034
  "תניות בלתי הוגנות"
1035
+ ],
1036
+ "refinements": [
1037
+ "תניה מקפחת בתקנון אתר",
1038
+ "ביטול תניה מקפחת",
1039
+ "חוזה אחיד עם חברה",
1040
+ "תניית בוררות"
1041
  ]
1042
  },
1043
  {
 
1155
  "נזק רפואי",
1156
  "טיפול רשלני",
1157
  "רופא רשלן"
1158
+ ],
1159
+ "refinements": [
1160
+ "סטנדרט זהירות רפואי",
1161
+ "אובדן סיכויי החלמה",
1162
+ "הוצאות רפואיות",
1163
+ "תקופת התיישנות רפואית"
1164
  ]
1165
  },
1166
  {
 
1278
  "פיטורים שלא כדין",
1279
  "פיצוי על פיטורים שלא כדין",
1280
  "פיטורים לא חוקיים"
1281
+ ],
1282
+ "refinements": [
1283
+ "חישוב פיצויים",
1284
+ "פיצויים מוגדלים",
1285
+ "פרישה מוקדמת",
1286
+ "פיצויים בחוזה אישי",
1287
+ "חוזה לתקופה קצובה"
1288
  ]
1289
  },
1290
  {
 
1379
  "ללא הודעה מוקדמת",
1380
  "פיצוי הודעה מוקדמת",
1381
  "פיטורים שלא כדין"
1382
+ ],
1383
+ "refinements": [
1384
+ "ויתור על הודעה מוקדמת",
1385
+ "חישוב תקופת הודעה",
1386
+ "פיצוי חלף הודעה מוקדמת",
1387
+ "התפטרות בלי הודעה מוקדמת"
1388
  ]
1389
  },
1390
  {
 
1728
  "שעות עבודה ומנוחה",
1729
  "שעות עבודה",
1730
  "חוק שעות עבודה ומנוחה"
1731
+ ],
1732
+ "refinements": [
1733
+ "חישוב גמול שעות נוספות",
1734
+ "תפקיד אמון אישי",
1735
+ "הסכם קיבוצי לשעות נוספות",
1736
+ "חוסר רישום שעות"
1737
  ]
1738
  },
1739
  {
 
1778
  "השלמה לשכר מינימום",
1779
  "פחות משכר מינימום",
1780
  "תביעה לשכר מינימום"
1781
+ ],
1782
+ "refinements": [
1783
+ "השלמה לשכר מינימום",
1784
+ "מינימום לעובד חלקי",
1785
+ "סנקציה פלילית",
1786
+ "תשלום נמוך משכר מינימום"
1787
  ]
1788
  },
1789
  {
 
1859
  "הפליה על רקע גיל",
1860
  "הפליה מטעמי גיל",
1861
  "הפליה מטעמי מין"
1862
+ ],
1863
+ "refinements": [
1864
+ "אפליה מטעמי מין",
1865
+ "אפליה מטעמי גיל",
1866
+ "אפליה על רקע הריון",
1867
+ "היפוך נטל ההוכחה",
1868
+ "התעמרות בעבודה"
1869
  ]
1870
  },
1871
  {
 
1920
  "אני עובד או קבלן",
1921
  "יחסי עובד מעביד",
1922
  "תביעת סיווג עובד"
1923
+ ],
1924
+ "refinements": [
1925
+ "מבחן ההשתלבות",
1926
+ "מבחן הפיקוח",
1927
+ "סיווג רטרואקטיבי",
1928
+ "פיצויים לקבלן"
1929
  ]
1930
  },
1931
  {
 
1983
  "לא הפריש לפנסיה",
1984
  "פיגור בהפרשות",
1985
  "תביעה לפנסיה"
1986
+ ],
1987
+ "refinements": [
1988
+ "פיצוי על פיגור בהפרשות",
1989
+ "צו ההרחבה",
1990
+ "בחירת קרן פנסיה",
1991
+ "תביעה לפנסיה"
1992
  ]
1993
  },
1994
  {
 
2050
  "לא קיבלתי הסבר",
2051
  "סיכוני הניתוח",
2052
  "סיבוכים מהטיפול"
2053
+ ],
2054
+ "refinements": [
2055
+ "מבחן החולה הסביר",
2056
+ "טיפול חירום",
2057
+ "ניתוח בלי הסכמה",
2058
+ "הסבר סיכונים"
2059
  ]
2060
  },
2061
  {
 
2237
  "איחר באבחון",
2238
  "איחר באבחנה",
2239
  "איחר לזהות"
2240
+ ],
2241
+ "refinements": [
2242
+ "איחור באבחון סרטן",
2243
+ "פספוס מחלה",
2244
+ "אובדן סיכויי החלמה",
2245
+ "סטיה מסטנדרט"
2246
  ]
2247
  },
2248
  {
 
2282
  "חוק התרופות",
2283
  "לחייב לקיים את החוזה",
2284
  "תביעה לאכיפה"
2285
+ ],
2286
+ "refinements": [
2287
+ "אכיפה ספציפית",
2288
+ "מקרי דחיה לאכיפה",
2289
+ "אכיפה בחוזה לעבודה אישית"
2290
  ]
2291
  },
2292
  {
 
2333
  "פיצויי קיום",
2334
  "פיצויי הסתמכות",
2335
  "תביעת פיצויים על הפרה"
2336
+ ],
2337
+ "refinements": [
2338
+ "פיצויי קיום",
2339
+ "פיצויי הסתמכות",
2340
+ "חובת הקטנת הנזק",
2341
+ "אכיפת חוזה"
2342
  ]
2343
  },
2344
  {
 
2382
  "חוזה בטל מחמת טעות",
2383
  "סעיף 14",
2384
  "טעות הדדית"
2385
+ ],
2386
+ "refinements": [
2387
+ "טעות יסודית",
2388
+ "טעות בעובדה",
2389
+ "טעות בדין",
2390
+ "ביטול חוזה בשל טעות"
2391
  ]
2392
  },
2393
  {
 
2430
  "שיקר לי על",
2431
  "הטעייה",
2432
  "הטעייה בעת כריתת חוזה"
2433
+ ],
2434
+ "refinements": [
2435
+ "מצג שווא",
2436
+ "הסתרת מידע מהותי",
2437
+ "תרמית בכריתת חוזה",
2438
+ "פיצוי על הטעיה"
2439
  ]
2440
  },
2441
  {
 
2629
  "סעיף 17",
2630
  "סעיף 18",
2631
  "חוזה תחת כפייה"
2632
+ ],
2633
+ "refinements": [
2634
+ "כפייה כלכלית",
2635
+ "השפעה בלתי הוגנת",
2636
+ "אילוץ בכריתה",
2637
+ "ביטול חוזה בכפייה"
2638
  ]
2639
  },
2640
  {