feat(ui): פאנל אישור-תכניות — טאב /precedents + מרכז-אישורים (PR-B) #254

Merged
chaim merged 1 commits from worktree-plans-ui into main 2026-06-14 15:28:23 +00:00
Owner

מה ולמה

הטמעת ה-UI למרשם-התכניות (השלמת פריט 3) — אחרי אישור-עיצוב ב-Claude Design (מוקאפ 22-plans-review.html, פרויקט X17). משלים את ה-backend מ-#253.

לפי הכרעת-היו"ר: טאב "תכניות" ב-/precedents + מונה ב-/approvals (שער-אחד, INV-IA — לא עמוד נפרד), ומניעת-כפילות בהצפה ידנית (לא מיזוג-אוטומטי, G10).

השינויים

  • web-ui/src/lib/api/plans.ts (חדש) — טיפוס Plan + hooks: usePlansPending, usePlanDuplicates, useUpsertPlan, useUpdatePlan, useReviewPlan, useMergePlans (מראָה ל-precedent-library).
  • plans-review-panel.tsx (חדש) — כרטיס-תכנית עם משפט-הציטוט הקנוני (כפי שייכתב בבלוק ט), שדות-תוקף, סימון חוסר-תאריך, באנר "כפילות אפשרית → מזג לכאן", ועריכה/הוספה inline עם תצוגה-מקדימה חיה של הציטוט (מראת-לקוח של format_plan_citation).
  • precedents/page.tsx — טאב "תכניות" + PlansPendingPill + deep-link ?tab=plans.
  • web/app.py — href קטגוריית-התכניות במרכז-האישורים → /precedents?tab=plans.
  • types.ts — מחודש מ-openapi החי (npm run api:types; 5 נתיבי /api/plans).

מרכז-האישורים (/approvals) מרנדר קטגוריות גנרית → קטגוריית "תכניות הממתינות לאישור" (PR-A) מופיעה אוטומטית.

Invariants — הצהרה

  • G10 — אישור אנושי (approve/reject) + מיזוג ידני; אין מיזוג-אוטומטי.
  • INV-AH — הציטוט מוצג ככתבו מהמרשם; התצוגה-המקדימה בעריכה תואמת ל-format_plan_citation (דטרמיניסטי, ללא המצאת-תאריך).
  • INV-IA — שער-אחד: טאב במיכל קיים + מרכז-האישורים; ללא עמוד/ניווט חדש.
  • X6 — UI↔API דרך apiRequest + טיפוסים; שער-העיצוב Claude Design עבר (feedback_claude_design_gate).

צ'קליסט

  • עבר Claude Design ואושר ע"י חיים לפני קוד (AGENTS.md gate)
  • api:types רוענן · tsc --noEmit נקי · lint exit=0 (ללא אזהרות חדשות בקבצי-התכניות)
  • ללא עמוד/ניווט חדש (INV-IA) · ללא מסלול מקביל (G2)

אימות

npm run api:types ✓ (5 נתיבי /api/plans) · npx tsc --noEmit ✓ נקי · npm run lint exit=0. בנייה מלאה ב-CI (Turbopack שובר build ב-worktree עם symlink node_modules — reference_worktree_turbopack_build). UI ויזואלי ייבדק בסביבה הפרוסה אחרי merge.

🤖 Generated with Claude Code

