סכמת Prisma ומודלים
מערכת BT Management משתמשת ב-Prisma ORM כדי לתקשר עם מסד הנתונים MongoDB.
הסכמה מוגדרת ב-server-nest/prisma/schema.prisma וכוללת כ-68 מודלים המייצגים את כל הישויות במערכת.
מודלים תלויי-דייר (Tenant Models)
רוב המודלים מסוננים אוטומטית לפי userId באמצעות ה-Middleware של Prisma. המודלים הבאים הם תלויי-דייר:
תחום בית כנסת
- Device: מכשירים רשומים במערכת.
- DeviceConfiguration: הגדרות קונפיגורציה לכל מכשיר.
- DeviceMetrics: מדדי ביצועים (CPU, RAM, Uptime).
- DeviceMonitoring: נתוני ניטור והתראות.
- DeviceSettings: הגדרות תצוגה ופעולה.
- TfilaTime: זמני תפילה.
- GeneralMessage: הודעות כלליות המוצגות למתפללים.
- Hanzch: הנצחות לציון ימי זיכרון.
- Shior: שיעורי תורה.
- OlieLatora: עולים לתורה.
- ScreenTimer: תזמון הצגת תוכן.
- AliyaNotification: הודעות עליה לתורה.
- DailyContentPreference: העדפות תוכן יומי.
- HolidayTimes: זמני חגים.
- Synagogue: פרטי בית הכנסת.
- Notification: התראות כלליות.
- NotificationPreferences: העדפות התראות.
התראות ותקשורת
- AlertRule: כללי התראות אוטומטיים.
- NotificationHistory: היסטוריית התראות שנשלחו.
- WhatsAppMessage: הודעות WhatsApp.
- WhatsAppConfig: הגדרות חיבור WhatsApp.
- ScheduledMessage: הודעות מתוזמנות.
- IncomingMessage: הודעות נכנסות.
- AutoResponseRule: כללי תגובה אוטומטית.
- WhatsAppContactAlias: כינויים לאנשי קשר.
- EmailConfig: הגדרות דואר אלקטרוני.
- SmsConfig: הגדרות SMS.
- NotificationLog: לוג התראות.
אנליטיקה ובינה מלאכותית
- NetworkMetrics: מדדי רשת.
- MLModel: מודלי למידת מכונה.
- TrainedModel: מודלים מאומנים.
- AnomalyDetection: זיהוי חריגות.
- BehavioralAnalytics: אנליטיקה התנהגותית.
- SecurityAnalysis: ניתוח אבטחה.
- SmartMaintenance: תחזוקה חכמה.
- AdvancedReport: דוחות מתקדמים.
מערכת ותפעול
- SoftwareUpdate: עדכוני תוכנה.
- UpdateStatus: סטטוס עדכונים.
- CommandHistory: היסטוריית פקודות.
- ConfigurationBackup: גיבוי הגדרות.
- WebhookEndpoint: נקודות קצה Webhook.
- WebhookLog: לוג Webhook.
- BatchCommand: פקודות באצווה.
- BatchCommandResult: תוצאות פקודות באצווה.
- EnhancedMqttSession: הפעלות MQTT.
- UploadAsset: נכסים שהועלו.
- SystemConfiguration: הגדרות מערכת.
- SystemBackup: גיבויי מערכת.
אבטחה
- SecurityIncident: אירועי אבטחה.
- SecurityEvent: אירועי אבטחה (Event).
- SuspiciousIp: כתובות IP חשודות.
- SystemIssue: בעיות מערכת.
- SystemMetricSample: דגימות מדדים.
- SystemServiceStatus: סטטוס שירותי מערכת.
- AuditLog: לוג ביקורת.
אזהרה
לעולם אין לסנן ידנית לפי userId בשירותים. ה-Middleware של Prisma עושה זאת אוטומטית עבור כל המודלים המפורטים לעיל.
מודלים גלובליים (Global Models)
מודלים אלה אינם מסוננים לפי דייר ונגישים לכל המשתמשים (או רק למנהלים):
- User: חשבונות משתמשים.
- Role: תפקידים והרשאות.
- LoginHistory: היסטוריית התחברות.
- Session: הפעלות משתמשים.
- SystemLog: לוגים כלליים של המערכת.
שימוש בקוד
שאילתה רגילה (מסוננת אוטומטית)
// בשירות רגיל
const devices = await this.prisma.device.findMany({
where: { status: 'online' },
});
// ה-Middleware מוסיף אוטומטית: { userId: currentUserId }
עקיפת הסינון (Admin בלבד)
// מנהלים יכולים לראות את כל המכשירים
// רק אם הם לא במצב impersonation
const allDevices = await this.prisma.device.findMany();
// אם המשתמש הוא מנהל, ה-Middleware לא מוסיף סינון userId
שאילתה לפי מספר משתמשים
// במקרה מיוחד שמנהל רוצה לראות מכשירים של משתמשים ספציפיים
const devices = await this.prisma.device.findMany({
where: {
userId: { in: ['user1', 'user2', 'user3'] },
},
});
יצירת Migrations
אמנם MongoDB אינה דורשת migrations מסורתיות (כמו SQL), אך יש לסנכרן את הסכמה:
cd server-nest
# לאחר שינוי ב-schema.prisma:
npx prisma generate # מייצר את ה-Client
npx prisma db push # דוחף שינויים ל-MongoDB
Prisma Studio
ניתן לצפות ולערוך את הנתונים במסד באופן גרפי:
npx prisma studio
יפתח דפדפן בכתובת: http://localhost:5555