🗺️

אנו בניך

מפת דרכים — 5 ספרינטים מלאים
פלטפורמת קהילה לשכולות | FastAPI + Angular 22 | פרקטיקום סניף
📅 10 שבועות סה"כ 🏃 5 ספרינטים × 2 שבועות 👩‍💻 2 ג'וניוריות 🎯 End-to-End בכל ספרינט 🚀 MVP חי מ-Sprint 2
🎯 המסע המלא Sprint 1: הרשמה + DB מקומית → Sprint 2: ענן + אישור Admin → Sprint 3: פורום + דיווח → Sprint 4: ייעוץ + מודרציה → Sprint 5: הודעות פרטיות + ליטוש מלא

📋 תוכן עניינים

  1. ציר הזמן הכולל — 5 ספרינטים
  2. תלויות בין ספרינטים
  3. מפת קומפוננטות משותפות
  4. מכונת סטטוסים — User Lifecycle
  5. RBAC — מי מקבל גישה מתי
  6. Sprint 1 — Auth + DB Foundation
  7. Sprint 2 — Admin Approval + Cloud
  8. Sprint 3 — Forum Module
  9. Sprint 4 — Advisory + Moderation
  10. Sprint 5 — Messages + Polish
  11. כללי עבודה
  12. Definition of Done — כולל
1

ציר הזמן הכולל — 5 ספרינטים

שבועות 1–2
1
Auth + DB
Foundation
🔐 הרשמה + כניסה
שבועות 3–4
2
Admin Approval
+ Cloud Deploy
☁️ MVP חי בענן
שבועות 5–6
3
Forum Module
+ דיווח 3 שלבי
💬 תוכן מסונן
שבועות 7–8
4
Advisory +
Moderation
⚖️ RBAC מלא
שבועות 9–10
5
Messages +
Audit + Polish
✅ פרויקט מוגמר
ספרינט מטרת הספרינט מה ה-MVP בסוף תלוי ב
Sprint 1 הרשמה, OTP, כניסה — מקצה לקצה מקומית משתמשת נרשמת, מקבלת OTP, נכנסת לאפליקציה
Sprint 2 מנהל מאשר הרשמות + המערכת עולה לענן URL ציבורי + Admin Dashboard + CI/CD Sprint 1 מושלם
Sprint 3 פיצ'ר הליבה: פורום עם סינון קבוצה/מגזר + דיווח משתמשים כותבים וקוראים פוסטים בקבוצה שלהם Sprint 1 + 2
Sprint 4 ייעוץ מקצועי + מבקרים מטפלים בדיווחים RBAC מלא: User / Admin / Moderator / Professional Sprint 1–3
Sprint 5 הודעות פרטיות + Audit Log + ליטוש RTL מלא פרויקט מוגמר ומוכן להגשה Sprint 1–4
2

תלויות בין ספרינטים — מה מאפשר מה

⚠️ כל ספרינט בונה על הקודם. ספרינט N לא יכול להתחיל לפני שספרינט N-1 נסגר עם DoD מלא — אחרת בונים על יסודות שבורים.
Sprint 1
Users, Auth, DB, Shared UI
Sprint 2
Admin + Cloud + CI/CD
Sprint 3
Forum + Report
Sprint 4
Advisory + Moderation
Sprint 5
Messages + Polish

מה עובר בין ספרינטים — שימוש חוזר

מה עוברנבנה בבשימוש בהערה
loading-spinner + error-display S1 S2 S3 S4 S5 כל component חדש חייב להשתמש בהן
confirm-dialog S1 S2 S3 S4 S5 מחיקה, השעיה, ביטול חשבון
file-upload S1 S3 צירוף קובץ לפוסט בפורום
report-button + modal S3 S4 S5 מקבל contentType + contentId — עובד בכל מקום
user-alias.pipe S4 S4 בלבד כינוי שואל: "אלמנה – ספרדי"
Alembic migrations + DB schema S1 כל ספרינט כל ספרינט מוסיף migrations על הבסיס
JWT Auth + Guards + Interceptor S1 כל ספרינט כל route מוגן מהרגע שנוצר
Docker + CI/CD S2 S3 S4 S5 כל deploy לאחר מכן עובר CI
Forum + Report logic S3 S4 המבקר בספרינט 4 מטפל בדיווחי ספרינט 3
3

