feat(learning): מסלול נקי להעלאת החלטה סופית + פאנל-סגנון דו-סוכני (DeepSeek+Gemini) #158

Merged
chaim merged 1 commits from worktree-final-upload-pipeline into main 2026-06-08 09:04:16 +00:00
Owner

מה ולמה

היו"ר קיבלה החלטה סופית חתומה ולא היה מסלול נקי להעלותה — ההעלאה נפלה בטעות למסלול "העלה גרסה מתוקנת" (retrofit). ה-PR מוסיף מסלול ייעודי לקליטת ההחלטה החתומה של היו"ר, ומפעיל אותו דרך שני שלבים אוטומטיים מדורגים עם פאנלי-סוכנים (אוטו-אישור + אסקלציה ליו"ר).

Backend (web/)

  • POST /api/cases/{case}/final/upload — קליטת final חיצוני: שמירה קנונית (סופי-{case}.docx + עותק קורפוס-סגנון תחת case_number מלא כדי שבל"מ לא יתנגש עם ערר באותו מספר), פתיחת draft_final_pairs (final_received). לא נוגע ב-active_draft, לא retrofit.
  • POST .../final/run-learning + .../final/run-halacha — שלבים מדורגים המעירים worker מקומי (claude/DeepSeek/Gemini מקומיים בלבד) דרך הרחבת wake_curator_for_final(task=learning|halacha).

פאנל-סגנון חדש (scripts/style_lesson_panel.py)

שני שופטים בלתי-תלויים (DeepSeek + Gemini) על-גבי דיסטילציית-ה-Opus — "למידה כפולה". הסכמה 2/2-keep → decision_lesson (source=panel:deepseek+gemini); substance מדולג (INV-LRN5); הפיך + גיבוי CSV. פאנל-ההלכות: עדכון docstring/SCRIPTS.md (--apply מחווט).

Frontend (web-ui/)

כפתור "העלאת החלטה סופית של היו"ר" + שני כפתורים מדורגים ב-drafts-panel; כל התוויות בעברית (badge מקור-לקח: "פאנל: דיפסיק+גמיני", "הרמס (סקירה)", "מנתח-סגנון").

Invariants

  • INV-LRN1 / G10 — הטמעה ל-SKILL.md/legal-decision-lessons.md נשארת אישור-יו"ר ידני; הפאנלים יוצרים הצעות בלבד (decision_lesson / review_status הפיכים+מגובים).
  • INV-LRN4draft_final_pairs נפתח בקליטה; הלמידה משווה טיוטה↔סופי.
  • INV-LRN5substance מדולג בפאנל-הסגנון; רק style_method.
  • G2 — מסלול-העלאת-סופי הוא יכולת חסרה (final חיצוני), נבדל מ-mark-final (export שלנו) ומ-exports/upload (גרסה-מתוקנת+retrofit) — לא מסלול-מקביל.
  • DM7 — סמכות הלכה נגזרת מ-precedent_level, לא נקבעת בפאנל.

אימות

  • py_compile ל-Python ✓ · tsc --noEmit ✓ · lint: קבצי ה-PR נקיים (השגיאה ב-learning-panel.tsx קיימת-מראש).
  • npm run build המלא לא רץ ב-worktree (מגבלת Turbopack עם node_modules-symlink) — יתאמת ב-Docker build.
  • ספ: docs/spec/07-learning.md §0.6.

🤖 Generated with Claude Code

## מה ולמה היו"ר קיבלה החלטה סופית חתומה ולא היה מסלול נקי להעלותה — ההעלאה נפלה בטעות למסלול "העלה גרסה מתוקנת" (retrofit). ה-PR מוסיף **מסלול ייעודי** לקליטת ההחלטה החתומה של היו"ר, ומפעיל אותו דרך **שני שלבים אוטומטיים מדורגים** עם פאנלי-סוכנים (אוטו-אישור + אסקלציה ליו"ר). ## Backend (`web/`) - `POST /api/cases/{case}/final/upload` — קליטת final חיצוני: שמירה קנונית (`סופי-{case}.docx` + עותק קורפוס-סגנון תחת `case_number` **מלא** כדי שבל"מ לא יתנגש עם ערר באותו מספר), פתיחת `draft_final_pairs` (`final_received`). לא נוגע ב-`active_draft`, לא retrofit. - `POST .../final/run-learning` + `.../final/run-halacha` — שלבים מדורגים המעירים worker מקומי (claude/DeepSeek/Gemini מקומיים בלבד) דרך הרחבת `wake_curator_for_final(task=learning|halacha)`. ## פאנל-סגנון חדש (`scripts/style_lesson_panel.py`) שני שופטים בלתי-תלויים (DeepSeek + Gemini) על-גבי דיסטילציית-ה-Opus — "למידה כפולה". הסכמה 2/2-keep → `decision_lesson` (`source=panel:deepseek+gemini`); `substance` מדולג (INV-LRN5); הפיך + גיבוי CSV. פאנל-ההלכות: עדכון docstring/SCRIPTS.md (`--apply` מחווט). ## Frontend (`web-ui/`) כפתור "העלאת החלטה סופית של היו"ר" + שני כפתורים מדורגים ב-drafts-panel; **כל התוויות בעברית** (badge מקור-לקח: "פאנל: דיפסיק+גמיני", "הרמס (סקירה)", "מנתח-סגנון"). ## Invariants - **INV-LRN1 / G10** — הטמעה ל-`SKILL.md`/`legal-decision-lessons.md` נשארת **אישור-יו"ר ידני**; הפאנלים יוצרים *הצעות* בלבד (decision_lesson / review_status הפיכים+מגובים). - **INV-LRN4** — `draft_final_pairs` נפתח בקליטה; הלמידה משווה טיוטה↔סופי. - **INV-LRN5** — `substance` מדולג בפאנל-הסגנון; רק style_method. - **G2** — מסלול-העלאת-סופי הוא **יכולת חסרה** (final חיצוני), נבדל מ-`mark-final` (export שלנו) ומ-`exports/upload` (גרסה-מתוקנת+retrofit) — לא מסלול-מקביל. - **DM7** — סמכות הלכה נגזרת מ-`precedent_level`, לא נקבעת בפאנל. ## אימות - `py_compile` ל-Python ✓ · `tsc --noEmit` ✓ · lint: קבצי ה-PR נקיים (השגיאה ב-learning-panel.tsx קיימת-מראש). - `npm run build` המלא לא רץ ב-worktree (מגבלת Turbopack עם node_modules-symlink) — יתאמת ב-Docker build. - ספ: `docs/spec/07-learning.md §0.6`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-08 09:04:06 +00:00
מוסיף מסלול ייעודי לקליטת ההחלטה החתומה של היו"ר, ומפעיל אותו דרך שני
שלבים אוטומטיים מדורגים עם פאנלי-סוכנים (אוטו-אישור + אסקלציה ליו"ר).

Backend (web/):
- POST /api/cases/{case}/final/upload — קליטת final חיצוני: שמירה קנונית
  (סופי-{case}.docx + עותק קורפוס-סגנון תחת case_number מלא כדי שבל"מ לא
  יתנגש עם ערר באותו מספר), פתיחת draft_final_pairs (final_received). לא נוגע
  ב-active_draft ולא מריץ retrofit (נבדל מ-exports/upload ו-mark-final → לא G2).
- POST .../final/run-learning + .../final/run-halacha — שלבים מדורגים שמעירים
  worker מקומי (claude/DeepSeek/Gemini מקומיים בלבד) דרך הרחבת
  wake_curator_for_final עם param task=learning|halacha.

פאנל-סגנון חדש (scripts/style_lesson_panel.py): שני שופטים (DeepSeek+Gemini)
על-גבי דיסטילציית-ה-Opus; הסכמה 2/2-keep → decision_lesson
(source=panel:deepseek+gemini); substance מדולג (INV-LRN5); הפיך + גיבוי CSV.
פאנל-הלכות: docstring/SCRIPTS.md עודכנו (--apply מחווט).

Frontend (web-ui/): כפתור "העלאת החלטה סופית של היו"ר" + שני כפתורים מדורגים
"הרץ למידת-קול"/"הרץ אימות-הלכות" ב-drafts-panel; כל התוויות בעברית
(badge מקור-לקח: "פאנל: דיפסיק+גמיני", "הרמס (סקירה)"...).

Spec: docs/spec/07-learning.md §0.6. Invariants: INV-LRN1/LRN4/LRN5, G10
(שער-יו"ר ידני להטמעה ל-SKILL.md/lessons.md — הפאנלים יוצרים הצעות בלבד);
G2 (מסלול-סופי הוא יכולת חסרה, לא מסלול-מקביל).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 9ae49f0f70 into main 2026-06-08 09:04:16 +00:00
chaim deleted branch worktree-final-upload-pipeline 2026-06-08 09:04:16 +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#158