This repository has been archived on 2026-07-19. You can view files and clone it. You cannot open issues or pull requests or push a commit.
chaim 89b3f5844e fix(2.9.1): extractFromDocx — drop PHPWord dependency, parse word/document.xml directly
Root cause of the Shira hallucination incident in production case 46 Friedman:
DocumentAnalyzer::extractFromDocx relied on PhpOffice\PhpWord, but on the
EspoCRM prod image the PHPWord files are present in vendor/ yet are NOT
registered in the composer PSR-4 autoload map — class_exists() silently
returned false, the method returned null, and Shira's read_document fell
back to OCR. OCR then only saw the signature image, the AI got "[signature]"
as document content and fabricated the entire CTS appeal as a knee injury.

This change rewrites extractFromDocx to use ZipArchive + a small regex
parser of word/document.xml. Independent of PHPWord, more robust on
tables/footnotes/hyperlinks (which PHPWord's element walker missed at depth
>1), and verified on prod against the same Friedman appeal: 80 paragraphs /
16633 clean chars extracted (vs 0 before).

The paired Python fix in shira-hermes (commit 7b517e1) makes the OCR
fallback also read document.xml, so even if this PHP fix regresses again,
the AI will not be fed "[signature]" as document content.

Refs Task Master #5

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-26 14:01:44 +00:00
2026-04-25 21:19:25 +00:00

SmartAssistant - עוזר חכם

גרסה: 2.8.0 | מחבר: klear | EspoCRM: >= 8.0.0

תיאור

עוזר AI מאוחד למשרד עורכי דין. מספק ממשק צ'אט צף עם שני מצבי עבודה: מצב משרד (סקירה כללית, התראות, סטטיסטיקות) ומצב תיק (סיוע מעמיק בתיק ספציפי). כולל מערכת זיכרון תיק מובנית, ביצוע פעולות באישור המשתמש, ואינטגרציה עם Stream של EspoCRM.

תלויות

  • Webhook חיצוני (n8n או דומה) לעיבוד AI
  • NetworkStorageIntegration / NextCloudIntegration (אופציונלי — לניתוח מסמכים)

התקנה

  1. התקנה דרך Admin > Extensions
  2. הגדרת Webhook: Admin > Integrations > Smart Assistant

הגדרות אינטגרציה

שדה תיאור דוגמה
webhookUrl כתובת Webhook לשירות AI https://n8n.example.com/webhook/assistant/chat
apiKey מפתח אימות (אופציונלי) sk-...
maxMessagesPerHour הגבלת קצב הודעות 30
inactivityWarningDays סף אזהרה לחוסר פעילות בתיק 14
inactivityCriticalDays סף קריטי לחוסר פעילות 30
upcomingHearingDays חלון דיונים קרובים (ימים) 7

אנטיטי: CaseMemory — זיכרון תיק

מאגר ידע מובנה לכל תיק, מחולק לקטגוריות:

קטגוריה תיאור
key_facts עובדות מפתח
strategy אסטרטגיה
decisions החלטות
contacts_notes הערות על אנשי קשר
timeline ציר זמן
documents_notes הערות על מסמכים
billing_notes הערות חיוב

מקורות: ידני (manual), עוזר AI (assistant), אוטומטי (auto — hooks)

רמות חשיבות: low, normal, high, critical

רכיבים

Backend (PHP)

רכיב קובץ תיאור
Controller Controllers/SmartAssistant.php API endpoints
שירות ראשי Services/SmartAssistantService.php תזמור צ'אט, שיחות, פעולות
בונה הקשר תיק Services/CaseContextBuilder.php אוסף נתוני תיק מלאים (אנשי קשר, משימות, מסמכים, זיכרון)
בונה הקשר משרד Services/OfficeContextBuilder.php סטטיסטיקות, התראות, עומס עבודה
מחשבון התראות Services/AlertCalculator.php זיהוי תיקים לא פעילים, משימות באיחור, דיונים קרובים
מבצע פעולות Services/ActionExecutor.php ביצוע פעולות שאושרו (משימה, פתק, דיון, שינוי סטטוס)
שירות זיכרון Services/CaseMemoryService.php CRUD לזיכרון תיק
ספק הקשר זיכרון Services/CaseMemoryContextProvider.php הזרקת זיכרון להקשר AI
מאגר שיחות Services/ConversationRepository.php שמירה ואחזור שיחות
מנתח מסמכים Services/DocumentAnalyzer.php סריקת מסמכים וסיווג

Hooks

Hook תיאור
Case/CaseFieldChangeMemory יצירת זיכרון אוטומטית בשינוי שדות תיק (סטטוס, שופט, דיון)
Meeting/HearingScheduledMemory יצירת זיכרון בקביעת דיון חדש

Frontend (JavaScript)

רכיב תיאור
floating-chat.js ממשק צ'אט צף (FAB) עם מגירת היסטוריה וזיכרון
dashlets/smart-assistant.js דשלט עם מדדים והתראות
stream/notes/smart-request.js תצוגת הודעת משתמש ב-Stream
stream/notes/smart-response.js תצוגת תשובת עוזר ב-Stream
stream/notes/smart-action.js תצוגת פעולה שבוצעה ב-Stream
case/modals/add-memory.js מודל להוספת זיכרון ידנית
site/navbar.js אינטגרציית התראות בסרגל ניווט

API Routes

נתיב Method תיאור
/SmartAssistant/action/chat POST שליחת הודעה לעוזר
/SmartAssistant/action/execute POST ביצוע פעולה שאושרה
/SmartAssistant/action/summary GET סיכום משרדי + התראות
/SmartAssistant/action/alerts GET רשימת התראות
/SmartAssistant/action/history GET היסטוריית שיחות
/SmartAssistant/action/conversations GET רשימת שיחות אחרונות
/SmartAssistant/action/conversationMessages GET הודעות שיחה ספציפית
/SmartAssistant/action/searchHistory GET חיפוש בשיחות
/SmartAssistant/action/caseMemory GET אחזור זיכרון תיק
/SmartAssistant/action/saveMemory POST שמירת זיכרון ידנית

פעולות עוזר

פעולות מיידיות (ללא אישור)

  • list_documents — רשימת מסמכים בתיק
  • save_memory — שמירת זיכרון תיק

פעולות הדורשות אישור

  • create_task — יצירת משימה
  • add_note — הוספת הערה
  • change_status — שינוי סטטוס תיק
  • create_meeting — יצירת פגישה
  • schedule_hearing — קביעת דיון
  • analyze_document — ניתוח מסמך
  • rename_document — שינוי שם מסמך

מערכת התראות

סוג סף ברירת מחדל חומרה
תיק לא פעיל 14 יום אזהרה
תיק לא פעיל 30 יום קריטי
משימה באיחור תאריך יעד עבר קריטי
דיון קרוב 7 ימים אזהרה
תיק ללא שיוך חדש ללא assignedUser אזהרה
משימה בעדיפות גבוהה 5 ימים אזהרה
S
Description
Archived from gitea.marcus1.com
Readme 2.1 MiB
Languages
PHP 76.4%
JavaScript 23.3%
Shell 0.3%