מפת קומפוננטות משותפות

🚨 חוק ברזל: קומפוננטות ב-shared/components/ נבנות פעם אחת ומשמשות בכל הספרינטים. לפני שכותבות spinner / dialog / כפתור — בדקו אם כבר קיים ב-shared/.
🔄 loading-spinner
נבנה Sprint 1
עיגול סיבובי + הודעת טעינה. inputs: size, message
בשימוש: כל ספרינט — כל component חדש
⚠️ error-display
נבנה Sprint 1
קופסת שגיאה אדומה. input: message
בשימוש: כל ספרינט — כל טופס / API call
❓ confirm-dialog
נבנה Sprint 1
overlay "האם אתה בטוחה?". outputs: confirmed, cancelled
בשימוש: S2 (השעיה), S3 (מחיקת פוסט), S4 (השעיה), S5 (מחיקת חשבון)
📎 file-upload
נבנה Sprint 1
upload + preview + ולידציה גודל/סוג. inputs: acceptedTypes, maxSizeMB
בשימוש: S1 (הרשמה), S3 (קובץ לפוסט)
🚩 report-button
נבנה Sprint 3
כפתור דיווח + modal בחירת סיבה. inputs: contentType, contentId
בשימוש: S3 (פורום), S4 (שאלות מקצועיות), S5 (הודעות)
🏷️ user-alias pipe
נבנה Sprint 4
ממיר שם אמיתי לכינוי: "אלמנה – ספרדי"
בשימוש: S4 בלבד (ייעוץ מקצועי)
💡 בדיקה לפני כתיבת קומפוננטה חדשה: האם יש משהו דומה ב-shared/components/? אם כן — הרחיבו אותה, אל תכתבו חדשה. אם לא — כתבו ב-shared/ מההתחלה אם היא תשמש יותר מספרינט אחד.
4

מכונת סטטוסים — User Lifecycle

כל משתמשת עוברת את הסטטוסים האלה. הבינו את הזרימה — זה המנגנון המרכזי שמחבר Sprint 1, 2, ו-4.

