feat(learning): מסלול נקי להעלאת החלטה סופית + פאנל-סגנון דו-סוכני (DeepSeek+Gemini) #158
Reference in New Issue
Block a user
Delete Branch "worktree-final-upload-pipeline"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
מה ולמה
היו"ר קיבלה החלטה סופית חתומה ולא היה מסלול נקי להעלותה — ההעלאה נפלה בטעות למסלול "העלה גרסה מתוקנת" (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
SKILL.md/legal-decision-lessons.mdנשארת אישור-יו"ר ידני; הפאנלים יוצרים הצעות בלבד (decision_lesson / review_status הפיכים+מגובים).draft_final_pairsנפתח בקליטה; הלמידה משווה טיוטה↔סופי.substanceמדולג בפאנל-הסגנון; רק style_method.mark-final(export שלנו) ומ-exports/upload(גרסה-מתוקנת+retrofit) — לא מסלול-מקביל.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
מוסיף מסלול ייעודי לקליטת ההחלטה החתומה של היו"ר, ומפעיל אותו דרך שני שלבים אוטומטיים מדורגים עם פאנלי-סוכנים (אוטו-אישור + אסקלציה ליו"ר). 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>