diff --git a/CLAUDE.md b/CLAUDE.md index 8de3461..501b89c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -126,9 +126,10 @@ │ ├── training/ ← 4 החלטות לאימון (DOCX) │ ├── exports/ ← טיוטות DOCX מיוצאות │ └── cases/{case-number}/ ← תיקי עררים (מבנה שטוח, סטטוס ב-DB) -├── web/ ← FastAPI backend (Python): 75 API endpoints +├── web/ ← FastAPI backend (Python): 75+ API endpoints │ ├── app.py ← API ראשי -│ ├── paperclip_client.py ← אינטגרציית Paperclip +│ ├── paperclip_api.py ← אינטגרציית Paperclip: `pc_request()` + `emit_case_status_webhook()` +│ ├── paperclip_client.py ← legacy client (ישן — השתמש ב-paperclip_api.py) │ └── gitea_client.py ← אינטגרציית Gitea ├── web-ui/ ← Next.js frontend (TypeScript/React): ממשק המשתמש │ └── next.config.ts ← proxy: /api/* → FastAPI :8000 @@ -197,6 +198,32 @@ - הסקריפט מסנן local skills שלא קיימים ב-CMPA (מציג אזהרה), משתמש ב-API (לא DB ישיר), יוצר revisions, idempotent. - שאלות ה-skill הרשמי של Paperclip — `paperclip` skill תחת `paperclipai/paperclip`. +### Webhook יוצא — עדכון סטטוס תיק לפלאגין + +כשסטטוס תיק משתנה דרך `PUT /api/cases/{case_number}`, הבקאנד שולח webhook אסינכרוני לפלאגין: + +``` +PUT /api/cases/{case_number} → emit_case_status_webhook() [BackgroundTask] + → POST /api/plugins/marcusgroup.legal-ai/webhooks/case-status + → plugin-legal-ai/onWebhook() + → comment בעברית על issue + CEO wakeup (כשסטטוס = qa_failed) +``` + +- הקוד ב-`web/paperclip_api.py` (`emit_case_status_webhook`), fire-and-forget, timeout 5s +- הפלאגין שומר idempotency key ב-state עם TTL 5 דקות למניעת spam על retry +- `GET /api/cases/stale?days=N` — תיקים שלא עודכנו N ימים; מוחרגים: `new`, `final`, `exported` +- `GET /api/chair-feedback/weekly-summary` — סיכום פידבק YU"R לשבוע האחרון + +### Scheduled Jobs (plugin-legal-ai) + +| Job | לוח זמנים | מה עושה | +|-----|-----------|---------| +| `stale-case-reminder` | יומי 08:00 | שולח comment אזהרה על תיקים תקועים >3 ימים | +| `weekly-feedback-analysis` | ראשון 19:00 | מעיר CEO לניתוח פידבק YU"R ועדכון `docs/legal-decision-lessons.md` | +| `sync-case-status` | כל 30 דק' | מסנכרן סטטוסי תיקים בין legal-ai ל-Paperclip | + +CEO שמתעורר מ-`weekly-feedback-job` כותב לקובץ בלבד — **אין לו issueId, אל תנסה לפרסם comment או לסגור issue**. + ### External adapters — `deepseek_local` - מיקום ה-package: [adapters/deepseek-paperclip-adapter/](adapters/deepseek-paperclip-adapter/) (לא ב-`node_modules`). - רישום ב-Paperclip: רשומה ב-`~/.paperclip/adapter-plugins.json` (נטען אוטומטית ב-startup דרך `buildExternalAdapters`). אין צורך בעריכת `node_modules`.