PENDING_OTP
נרשמה, ממתינה לאימות מייל
[OTP אומת] — Sprint 1
PENDING_APPROVAL
ממתינה לאישור שני מנהלים
[מנהל א' אישר] — Sprint 2
PARTIAL_APPROVED
ממתינה למנהל ב'
[מנהל ב' אישר]
ACTIVE ✓
יכולה להשתמש באפליקציה
[מנהל דחה] — Sprint 2
REJECTED
+ מייל עם סיבה + 30 יום לערעור
[מנהל ביקש מידע] — Sprint 2
נשארת PENDING
+ מייל למשתמשת
מ-ACTIVE: [השעיה ידנית / אוטומטית] — Sprint 4
SUSPENDED
זמנית, עם תאריך סיום
CANCELLED
מחיקת נתונים (GDPR) — Sprint 5
סטטוסמי מטפלספרינטמה קורה
PENDING_OTPהמשתמשת עצמהS1מאמתת OTP במייל
PENDING_APPROVALשני מנהליםS2אישור כפול + SLA 72 שעות
PARTIAL_APPROVEDמנהל שניS2מנהל ראשון אישר, ממתין לשני
ACTIVES2גישה מלאה לפי תפקיד
REJECTEDהמשתמשתS2ערעור תוך 30 יום
SUSPENDEDמנהל / מבקר / אוטומטיS4זמנית — חוזרת ל-ACTIVE אחרי התקופה
CANCELLEDהמשתמשת / מנהלS5מחיקת פרטים + anonymize פוסטים (GDPR)
5

RBAC — מי מקבל גישה מתי

ארבעה תפקידים, חמישה ספרינטים. הטבלה מראה מה כל תפקיד יכול לעשות בכל ספרינט.

תפקיד Sprint 1 Sprint 2 Sprint 3 Sprint 4 Sprint 5
👤 User
משתמשת רגילה
הרשמה + כניסה + OTP המתנה לאישור. מייל: אושרת / נדחית / נדרש מידע קריאת פוסטים מסוננים לקבוצה/מגזר. כתיבה + עריכה + מחיקה שלה. דיווח על פוסטים שאלה מקצועית (פרטית/ציבורית). צפייה ב-Q&A feed שליחת הודעות פרטיות לאנשים מאותה קבוצה/מגזר. מחיקת חשבון
🛡️ Admin
מנהלת
אישור / דחייה / בקשת מידע / השעיה. ניהול מנהלים שניים. SLA tracking broadcast לכל הקהילה. גישה לכל ההודעות ללא הגבלת קבוצה/מגזר הוספת / עריכת / הסרת מבקרים ואנשי מקצוע Audit Log מלא. ייצוא נתונים CSV
🔍 Moderator
מבקרת
קבלת התראות דיווח (שלב 1+2). הסתרת הודעות טיפול בדיווחים בתאים שלה. כרטיס משתמש. השעיה ידנית. זיהוי חריגות
💼 Professional
איש מקצוע
קבלת שאלות (לפי תחום / ספציפי). מענה + הבהרה. Q&A feed
💡 הסינון לפי קבוצה × מגזר הוא שכבה נוספת מעל ה-RBAC. גם User בתפקיד ACTIVE רואה רק את הפורום של הקבוצה/מגזר שלה (אלמנה-חסידית רואה רק פוסטים לאלמנות-חסידיות או לכלל האלמנות או לכולם).
1

Sprint 1 — Auth + DB Foundation

1

הרשמה + כניסה — מקצה לקצה

📅 שבועות 1–2  |  14 משימות (FAB-32 עד FAB-45)
🎯 בסוף: משתמשת נרשמת, מקבלת OTP, מאמתת, ונכנסת. Guard חוסם דפים מוגנים.
🚨 שני BLOCKERs ביום 1 — במקביל: FAB-32 (Alembic Init — ללא זה אין DB), FAB-37 (Shared UI — ללא זה אין components).
🔧 Backend (FAB-32 → FAB-36)
  • FAB-32: Alembic init + migration ראשונה (BLOCKER)
  • FAB-33: auth_service — register / verify_otp / resend_otp
  • FAB-34: auth_service — login / refresh_token
  • FAB-35: Wire auth endpoints (מחבר service ל-router)
  • FAB-36: Email service — OTP אמיתי ב-Mailtrap
🖥️ Frontend (FAB-37 → FAB-45)
  • FAB-37: Shared UI — error-display + loading-spinner (BLOCKER)
  • FAB-38: confirm-dialog (shared)
  • FAB-39: file-upload (shared)
  • FAB-40: auth.service.ts — 5 methods HTTP (BLOCKER)
  • FAB-41: Guard bug fix + interceptor 401 auto-refresh
  • FAB-42: Login component
  • FAB-43: Register steps 1–3 + OTP screen (L — הכי גדול)
  • FAB-44: Home + Header
  • FAB-45: Register step 4 (BACKLOG — אם יש זמן)

✅ Definition of Done

  • alembic upgrade head רץ ללא שגיאות, כל הטבלאות קיימות
  • זרימה שלמה ב-Swagger: register → verify-otp → login → GET /users/me
  • OTP מגיע ל-inbox ב-Mailtrap
  • כניסה ל-route מוגן ללא token → redirect ל-/login
  • שלב 3 הרשמה — בחירת 3 קבצים עם preview
  • כל 4 ה-shared components עובדים: spinner, error-display, confirm-dialog, file-upload
  • ראו SPRINT1.html לפירוט מלא של כל 14 המשימות
2

Sprint 2 — Admin Approval + Cloud Deploy

2

MVP חי בענן + מנהל מאשר הרשמות

📅 שבועות 3–4
🎯 בסוף: URL ציבורי, CI/CD ירוק, מנהל מאשר / דוחה הרשמות, SLA tracking
זה ה-MVP הראשון שניתן להראות ללקוח. לפני הספרינט: בחרו ספק ענן. ה-CI חובה. ה-CD — placeholder עם האפשרות להחליף ל-provider שיבחר.
⚙️ DevOps / Infra
  • Dockerfile לbackend (Python + uvicorn)
  • Dockerfile לfrontend (nginx + Angular build)
  • עדכון docker-compose.yml לPostgreSQL
  • GitHub Actions CI — lint + tests על כל PR
  • GitHub Actions CD — placeholder לdeploy
  • .env.example מעודכן עם כל משתני הייצור
  • alembic upgrade head על DB הענן
🛡️ Backend — אישור הרשמה
  • GET /admin/pending-registrations — רשימת ממתינות
  • GET /admin/registrations/{id} — פרטים מלאים + מסמכים
  • POST /admin/registrations/{id}/approve — אישור (dual: PARTIAL → ACTIVE)
  • POST /admin/registrations/{id}/reject — דחייה + מייל + 30 יום ערעור
  • POST /admin/registrations/{id}/request-info
  • SLA: תזכורת מנהל שני אחרי 72 שעות
  • SLA escalation: התראה לבכיר אחרי 7 ימים
  • POST /admin/users/{id}/suspend + cancel
  • POST /appeals — ערעור תוך 30 יום
  • AuditLog לכל פעולת Admin

Frontend

  • admin-dashboard.component — דף ניהול ראשי
  • pending-registrations.component — טבלת ממתינות + status badge
  • מודאל פרטי בקשה — מסמכים + כפתורי אישור/דחייה/מידע נוסף
  • "דף המתנה" למשתמשת ממתינה לאישור — מציג סטטוס נוכחי
  • environments/ — הפרדת URL לdev vs prod
  • כל component משתמש ב-loading-spinner + error-display מ-Sprint 1

מכונת הסטטוסים בספרינט זה

💡 PENDING_APPROVAL → [מנהל א'] → PARTIAL_APPROVED → [מנהל ב'] → ACTIVE
במקביל: [מנהל דחה] → REJECTED | [בקשת מידע] → נשאר PENDING עם מייל

✅ Definition of Done

  • https://[your-domain]/api/docs נגיש בענן
  • PostgreSQL בייצור — alembic upgrade head עובד
  • CI עובר בירוק על כל PR
  • מנהל מאשר הרשמה → משתמשת מקבלת מייל ויכולה להתחבר
  • מנהל דוחה → משתמשת מקבלת מייל עם סיבה + הוראות ערעור
  • 72 שעות ללא פעולה → מנהל שני מקבל תזכורת מייל
  • POST /admin/registrations/{id}/request-info עובד
3

Sprint 3 — Forum Module

3

פיצ'ר הליבה — פורום + סינון + דיווח 3 שלבי

📅 שבועות 5–6
🎯 בסוף: משתמשים פרסמים וקוראים הודעות. סינון קבוצה/מגזר אוטומטי. דיווח 3 שלבי.
♻️ שימוש חוזר ב-Sprint 1: file-upload.component — צירוף קובץ לפוסט. confirm-dialog.component — מחיקת פוסט. בנינו אותן כבר. לא כותבים שוב.
🔧 Backend
  • GET /forum — הודעות עם WHERE אוטומטי לפי קבוצה+מגזר
  • POST /forum — יצירה עם בחירת הפצה + קובץ מצורף
  • GET /forum/{id} — פוסט בודד + ולידציה הרשאה
  • PATCH /forum/{id} — עריכה (יוצר בלבד)
  • DELETE /forum/{id} — מחיקה (יוצר / מנהל / מבקר)
  • Pagination: page + page_size
  • POST /forum/broadcast — Admin בלבד, לכל המשתמשים
  • POST /reports — דיווח על פוסט
  • לוגיקת דיווח 3 שלבי (ראו מטה)
  • AuditLog: מחיקה, עריכה, broadcast
🖥️ Frontend
  • forum.service.ts — getPosts, createPost, getPost, updatePost, deletePost
  • report.service.ts — createReport
  • forum-list.component — רשימה + pagination + סינון
  • forum-post.component — פוסט מלא + קובץ מצורף
  • new-post.component — טופס יצירה + file-upload + בורר הפצה
  • edit-post.component — עריכת פוסט קיים
  • report-button.component (NEW shared!) — כפתור + modal סיבה
  • ניווט לפורום ב-header + routing

לוגיקת דיווח 3 שלבי

שלבתנאימה קורה
שלב 1 דיווח ראשון התראת מייל למבקר האחראי בלבד. הפוסט נשאר גלוי.
שלב 2 דיווח שני (ממשתמש שונה) הסתרה אוטומטית של הפוסט + מייל דחיפות למבקר.
שלב 3 דיווח שלישי+ (ממשתמשים שונים) מייל חוזר למבקר ("דרינג'"). המבקר מטפל ב-Sprint 4.
💡 report-button.component — shared מהרגע שנבנה! מקבל contentType + contentId. בספרינט 4 — אותו component על שאלות מקצועיות. בספרינט 5 — אותו component על הודעות פרטיות. לא כותבים שוב.

✅ Definition of Done

  • משתמשת חסידית רואה רק הודעות לקבוצה/מגזר שלה
  • פרסום הודעה → מופיעה ברשימה מיידית
  • עריכה → updated_at מתעדכן + תוכן חדש מוצג
  • דיווח ראשון → מייל למבקר בלבד
  • דיווח שני (ממשתמש שונה) → הפוסט נעלם מהרשימה + מייל דחיפות
  • Admin רואה הכל ללא הגבלה + יכולה לשלוח broadcast
4

Sprint 4 — Professional Advisory + Moderation

4

שאלות מקצועיות + מבקרים + ניהול מבקרים

📅 שבועות 7–8
🎯 בסוף: RBAC מלא — כל 4 תפקידים פעילים. חריגות אוטומטיות. מנהל מנהל מבקרים.
♻️ שימוש חוזר: report-button.component מ-Sprint 3 — על שאלות מקצועיות. confirm-dialog.component מ-Sprint 1 — להשעיה ידנית.
💼 Backend — ייעוץ מקצועי
  • GET /professionals — קטלוג לפי קבוצה+מגזר
  • POST /queries — שאלה: לספציפי / לתחום, פרטי/ציבורי
  • GET /queries/my — שאלות המשתמשת המחוברת
  • POST /queries/{id}/answer — תשובת איש מקצוע
  • PATCH /queries/{id}/answer — עדכון תשובה
  • PATCH /queries/{id}/favorite-answer — תשובה מועדפת
  • GET /queries/feed — שאלות ציבוריות שנענו
  • כינוי שואל: "אלמנה – ספרדי" (אלא אם בחרה לחשוף)
  • מיילים: לאיש מקצוע ספציפי / לתחום / לשואל בקבלת תשובה
⚖️ Backend — מודרציה + חריגות
  • GET /moderator/reports — דיווחים ממתינים בתאי המבקר
  • GET /moderator/reports/history — היסטוריה
  • POST /moderator/reports/{id}/decide — מחיקה או ביטול
  • GET /moderator/users/{id}/card — כרטיס משתמש + סטטיסטיקות
  • POST /moderator/users/{id}/suspend — השעיה ידנית
  • חריגה 1: 5+ דיווחי-שגוי ב-30 יום → מגבלת 3 דיווחים/יום
  • חריגה 2: 3+ הפרות-מוצדקות ב-30 יום → התראה למנהל
  • חריגה 3: 2+ הפרות ב-7 ימים → השעיה אוטומטית 48 שעות
  • Admin: CRUD על מבקרים ואנשי מקצוע

Frontend

  • professional.service.ts — כל פעולות הייעוץ
  • advice-list.component — קטלוג אנשי מקצוע (שם, תחום — ללא פרטי קשר)
  • ask-question.component — פרטי/ציבורי + ספציפי/תחום + checkbox "חשוף שמי"
  • שילוב report-button.component על שאלות ציבוריות
  • qa-feed.component — שאלות+תשובות ציבוריות + תשובה מועדפת
  • moderator/reports.component — לוח מבקר: דיווחים + היסטוריה
  • moderator/user-card.component — כרטיס משתמש + כפתור השעיה
  • manage-professionals.component — ניהול קטלוג (Admin)
  • manage-moderators.component — הוסף / ערוך / הסר מבקרים (Admin)

חריגות אוטומטיות — לוגיקת ה-auto-suspend

חריגהתנאיתגובה אוטומטית
חריגה 1 5+ דיווחי-שגוי ב-30 יום התראה למבקר + מגבלת 3 דיווחים ליום למשתמשת
חריגה 2 3+ הפרות-מוצדקות ב-30 יום התראה למנהל + עיון בהשעיה (ידנית)
חריגה 3 2+ הפרות-מוצדקות ב-7 ימים השעיה אוטומטית 48 שעות + התראה למנהל

✅ Definition of Done

  • משתמשת שואלת → איש מקצוע מקבל מייל → עונה → השואלת מקבלת מייל
  • שם השואלת מוצג כ-"אלמנה – ספרדי" (לא שם אמיתי) אלא אם בחרה לחשוף
  • מבקרת רואה רק דיווחים בתאים שלה
  • 5 דיווחי-שגוי ב-30 יום → מבקר מקבל התראה
  • 2 הפרות-מוצדקות ב-7 ימים → משתמשת מושעית 48 שעות אוטומטית
  • Admin מוסיפה / עורכת / מסירה מבקרת
  • שאלות ציבוריות שנענו גלויות ב-feed לחברות הקבוצה/מגזר
5

Sprint 5 — Private Messages + Audit Log + Polish

5

הגשה מוכנה — הכל עובד, ליטוש מלא

📅 שבועות 9–10
🎯 בסוף: הפרויקט מוגמר. אין 501. RTL עקבי. Responsive. כל component עם loading+error.
♻️ שימוש חוזר: report-button.component מ-Sprint 3 — על הודעות פרטיות. confirm-dialog.component מ-Sprint 1 — מחיקת חשבון. loading-spinner + error-display — ווידוא שכל component קיים משתמש בהן.
💬 Backend — הודעות פרטיות
  • GET /users/search?name= — חיפוש בתוך קבוצה/מגזר בלבד
  • GET /messages — inbox (שיחות פעילות)
  • POST /messages — שליחה (מאמת קבוצה/מגזר זהה)
  • GET /messages/{user_id} — היסטוריית שיחה + pagination
  • מנגנון נגד מטרד: 3 דיווחים מאותו שולח → חסימה אוטומטית
🔐 Backend — Admin + מחיקה
  • GET /admin/audit-log — paginated + filter סוג/תאריך
  • GET /admin/export — ייצוא CSV
  • DELETE /users/me — מחיקה עצמית: anonymize פוסטים (GDPR)
  • השלמת audit_service — כל פעולות Admin/Moderator

Frontend

  • inbox.component — רשימת שיחות + unread count + חיפוש נמענת
  • chat.component — חלון שיחה + שליחה + report-button
  • profile.component — פרופיל אישי + מחיקת חשבון (confirm-dialog)
  • audit-log.component — טבלת לוג עם פילטרים (Admin בלבד)
  • RTL Polish — עיצוב עקבי ימין-לשמאל בכל הקומפוננטות
  • Responsive — תמיכה במובייל בכל הדפים
  • ווידוא כל component: loading-spinner + error-display

✅ Definition of Done — ספרינט 5 + סגירת פרויקט

  • הודעות פרטיות זורמות בין משתמשות מאותה קבוצה/מגזר בלבד
  • GET /users/search לא חוצה קבוצות (מחזיר רק מאותה קבוצה/מגזר)
  • מנהלת רואה Audit Log מלא עם filter
  • מנהלת מייצאת נתונים ל-CSV
  • מחיקת חשבון: פרטים נמחקים, פוסטי הפורום מאונונימות
  • כל component מציג loading-spinner + error-display מתאים
  • UI עובד תקין על מובייל
  • אין 501 Not Implemented ואין raise NotImplementedError בשום מקום
  • ng build עובר ללא שגיאות TypeScript
  • ng lint ו-ruff check . עוברים ירוק
⚙️

כללי עבודה — לכל ספרינט

אין merge ללא review של המפתחת השנייה. בלי יוצא מן הכלל. PR ממתין → תמשיכו בפיצ'ר אחר, אל תחכו בטל.

חוק ה-End-to-End

בכל ספרינט — כל פיצ'ר הוא Backend + Frontend ביחד. אין ספרינט שאחת עושה רק backend ואחרת רק frontend.

תיאומי חוזה בין Frontend ל-Backend

לפני שמתחילות כל פיצ'ר שמחבר backend ו-frontend — הגדירו יחד את ה-schema/API contract (5 דקות ביחד חוסכות שעות debugging).

חוק ה-Shared Component

לפני שכותבות קומפוננטה חדשה: בדקו אם משהו דומה קיים ב-shared/components/. אם כן — הרחיבו. אם תיבנה ביותר מספרינט אחד — מקמו ב-shared/ מהרגע הראשון.

Angular 22 — חוקים שאין לשכוח

✅ נכון❌ לא נכון (Angular ישן)
standalone: true בכל componentNgModule
input() / output() (Signals)@Input() / @Output()
@if / @for*ngIf / *ngFor
inject() בתוך הפונקציה ב-interceptorinject() ברמת המודול
loadComponent ב-app.routes.tsimport ישיר בלי lazy-loading

FastAPI — חוקים שאין לשכוח

כלללמה
Pydantic schema לכל request + responseולידציה + Swagger אוטומטי
Depends(get_current_user) על routes מוגניםRBAC ב-FastAPI
HTTPException עם status code ברורFrontend מקבל error שניתן להציג
router מחובר ב-api/router.pyendpoint שלא מחובר → 404 ולא מתגלה

Definition of Done הכולל — הפרויקט מוכן להגשה כשכל זה עובד

✅ בדקו את הצ'קליסט הזה ביחד בסוף ספרינט 5.

זרימות קריטיות — end-to-end

איכות קוד

מה כל ספרינט מסיים

ספרינטמה ה-DoD הספרינטיפיצ'ר חדש שנפתח
Sprint 1 הרשמה + OTP + כניסה + Guard + Shared UI App ניתנת לשימוש מקומית
Sprint 2 Dockerfiles + CI + Admin Dashboard + אישור כפול URL ציבורי + המשתמש הראשון האמיתי יכול להיכנס
Sprint 3 פורום מסונן + דיווח 3 שלבי הקהילה פעילה — יש מה להשתמש
Sprint 4 ייעוץ + מבקרים + auto-suspend + ניהול מבקרים כל 4 תפקידים פעילים ומלאים
Sprint 5 הודעות + Audit Log + RTL Polish + GDPR פרויקט מוגמר — מוכן להגשה
אנו בניך · מפת דרכים מלאה · 5 ספרינטים · 2026 · גרסה 1.0