feat(case-ui): כרטיס "הפקת מסמכים" עם 3 כפתורי-הפק דטרמיניסטיים (#214) #386

Merged
chaim merged 1 commits from worktree-agent-a72c8793960b71772 into main 2026-06-30 19:56:47 +00:00
Owner

מה ולמה

מוסיף כרטיס "הפקת מסמכים" בראש טאב "טיוטות והערות" של התיק — תוספת ל-mockup 18h המאושר (mockup 26-drafts-quick-actions.html, שער-העיצוב מסומן). תוספת לעמוד הקיים, לא בנייה מחדש — כל הסקשנים נשמרו (באנר, "החלטה סופית ולמידה", "קבצי טיוטה", "הערות יו״ר" + דיאלוג, CitationsSection, וכל ה-hooks). TaskMaster #214.

3 כפתורי-הפק דטרמיניסטיים (בלי פענוח-טקסט):

כפתור מייצר Backend
הפק סיכום מנהלים תמצית טענות-הצדדים (מסמך נפרד) POST /api/cases/{n}/generate/party-claims-summary → CEO wakeup action="party_claims_summary" (שלב H2, host-side)
הפק טיוטה של טענות הצדדים (חלקית) בלוקים ה–ט, עד הדיון POST /api/cases/{n}/generate/interim-draft → CEO wakeup action="interim_draft" (שלב H, host-side)
הפק טיוטת החלטה מלאה כל 12 הבלוקים שימוש חוזר ב-useExportDocx הקיים (POST /export-docx, in-container, ללא LLM)
  • כפתור 3 הועבר מהבאנר (כפתור "הפק DOCX" הוסר משם — אין כפילות-ייצוא); הבאנר נשאר אינדיקטור "טיוטה vN מוכנה לעיון" בלבד. disabled + title="זמין כשיש בלוקים כתובים" כש-!isDraftReady.
  • כפתורים 1–2 רצים host-side (claude_session → claude -p, לא בקונטיינר), לכן מפעילים CEO wakeup סטרוקטורלי דרך ה-Platform Port ואז pollים לסיום: סיכום → GET /research/party-claims-summary (200=מוכן → פתח/DOCX); טיוטה חלקית → רשימת ה-exports עד שמופיע טיוטת-ביניים-{n}-vN.docx.

מסלול-עירור יחיד: pc_wake_ceo_for_action (חדש ב-paperclip_client.py) → re-export דרך agent_platform_port.pypc_requestPOST /api/agents/{id}/wakeup — לעולם לא DB insert.

Invariants — הצהרה (חובה)

  • נוגע / מקיים:
    • G12 (שער-הפלטפורמה) — מגע-Paperclip חדש (wake_ceo_for_action) נוסף רק ב-paperclip_client.py ונחשף דרך agent_platform_port.py; app.py מייבא רק מה-Port. leak-guard ירוק.
    • G2 (מקור-אמת יחיד) — אין מסלול-עירור מקביל; שימוש חוזר ב-pc_request/get_case_issues/CEO_AGENTS הקיימים, וב-useExportDocx/useExports הקיימים בצד-לקוח.
    • G10 (חתום-יו"ר/CEO) — הפקה דרך ה-CEO; הסיכום/הטיוטה נכתבים ע"י סוכן ה-CEO.
    • INV-UI9 — תאריכים ב-Asia/Jerusalem דרך format-date.ts; qc.invalidateQueries ב-success.
    • X6 (UI↔API contract) — מודול typed חדש lib/api/generate.ts.

צ'קליסט — פרוטוקול כתיבת-קוד

  • קראתי את מסמכי-הספ/הרכיב הרלוונטיים (drafts-panel.tsx מלא, mockup 26, exports.ts, paperclip_client, agent_platform_port, legal-ceo.md שלב H/H2)
  • השינוי לא יוצר מסלול מקביל ליכולת קיימת (G2) ולא מתקן תסמין בקריאה (G1)
  • לא הוספתי מגע-Paperclip מחוץ ל-Platform Port (G12) — mcp-server/src וה-skills נקיים (leak-guard ירוק)
  • אין בליעה שקטה — wakeup מחזיר {status, ...} ומתעד warning בכשל
  • בדיקות: tsc --noEmit ✓, eslint ✓, py_compile ✓, leak_guard.py
  • לא data-migration

אימות

  • npx tsc --noEmit (web-ui) — נקי.
  • npx eslint drafts-panel.tsx generate.ts — נקי.
  • python3 -m py_compile web/app.py web/paperclip_client.py web/agent_platform_port.py — נקי.
  • python3 scripts/leak_guard.py — ✓ G12 import seam intact.
  • npm run api:types: קורא OpenAPI מפרודקשן — 2 ה-endpoints החדשים יופיעו רק לאחר deploy; generate.ts hand-typed ולא תלוי ב-types.ts. דרוש regen אחרי deploy.

🤖 Generated with Claude Code

## מה ולמה מוסיף כרטיס **"הפקת מסמכים"** בראש טאב **"טיוטות והערות"** של התיק — תוספת ל-mockup 18h המאושר (mockup `26-drafts-quick-actions.html`, שער-העיצוב מסומן). **תוספת לעמוד הקיים, לא בנייה מחדש** — כל הסקשנים נשמרו (באנר, "החלטה סופית ולמידה", "קבצי טיוטה", "הערות יו״ר" + דיאלוג, CitationsSection, וכל ה-hooks). TaskMaster #214. 3 כפתורי-הפק דטרמיניסטיים (בלי פענוח-טקסט): | כפתור | מייצר | Backend | |---|---|---| | **הפק סיכום מנהלים** | תמצית טענות-הצדדים (מסמך נפרד) | `POST /api/cases/{n}/generate/party-claims-summary` → CEO wakeup `action="party_claims_summary"` (שלב H2, host-side) | | **הפק טיוטה של טענות הצדדים** (חלקית) | בלוקים ה–ט, עד הדיון | `POST /api/cases/{n}/generate/interim-draft` → CEO wakeup `action="interim_draft"` (שלב H, host-side) | | **הפק טיוטת החלטה מלאה** | כל 12 הבלוקים | **שימוש חוזר** ב-`useExportDocx` הקיים (`POST /export-docx`, in-container, ללא LLM) | - כפתור 3 הועבר מהבאנר (כפתור "הפק DOCX" **הוסר** משם — אין כפילות-ייצוא); הבאנר נשאר אינדיקטור "טיוטה vN מוכנה לעיון" בלבד. disabled + `title="זמין כשיש בלוקים כתובים"` כש-`!isDraftReady`. - כפתורים 1–2 רצים host-side (claude_session → `claude -p`, לא בקונטיינר), לכן מפעילים CEO wakeup סטרוקטורלי דרך ה-Platform Port ואז **pollים** לסיום: סיכום → `GET /research/party-claims-summary` (200=מוכן → פתח/DOCX); טיוטה חלקית → רשימת ה-exports עד שמופיע `טיוטת-ביניים-{n}-vN.docx`. מסלול-עירור יחיד: `pc_wake_ceo_for_action` (חדש ב-`paperclip_client.py`) → re-export דרך `agent_platform_port.py` → `pc_request` → **`POST /api/agents/{id}/wakeup`** — לעולם לא DB insert. ## Invariants — הצהרה (חובה) - **נוגע / מקיים:** - **G12** (שער-הפלטפורמה) — מגע-Paperclip חדש (`wake_ceo_for_action`) נוסף רק ב-`paperclip_client.py` ונחשף דרך `agent_platform_port.py`; `app.py` מייבא רק מה-Port. **leak-guard ירוק.** - **G2** (מקור-אמת יחיד) — אין מסלול-עירור מקביל; שימוש חוזר ב-`pc_request`/`get_case_issues`/`CEO_AGENTS` הקיימים, וב-`useExportDocx`/`useExports` הקיימים בצד-לקוח. - **G10** (חתום-יו"ר/CEO) — הפקה דרך ה-CEO; הסיכום/הטיוטה נכתבים ע"י סוכן ה-CEO. - **INV-UI9** — תאריכים ב-Asia/Jerusalem דרך `format-date.ts`; `qc.invalidateQueries` ב-success. - **X6** (UI↔API contract) — מודול typed חדש `lib/api/generate.ts`. ## צ'קליסט — פרוטוקול כתיבת-קוד - [x] קראתי את מסמכי-הספ/הרכיב הרלוונטיים (drafts-panel.tsx מלא, mockup 26, exports.ts, paperclip_client, agent_platform_port, legal-ceo.md שלב H/H2) - [x] השינוי **לא** יוצר מסלול מקביל ליכולת קיימת (G2) ולא מתקן תסמין בקריאה (G1) - [x] **לא** הוספתי מגע-Paperclip מחוץ ל-Platform Port (G12) — `mcp-server/src` וה-skills נקיים (leak-guard ירוק) - [x] אין בליעה שקטה — wakeup מחזיר `{status, ...}` ומתעד warning בכשל - [x] בדיקות: `tsc --noEmit` ✓, `eslint` ✓, `py_compile` ✓, `leak_guard.py` ✓ - [ ] לא data-migration ## אימות - `npx tsc --noEmit` (web-ui) — נקי. - `npx eslint drafts-panel.tsx generate.ts` — נקי. - `python3 -m py_compile web/app.py web/paperclip_client.py web/agent_platform_port.py` — נקי. - `python3 scripts/leak_guard.py` — ✓ G12 import seam intact. - **`npm run api:types`**: קורא OpenAPI מפרודקשן — 2 ה-endpoints החדשים יופיעו רק לאחר deploy; `generate.ts` hand-typed ולא תלוי ב-`types.ts`. דרוש regen אחרי deploy. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-30 19:55:49 +00:00
feat(case-ui): כרטיס "הפקת מסמכים" עם 3 כפתורי-הפק דטרמיניסטיים (#214)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 4s
Lint — undefined names / undefined-names (pull_request) Successful in 11s
3ea5d3b536
מוסיף כרטיס "הפקת מסמכים" בראש טאב "טיוטות והערות" (mockup 26 — תוספת ל-18h),
תוספת לעמוד הקיים, כל הסקשנים נשמרים.

- כפתור 1 "הפק סיכום מנהלים" → endpoint חדש POST /generate/party-claims-summary
  → CEO wakeup סטרוקטורלי action="party_claims_summary" (שלב H2, host-side).
  Polling: GET /research/party-claims-summary (200=מוכן → פתח/DOCX).
- כפתור 2 "הפק טיוטה של טענות הצדדים" → endpoint חדש POST /generate/interim-draft
  → CEO wakeup action="interim_draft" (שלב H, host-side).
  Polling: רשימת ה-exports עד שמופיע טיוטת-ביניים-{case}-vN.docx.
- כפתור 3 "הפק טיוטת החלטה מלאה" → ה-useExportDocx הקיים (in-container, ללא LLM);
  הועבר מהבאנר (כפתור "הפק DOCX" הוסר משם — אין כפילות). disabled+title כשאין
  בלוקים כתובים (isDraftReady).

מסלול-עירור יחיד דרך ה-Platform Port (pc_wake_ceo_for_action) → API helper
/api/agents/{id}/wakeup, לעולם לא DB insert. Israel-time + cache-invalidation.

Invariants: G12 (מגע-Paperclip רק ב-paperclip_client + agent_platform_port;
leak-guard ירוק) · G2 (אין מסלול-עירור מקביל — שימוש חוזר ב-pc_request הקיים) ·
G10 (הפקה מגודרת-יו"ר/CEO) · INV-UI9 (Asia/Jerusalem) · X6 (UI↔API contract).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit def823b89f into main 2026-06-30 19:56:47 +00:00
chaim deleted branch worktree-agent-a72c8793960b71772 2026-06-30 19:56:47 +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#386