🛡️ Security & Diagnostics Center — מרכז אבחון מובנה לאפליקציות Base44
🛡️ Security & Diagnostics Center — מרכז אבחון מובנה לאפליקציות Base44, שמבצע בדיקות אמיתיות מול ה-DB וההגדרות של המערכת ומחזיר ממצאים מובנים (לא טקסט גנרי מ-AI). מה זה כולל: 4 כפתורי סריקה ב-Settings (Admin בלבד): סריקת אבטחה – הרשאות משתמשים, ניסיונות 2FA כושלים, Rate Limit, משתני סביבה, מספר admins סריקת ביצועים – גודל טבלאות (SecurityLog, UserProgress, Notification וכו'), רשומות ישנות, התראות לא נקראו, טיוטות סריקה מקיפה – אבטחה + ביצועים + יציבות (OTPs פגי תוקף, הזמנות פגות, AI Jobs שנכשלו) בדיקה מהירה – ממצאי אבטחה קריטיים בלבד כל ממצא כולל: severity (critical/high/medium/low), קטגוריה, כותרת, תיאור, מיקום, הצעת תיקון ומספר רשומות מושפעות קונסולת לוגים בזמן אמת + תצוגת ממצאים ויזואלית עם דירוג מוכנות (🔴/⚠️/✅) הכל ב-RTL ובעברית, עם עיצוב מודרני (shadcn/ui + Tailwind) למה זה שווה: אפס AI credits — הכל לוגיקה דטרמיניסטית ממצאים אמיתיים מהמסד שלך, לא ניחושים מאפשר Pre-Launch Audit לפני העלאה לפרודקשן
אני רוצה להוסיף לאפליקציה שלי "Security & Diagnostics Center" - מרכז אבחון אדמיני שמבצע בדיקות אמיתיות מול ה-DB וההגדרות (לא AI גנרי).
צור את הדברים הבאים:
1. **Backend function: runAuditScan** שמקבל { auditType: 'security' | 'performance' | 'full' } ומבצע:
- security: בודק User entity (משתמשים ללא role), SecurityLog (ניסיונות 2FA כושלים ב-24 שעות, Rate Limit blocks), משתני סביבה קריטיים, ומספר admins.
- performance: סופר רשומות בטבלאות גדולות (SecurityLog, UserProgress, Notification, וכל entity רלוונטי באפליקציה שלי) עם ספים של warn/critical, מאתר לוגים ישנים מ-90 יום, התראות לא נקראו (100+ למשתמש), וטיוטות ישנות מ-180 יום.
- full: מריץ את שני הקודמים + יציבות (UserOtp פגי תוקף, Invite פגי תוקף עדיין פעילים, AI Jobs שנכשלו ב-7 ימים אחרונים).
הפונקציה חייבת להיות admin-only (בדיקת user.role === 'admin' עם 403 אם לא), ולהחזיר:
{ success, auditType, audit_date, elapsed_ms, summary: {critical, high, medium, low, total}, readiness: '🔴/⚠️/✅...', findings: [{severity, category, title, description, location, fix, affected_count}], logs: [] }
כל בדיקה עטופה ב-try/catch כך שכישלון של בדיקה אחת לא מפיל את כל הסריקה — רק רושם warning ב-logs.
2. **Backend function: runSecurityAudit** - גרסה מהירה שמריצה רק את בדיקות האבטחה הקריטיות ומחזירה אותו פורמט.
3. **Component: SecurityDiagnosticsCard** ב-components/settings/sections/ עם:
- 4 כפתורים בגריד (orange/blue/purple/green) לכל סוג סריקה, עם אייקונים מ-lucide-react (ShieldCheck, Gauge, Search, ScanLine).
- לכל כפתור: label קצר (2 מילים) + description קצר של תיאור הסריקה.
- קונסולת לוגים שחורה בסגנון terminal עם timestamps שמתעדכנת בזמן ריצה.
- שימוש ב-base44.functions.invoke לקריאה לפונקציות.
- מצב loading עם Loader2 spinning בכפתור הפעיל, וכל הכפתורים disabled בזמן סריקה.
4. **Component: SecurityFindingsList** שמציג:
- כותרת עם elapsed_ms ו-readiness status.
- 4 קופסאות סטטיסטיקה צבעוניות (critical/high/medium/low) עם count.
- רשימת findings עם אייקון severity, badge קטגוריה, description, location ב-mono font, ו-"💡 תיקון מוצע" בקופסה ירוקה.
- empty state "✅ לא נמצאו ממצאים" כשהמערכת תקינה.
5. הוסף את SecurityDiagnosticsCard לעמוד ההגדרות (Settings) באזור הניתן לראייה רק ל-admins.
דרישות:
- RTL בעברית
- shadcn/ui + Tailwind + lucide-react בלבד
- בלי תלויות חיצוניות
- בלי AI - הכל בדיקות דטרמיניסטיות מול ה-DB
- הוסף את הbackend functions החסרים גם ל-runSecurityAudit לפני שאתה כותב את ה-component