refactor(cases): צמצום תפריט-סטטוס 17→10 + מקור-אמת יחיד (UI-B1/G2) #287

Merged
chaim merged 1 commits from worktree-status-trim into main 2026-06-17 10:15:41 +00:00
Owner

למה

תפריט הסטטוס-הידני הכיל 17 סטטוסים (הטיפוס בפרונט אף הגדיר 19). חקירה הראתה ש-~9 מהם דקורציה טהורה — שלבי-ביניים שאף קוד בפייפליין לא קבע ושום לוגיקה לא הסתעפה לפיהם, מנופחים בתפריט ועם רשימות-כפולות לא-עקביות ב-6+ קבצים (15/16/17/18 ערכים שונים). בנוסף exported היה סטטוס-רפאים (מוחרג מ-stale אך אף פעם לא נקבע — באג agent-audit-2026-05-17).

הליבה הנשמרת (10)

new · processing · documents_ready · outcome_set · direction_approved · qa_review · drafted · exported · reviewed · final

הוסרו (9): uploading, in_progress, analyst_verified, research_complete, brainstorming, analysis_enriched, ready_for_writing, drafting, qa_failed.

מה משתנה

פרונט

  • SSoT חדש web-ui/src/lib/api/case-status.ts — רשימה-מסודרת אחת + שלבים (intake/prep/thinking/writing/done) + תוויות + statusLabel(). כל הצרכנים מייבאים משם (badge, changer, timeline, guide, donut, kpi-cards, compose) במקום רשימות-כפולות. פותר UI-B1.
  • statusLabel() מבטיח תווית עברית תמיד — גם לערך-מורשת שטרם הומר (נפילה עברית, אף פעם לא סלאג אנגלי).

בקאנד

  • STATUS_ORDER (cases.py) ו-models.CaseStatus מיושרים ל-10.
  • set_outcome (workflow.py) קובע outcome_set/direction_approved לפי קיום-נימוק — כמו endpoint ה-web (היה in_progress, מסלול לא-עקבי).
  • exported מוקשח אחרי export-DOCX מוצלח (forward-only; לא דורס reviewed/final) — סוגר את באג ה-agent-audit.
  • widget "תיקים שנכשלו ב-QA" עודכן ל-status='qa_review' (הסטטוס שנקבע בפועל בכשל-QA; qa_failed מעולם לא נקבע).

מיגרציה

  • scripts/backfill_case_status_trim.py — ממפה כל שורה עם סטטוס-מוסר לסטטוס-הליבה הקודם-ביותר ברצף. dry-run כברירת-מחדל / --apply. יש להריץ אחרי deploy.

Invariants

  • UI-B1 (docs/spec/ui-audit.md) — מקור-אמת יחיד לסטטוס
  • G2 — אין מסלול מקביל; איחוד רשימות-כפולות
  • GAP-42 — צמצום אוצר-הערכים (CHECK-constraint נשאר follow-up נפרד)

אימות

  • npx tsc --noEmit · py_compile על כל קבצי-הפייתון
  • post-deploy: backfill_case_status_trim.py --apply ואז SELECT status,count(*) FROM cases GROUP BY status = אפס ערכים-מוסרים.

שער-עיצוב: השינוי הוא צמצום-נתונים בקומפוננטות קיימות (פחות פריטים בתפריט/timeline/guide), לא layout/עמוד חדש. אם הדלתא הויזואלית מורגשת — הצצה ב-Claude Design לפני merge.

🤖 Generated with Claude Code

