◳ מסמך אפיון טכני · TECH SPEC
מערכת תפעול הוליסטית — מרידיאן ייעוץ וניהול
02ארכיטקטורה כללית
המערכת תיבנה כ-monolith מודולרי עם הפרדת שכבות ברורה, הנפרסת כענן SaaS ייעודי (single-tenant ללקוח אנטרפרייז). שכבת ה-frontend היא SPA, שכבת ה-backend חושפת REST + Webhooks, ומנוע אירועים אסינכרוני מטפל באוטומציות ובסנכרון מול SAP.
| שכבה | טכנולוגיה | אחריות |
|---|---|---|
| Frontend | React 18 · TS | SPA רספונסיבי, דסקטופ + מובייל, PWA |
| API Gateway | Node · Fastify | אימות, rate-limit, ניתוב |
| Core Services | .NET 8 | לוגיקה עסקית, מודל נתונים |
| Event Bus | RabbitMQ | אוטומציות, סנכרון, התראות |
| Data | PostgreSQL 16 | אחסון ראשי + audit log |
| Auth | Microsoft Entra | SSO · SAML 2.0 · RBAC |
03מודל נתונים — ישות "משימה שוטפת"
כדוגמה לעומק האפיון, להלן הגדרת השדות המלאה של ישות מרכזית. כל ישות במערכת (15 בסך הכל) מתועדת באותה רמת פירוט.
| שדה | סוג | חובה | הערות |
|---|---|---|---|
| task_id | uuid | ✓ | מזהה ייחודי, auto |
| client_ref | uuid → client | ✓ | שיוך ללקוח |
| title | string(180) | ✓ | כותרת המשימה |
| source | enum | ✓ | manual · email · whatsapp · sap |
| status | enum | ✓ | open · in_progress · review · done |
| deadline | timestamptz | — | תאריך יעד |
| checklist | jsonb[] | — | תתי-משימות עם סטטוס |
| hours_logged | decimal(6,2) | — | נמשך מבנק השעות |
| audit_trail | jsonb[] | ✓ | לוג פעולות — כל שינוי |
04תהליך עסקי — קליטת משימה אוטומטית
המערכת מזהה משימות נכנסות מערוצים שונים וממירה אותן לישות מובנית, ללא הקלדה ידנית.
1
קליטת קלט גולמי
הודעה נכנסת ב-WhatsApp / מייל / SAP webhook.
trigger: inbound.message
2
חילוץ ישויות (NLP)
זיהוי לקוח, סוג משימה, דדליין ואיש קשר מתוך הטקסט.
service: entity-extractor
3
התאמה ושיוך
קישור ללקוח קיים לפי מזהה; אם לא נמצא — נפתחת רשומת draft לאישור.
match → client_ref
4
יצירת משימה + checklist
המערכת מייצרת צ'ק-ליסט לפי תבנית סוג המשימה ומקצה בנק שעות.
emit: task.created
5
סנכרון דו-כיווני ל-SAP
הרשומה נכתבת ל-SAP; שינוי עתידי מכל צד מתעדכן אוטומטית.
sync: sap-connector
05אינטגרציות & API
דוגמת endpoint — יצירת משימה
POST /api/v1/tasks
Authorization: Bearer <token>
{
"client_ref": "a3f1-...",
"title": "דוח רבעוני Q2",
"source": "whatsapp",
"deadline": "2026-07-15",
"sync_sap": true
}
→ 201 Created · task.created event emitted
Authorization: Bearer <token>
{
"client_ref": "a3f1-...",
"title": "דוח רבעוני Q2",
"source": "whatsapp",
"deadline": "2026-07-15",
"sync_sap": true
}
→ 201 Created · task.created event emitted
| אינטגרציה | כיוון | פרוטוקול |
|---|---|---|
| SAP S/4HANA | דו-כיווני | OData v4 + webhook |
| WhatsApp Business | נכנס | Cloud API |
| Microsoft 365 | נכנס + יוצא | Graph API |
| Microsoft Entra | אימות | SAML 2.0 / OIDC |
07אוטומציות — דרישות
- פתיחת משימות מחזוריות אוטומטית מדי שנה לפי תבנית לקוח MUST
- התראת חריגת בנק שעות כשנותרו פחות מ-15% מהמכסה MUST
- אסקלציה אוטומטית של משימה שחורגת מהדדליין למנהל המחלקה SHOULD
- סיכום שבועי אוטומטי לכל לקוח בערוץ המועדף עליו COULD
⚑ דרישת אבטחה — לוג פעולות (must)
כל שינוי במערכת, ללא יוצא מן הכלל, נרשם ל-audit_trail בלתי-ניתן-לעריכה הכולל: מזהה משתמש, חותמת זמן, ערך לפני/אחרי, וכתובת IP. הלוג נשמר 7 שנים בהתאם לרגולציה.