בידוד נתונים רב-דייריים
כל דייר מקבל מפתח-מחיצה ClientId קפדני המיושם בכל שכבת אחסון. טבלאות SQL Server (SLAtech.Db) ואוספי Qdrant (vector store) מקושרים ל-ClientId עם מסנני שורה ואוסף הנאכפים בשכבת השאילתה. תבנית ה-repository דוחה כל שאילתה ללא ClientId בזמן-הידור דרך כלל מנתח-סטטי (SLATECH001). פרויקטי Sentry, יומני ביקורת ומיכלי blob כולם שומרים על אותה משמעת מחיצה. נתונים בין-דיירים הם בלתי-אפשרות מבנית, לא בדיקת זמן-ריצה.
צינור אחזור RAG
קליטה → chunk → embed → upsert: מסמכים (PDF, DOCX, HTML שנגרד, זוגות FAQ) מחולקים ל-chunks של 200-500 טוקנים עם חפיפה של 50 טוקנים. Chunks מוטמעים דרך OpenAI text-embedding-3-small (1536 ממדים) ונכנסים ל-Qdrant עם metadata (ClientId, sourceUrl, chunkIndex). נתיב שאילתה: שאלה מוטמעת, חיפוש דמיון-קוסינוס top-K מסונן לפי ClientId, ScoreThreshold ברירת-מחדל 0.5. Chunks שאוחזרו עוברים ל-LLM עם metadata ציטוט מובנה כדי שהתשובה תישא Snippet לכל מקור. פיוס רץ לילית כשירות BackgroundService.
הפשטת ספק LLM
כל קריאות LLM עוברות דרך ILlmProvider — הפשטה דקה המיושמת על-ידי OpenAiQueryService, AnthropicQueryService (מסלול Enterprise), CohereRerankerService (re-ranking אופציונלי). בחירת ספק לכל-דייר דרך תצורה; failover מנותב אוטומטית בהגבלת-קצב או 5xx. שימוש בטוקנים ועלות מדווחים לכל-קריאה ב-payload התגובה כדי שהדיירים יוכלו לעקוב אחר הוצאות בזמן-אמת. החלפת ספק אינה דורשת הגירה בצד-הלקוח — ההפשטה מבודדת קוד יישום.
תבנית מתאם ערוצים
כל ערוץ (web widget, Telegram, WhatsApp Business, Instagram DM, אימייל) מיישם IChannelAdapter — חוזה משותף המתרגם מעטפות הודעות מקומיות לערוץ למודל Conversation דומיין מאוחד. תבנית המתאם מאפשרת לצינור השאילתה הליבה לרוץ בלי-תלות-בערוץ; עיצוב לכל-ערוץ (מקלדות מוטמעות של Telegram, הודעות תבנית של WhatsApp) שוכן בתוך המתאם. הוספת ערוץ אינה נוגעת בצינור השאילתה.
צינור תגובת streaming
Streaming מבוסס-SSE דרך נקודת קצה /v1/query/ask-stream. אירוע ראשון הוא sources-early — פולט metadata ציטוט לפני שמתחיל streaming של LLM (כדי שווידג'טים יציגו hover-cards "לפי" בזמן שהתשובה עדיין זורמת). אירועים עוקבים הם chunks של טוקנים; אירוע סופי הוא done עם metadata מצטבר (סה"כ טוקנים, סה"כ עלות, מזהה יומן שיחה). חותך אחורית-נתפסת ב-~70% לעומת תגובה סינכרונית.
זרימת נתוני קבלן-משנה
שאילתת לקוח → Kestrel ingress (Azure West Europe) → SLAtech.Api → קריאת הטמעה ל-OpenAI (ארה"ב, SCC 2021/914) → חיפוש וקטור ב-Qdrant (Azure West Europe) → קריאת LLM ל-OpenAI או Anthropic עם chunks שאוחזרו → תגובה ל-Kestrel → SSE חזרה לווידג'ט. Sentry מקבל מעטפות שגיאה מנוקות (PII מנוקה לפני פליטה). SendGrid מטפל באימייל טרנזקציוני (ארה"ב, SCC 2021/914). Cloudflare WAF ו-CDN בקצה גלובלי. רשימת קבלן-משנה מלאה ב-/he/sub-processors/.
טופולוגיית פריסה
Azure App Service (Linux) עבור SLAtech.Api, SLAtech.Web, SLAtech.AdminUI, SLAtech.Business + 8 רכזות אנכיות. Azure SQL Database לאחסון יחסי עם גיבוי יומי ושחזור לנקודת-זמן של 24 שעות. Qdrant על Azure VM עם אוספים לכל-דייר. Azure Cache for Redis ל-session + token bucket להגבלת-קצב. Azure Storage ל-blobs של מסמכים. Cloudflare בחזית ל-WAF / הקלת DDoS / CDN. זרימות עבודה של GitHub Actions מפעילות פריסות ייצור ב-push לסניף production.
עמדת התאוששות מאסון
RTO 4 שעות, RPO שעה. גיבויי Azure SQL יומיים עם שמירה של 35 ימים; שחזור לנקודת-זמן בתוך 24 השעות האחרונות. Qdrant מצולם לילית ל-Azure Storage. Failover רב-אזורי בתוך EU (West Europe ראשי, North Europe failover). ספר-הפעלה של DR נבדק רבעונית עם כשל אזור מדומה. דף סטטוס ב-status.slatech.ai מציף זמינות בזמן-אמת + יומן אירועים של 90 ימים אחרונים.
צינור הערכה
חבילת הערכה לכל-אנך רצה לילית מול סט-בדיקה אטום של 200 שאלות (מוחזק מחוץ ללולאות אימון/כיוונון). LLM-as-Judge מנקד עובדתיות, הזיה וביטחון לכל תגובה. ציונים מצטברים לכל-אנך מצופים ללוח-תוצאות הציבורי ב-/he/eval/. רגרסיות ציון ≥3 נקודות מפעילות התראת טריאז' ידני. חבילת ההערכה עצמה היא קוד-פתוח וניתנת להורדה כתבנית שחזור — קונים יכולים להריץ אותה מול הדייר SLAtech שלהם.
מחסנית תצפיתיות
Sentry לכל שירות backend עם ניקוי PII לפני פליטה. ניטור עסקאות סינתטיות בתדר 5-דקות המכסה 12 מסעי-משתמש קריטיים. טווחים מאופיינים-OpenTelemetry לתזמוני צינור שאילתה. יומן ביקורת לכל-דייר ניתן ליצוא במסלול Enterprise. לוח זמינות בזמן-אמת ב-status.slatech.ai מציף 12 קבוצות מטריקה כולל p95 חביון שאילתה, recall אחזור ושיעורי שגיאה ספציפיים-לערוץ.