## למה תפריט הסטטוס-הידני הכיל **17 סטטוסים** (הטיפוס בפרונט אף הגדיר 19). חקירה הראתה ש-~9 מהם **דקורציה טהורה** — שלבי-ביניים שאף קוד בפייפליין לא קבע ושום לוגיקה לא הסתעפה לפיהם, מנופחים בתפריט ועם רשימות-כפולות לא-עקביות ב-6+ קבצים (15/16/17/18 ערכים שונים). בנוסף `exported` היה סטטוס-רפאים (מוחרג מ-stale אך אף פעם לא נקבע — באג `agent-audit-2026-05-17`). ## הליבה הנשמרת (10) `new` · `processing` · `documents_ready` · `outcome_set` · `direction_approved` · `qa_review` · `drafted` · `exported` · `reviewed` · `final` **הוסרו (9):** `uploading`, `in_progress`, `analyst_verified`, `research_complete`, `brainstorming`, `analysis_enriched`, `ready_for_writing`, `drafting`, `qa_failed`. ## מה משתנה **פרונט** - **SSoT חדש** `web-ui/src/lib/api/case-status.ts` — רשימה-מסודרת אחת + שלבים (intake/prep/thinking/writing/done) + תוויות + `statusLabel()`. כל הצרכנים מייבאים משם (badge, changer, timeline, guide, donut, kpi-cards, compose) במקום רשימות-כפולות. **פותר UI-B1.** - `statusLabel()` מבטיח **תווית עברית תמיד** — גם לערך-מורשת שטרם הומר (נפילה עברית, אף פעם לא סלאג אנגלי). **בקאנד** - `STATUS_ORDER` (cases.py) ו-`models.CaseStatus` מיושרים ל-10. - `set_outcome` (workflow.py) קובע `outcome_set`/`direction_approved` לפי קיום-נימוק — כמו endpoint ה-web (היה `in_progress`, מסלול לא-עקבי). - **`exported` מוקשח** אחרי export-DOCX מוצלח (forward-only; לא דורס `reviewed`/`final`) — סוגר את באג ה-agent-audit. - widget "תיקים שנכשלו ב-QA" עודכן ל-`status='qa_review'` (הסטטוס שנקבע בפועל בכשל-QA; `qa_failed` מעולם לא נקבע). **מיגרציה** - `scripts/backfill_case_status_trim.py` — ממפה כל שורה עם סטטוס-מוסר לסטטוס-הליבה הקודם-ביותר ברצף. dry-run כברירת-מחדל / `--apply`. **יש להריץ אחרי deploy.** ## Invariants - **UI-B1** (`docs/spec/ui-audit.md`) — מקור-אמת יחיד לסטטוס ✅ - **G2** — אין מסלול מקביל; איחוד רשימות-כפולות ✅ - **GAP-42** — צמצום אוצר-הערכים (CHECK-constraint נשאר follow-up נפרד) ## אימות - `npx tsc --noEmit` ✅ · `py_compile` על כל קבצי-הפייתון ✅ - post-deploy: `backfill_case_status_trim.py --apply` ואז `SELECT status,count(*) FROM cases GROUP BY status` = אפס ערכים-מוסרים. > **שער-עיצוב:** השינוי הוא צמצום-נתונים בקומפוננטות קיימות (פחות פריטים בתפריט/timeline/guide), לא layout/עמוד חדש. אם הדלתא הויזואלית מורגשת — הצצה ב-Claude Design לפני merge. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
chaim added 1 commit 2026-06-17 09:47:54 +00:00
refactor(cases): צמצום תפריט-סטטוס 17→10 + מקור-אמת יחיד (UI-B1/G2)
All checks were successful
G12 Leak-Guard / leak-guard (pull_request) Successful in 4s
Lint — undefined names / undefined-names (pull_request) Successful in 11s
ba542f9c21
תפריט הסטטוס-הידני הכיל 17 סטטוסים שמתוכם ~9 דקורציה טהורה — שלבי-ביניים
שאף קוד בפייפליין לא קבע ושום לוגיקה לא הסתעפה לפיהם, עם רשימות כפולות
לא-עקביות ב-6+ קבצים (UI-B1) ו-exported כסטטוס-רפאים (באג agent-audit).

הליבה (10): new, processing, documents_ready, outcome_set, direction_approved,
qa_review, drafted, exported, reviewed, final.

- SSoT חדש web-ui/src/lib/api/case-status.ts (רשימה/שלבים/תוויות/statusLabel);
  כל הצרכנים (badge/changer/timeline/guide/donut/kpi/compose) מייבאים משם.
- statusLabel() מבטיח תווית עברית תמיד — גם לערך-מורשת (נפילה עברית, לא סלאג).
- בקאנד: STATUS_ORDER 10, models.CaseStatus מיושר, set_outcome קובע
  outcome_set/direction_approved (במקום in_progress) כמו endpoint ה-web.
- exported מוקשח אחרי export-DOCX מוצלח (forward-only); widget "נכשל ב-QA"
  עודכן ל-qa_review (הסטטוס שנקבע בפועל בכשל-QA).
- scripts/backfill_case_status_trim.py: מיפוי שורות-מורשת לסטטוס-הליבה הקודם.

Invariants: UI-B1 (מקור-אמת יחיד)  · G2 (אין מסלול מקביל)  · GAP-42 (חלקי).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
chaim merged commit 08a0eb7c01 into main 2026-06-17 10:15:41 +00:00
chaim deleted branch worktree-status-trim 2026-06-17 10:15:41 +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#287