דלג לתוכן הראשי

סכמת 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