Chaim
06281996ca
feat(digests): Phase 2 — API endpoints + /digests UI (X12)
משטחי-משתמש לקורפוס היומונים: endpoints ב-FastAPI + דף UI נפרד /digests
(לדפדוף, חיפוש, העלאה, וקישור לפסק המקורי). היומון נשאר מקור-משני המצביע
על הפסק — אינו מצוטט בהחלטה (INV-DIG1) ואינו מחלץ הלכות (INV-DIG2).
Backend (container-safe + local split):
- digest_library: פוצל ל-create_pending_digest (CONTAINER-SAFE: stage+
extract_text+create row 'pending', בלי LLM) ↔ enrich_digest/
process_pending_digests (local: LLM+embed+autolink). ingest_digest מאחד.
- db.list_pending_digests; MCP digest_process_pending (tool+server) — חלופה
ל-batch script לריקון התור.
- web/app.py: 10 endpoints /api/digests/* (upload/list/search/queue-pending/
get/patch/delete/link/relink/unlink). upload=INSERT-only pending (ה-LLM רץ
מקומית — claude_session local-only). כולם מחזירים dict בדפוס precedent.
Frontend (Next 16, ללא api:types — hooks עם טיפוסים hand-written כמו
precedent-library.ts):
- lib/api/digests.ts — hooks (useDigests/useDigestSearch/useDigestPending/
useUploadDigest/useLink/Relink/Unlink/Delete/Update).
- דף /digests נפרד (לא כרטיסייה ב-/precedents — לשמור גבול סמכותי/משני,
INV-DIG1): טאבים יומונים/חיפוש + DigestCard (badge קישור-לפסק) +
DigestUploadDialog + pending badge. nav + header-context.
אומת: backend round-trip מלא (create_pending→list_pending→process_pending→
search→restore); web-ui מתקמפל (webpack/tsc נקי, route /digests נוצר).
הערה: build דיפולטי (turbopack) נכשל ב-worktree עקב symlink ל-node_modules —
ב-CI/Docker (node_modules אמיתי) עובד; אומת עם --webpack.
Invariants: מקיים INV-DIG1/2 (upload לא מחלץ הלכות, UI מציג "מצביע לא
מצוטט"), INV-DIG3 (link/relink/queue). G4 (אין בליעה — שגיאות→toast/HTTP),
G2 (מסלול נפרד, לא מקביל). X6 (חוזה UI↔API — endpoints בדפוס precedent;
hooks hand-written כמו שאר ה-domain modules).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-07 18:11:05 +00:00
..
2026-03-23 12:33:07 +00:00
2026-04-16 18:49:10 +00:00
2026-05-26 11:02:55 +00:00
2026-05-26 08:34:40 +00:00
2026-05-30 21:29:26 +00:00
2026-06-06 20:54:31 +00:00
2026-04-30 14:21:35 +00:00
2026-06-03 08:10:10 +00:00
2026-05-26 10:37:53 +00:00
2026-04-30 14:21:35 +00:00
2026-06-06 20:08:54 +00:00
2026-06-01 04:35:37 +00:00
2026-06-07 18:11:05 +00:00
2026-06-07 18:11:05 +00:00
2026-06-07 17:49:00 +00:00
2026-06-06 19:23:29 +00:00
2026-04-26 06:57:41 +00:00
2026-04-16 18:49:30 +00:00
2026-05-03 20:23:14 +00:00
2026-06-06 19:45:43 +00:00
2026-04-30 18:27:36 +00:00
2026-06-06 19:55:45 +00:00
2026-06-06 19:55:45 +00:00
2026-05-26 08:08:02 +00:00
2026-06-06 19:45:43 +00:00
2026-05-30 19:26:53 +00:00
2026-06-06 17:20:57 +00:00
2026-06-06 19:23:29 +00:00
2026-04-09 16:45:49 +00:00
2026-06-06 20:00:52 +00:00
2026-05-26 09:17:33 +00:00
2026-06-06 16:21:41 +00:00
2026-05-30 20:47:51 +00:00
2026-05-03 19:49:41 +00:00
2026-04-11 11:04:58 +00:00
2026-06-06 20:54:31 +00:00
2026-04-03 10:50:56 +00:00
2026-05-03 18:43:41 +00:00
2026-05-17 12:59:13 +00:00
2026-06-06 19:25:13 +00:00
2026-06-06 21:01:42 +00:00
2026-05-27 10:06:22 +00:00
2026-05-26 11:26:52 +00:00