## מה ולמה הטמעת ה-UI למרשם-התכניות (השלמת פריט 3) — **אחרי אישור-עיצוב ב-Claude Design** (מוקאפ `22-plans-review.html`, פרויקט X17). משלים את ה-backend מ-[#253](../253). לפי הכרעת-היו"ר: **טאב "תכניות" ב-/precedents + מונה ב-/approvals** (שער-אחד, INV-IA — לא עמוד נפרד), ומניעת-כפילות ב**הצפה ידנית** (לא מיזוג-אוטומטי, G10). ### השינויים - **`web-ui/src/lib/api/plans.ts`** *(חדש)* — טיפוס `Plan` + hooks: `usePlansPending`, `usePlanDuplicates`, `useUpsertPlan`, `useUpdatePlan`, `useReviewPlan`, `useMergePlans` (מראָה ל-precedent-library). - **`plans-review-panel.tsx`** *(חדש)* — כרטיס-תכנית עם **משפט-הציטוט הקנוני** (כפי שייכתב בבלוק ט), שדות-תוקף, סימון חוסר-תאריך, באנר **"כפילות אפשרית → מזג לכאן"**, ועריכה/הוספה inline עם **תצוגה-מקדימה חיה** של הציטוט (מראת-לקוח של `format_plan_citation`). - **`precedents/page.tsx`** — טאב "תכניות" + `PlansPendingPill` + deep-link `?tab=plans`. - **`web/app.py`** — href קטגוריית-התכניות במרכז-האישורים → `/precedents?tab=plans`. - **`types.ts`** — מחודש מ-openapi החי (`npm run api:types`; 5 נתיבי /api/plans). מרכז-האישורים (`/approvals`) מרנדר קטגוריות גנרית → קטגוריית "תכניות הממתינות לאישור" (PR-A) מופיעה אוטומטית. ## Invariants — הצהרה - **G10** — אישור אנושי (approve/reject) + מיזוג ידני; אין מיזוג-אוטומטי. - **INV-AH** — הציטוט מוצג ככתבו מהמרשם; התצוגה-המקדימה בעריכה תואמת ל-`format_plan_citation` (דטרמיניסטי, ללא המצאת-תאריך). - **INV-IA** — שער-אחד: טאב במיכל קיים + מרכז-האישורים; ללא עמוד/ניווט חדש. - **X6** — UI↔API דרך `apiRequest` + טיפוסים; **שער-העיצוב Claude Design** עבר (feedback_claude_design_gate). ## צ'קליסט - [x] עבר Claude Design ואושר ע"י חיים לפני קוד (AGENTS.md gate) - [x] api:types רוענן · tsc --noEmit נקי · lint exit=0 (ללא אזהרות חדשות בקבצי-התכניות) - [x] ללא עמוד/ניווט חדש (INV-IA) · ללא מסלול מקביל (G2) ## אימות `npm run api:types` ✓ (5 נתיבי /api/plans) · `npx tsc --noEmit` ✓ נקי · `npm run lint` exit=0. בנייה מלאה ב-CI (Turbopack שובר build ב-worktree עם symlink node_modules — [[reference_worktree_turbopack_build]]). UI ויזואלי ייבדק בסביבה הפרוסה אחרי merge. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-14 15:28:01 +00:00
feat(ui): פאנל אישור-תכניות — טאב /precedents + מרכז-אישורים (PR-B)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 4s
Lint — undefined names / undefined-names (pull_request) Successful in 9s
5d75d36e2a
הטמעת ה-UI למרשם-התכניות אחרי אישור-עיצוב ב-Claude Design (מוקאפ 22-plans-review).
- web-ui/src/lib/api/plans.ts: hooks (usePlansPending, usePlanDuplicates,
  useUpsertPlan, useUpdatePlan, useReviewPlan, useMergePlans) + טיפוס Plan מקומי.
- plans-review-panel.tsx: כרטיס-תכנית עם משפט-הציטוט הקנוני (כפי שייכתב בבלוק ט),
  שדות-תוקף, סימון חוסר-תאריך, באנר "כפילות אפשרית → מזג לכאן" (find_similar_plans,
  מיזוג ידני — G10), עריכה/הוספה inline עם תצוגה-מקדימה חיה של הציטוט.
- precedents/page.tsx: טאב "תכניות" + PlansPendingPill + deep-link tab=plans.
- web/app.py: href קטגוריית-התכניות במרכז-האישורים → /precedents?tab=plans.
- api:types: types.ts מחודש מ-openapi החי (5 נתיבי /api/plans).

מרכז-האישורים (/approvals) מרנדר קטגוריות גנרית — קטגוריית-התכניות (PR-A) מופיעה
אוטומטית. אימות: api:types ✓, tsc --noEmit ✓, lint exit=0 (ללא אזהרות חדשות).

Invariants: G10 (אישור אנושי + מיזוג ידני) · INV-AH (ציטוט דטרמיניסטי, תצוגה-מקדימה
תואמת format_plan_citation) · INV-IA (שער-אחד: טאב קיים + מרכז-אישורים, ללא עמוד חדש) ·
X6 (UI↔API, apiRequest + טיפוסים). עבר שער-העיצוב Claude Design (feedback_claude_design_gate).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 6bc9fa89a2 into main 2026-06-14 15:28:23 +00:00
chaim deleted branch worktree-plans-ui 2026-06-14 15:28:23 +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#254