| ספרינט | מטרת הספרינט | מה ה-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 |
| מה עובר | נבנה ב | בשימוש ב | הערה |
|---|---|---|---|
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 |
כל משתמשת עוברת את הסטטוסים האלה. הבינו את הזרימה — זה המנגנון המרכזי שמחבר Sprint 1, 2, ו-4.
| סטטוס | מי מטפל | ספרינט | מה קורה |
|---|---|---|---|
PENDING_OTP | המשתמשת עצמה | S1 | מאמתת OTP במייל |
PENDING_APPROVAL | שני מנהלים | S2 | אישור כפול + SLA 72 שעות |
PARTIAL_APPROVED | מנהל שני | S2 | מנהל ראשון אישר, ממתין לשני |
ACTIVE | — | S2 | גישה מלאה לפי תפקיד |
REJECTED | המשתמשת | S2 | ערעור תוך 30 יום |
SUSPENDED | מנהל / מבקר / אוטומטי | S4 | זמנית — חוזרת ל-ACTIVE אחרי התקופה |
CANCELLED | המשתמשת / מנהל | S5 | מחיקת פרטים + anonymize פוסטים (GDPR) |
ארבעה תפקידים, חמישה ספרינטים. הטבלה מראה מה כל תפקיד יכול לעשות בכל ספרינט.
| תפקיד | 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 | — |
alembic upgrade head רץ ללא שגיאות, כל הטבלאות קיימות/loginhttps://[your-domain]/api/docs נגיש בענןalembic upgrade head עובדfile-upload.component — צירוף קובץ לפוסט.
confirm-dialog.component — מחיקת פוסט.
בנינו אותן כבר. לא כותבים שוב.
| שלב | תנאי | מה קורה |
|---|---|---|
| שלב 1 | דיווח ראשון | התראת מייל למבקר האחראי בלבד. הפוסט נשאר גלוי. |
| שלב 2 | דיווח שני (ממשתמש שונה) | הסתרה אוטומטית של הפוסט + מייל דחיפות למבקר. |
| שלב 3 | דיווח שלישי+ (ממשתמשים שונים) | מייל חוזר למבקר ("דרינג'"). המבקר מטפל ב-Sprint 4. |
report-button.component — shared מהרגע שנבנה!
מקבל contentType + contentId.
בספרינט 4 — אותו component על שאלות מקצועיות.
בספרינט 5 — אותו component על הודעות פרטיות. לא כותבים שוב.
report-button.component מ-Sprint 3 — על שאלות מקצועיות.
confirm-dialog.component מ-Sprint 1 — להשעיה ידנית.
| חריגה | תנאי | תגובה אוטומטית |
|---|---|---|
| חריגה 1 | 5+ דיווחי-שגוי ב-30 יום | התראה למבקר + מגבלת 3 דיווחים ליום למשתמשת |
| חריגה 2 | 3+ הפרות-מוצדקות ב-30 יום | התראה למנהל + עיון בהשעיה (ידנית) |
| חריגה 3 | 2+ הפרות-מוצדקות ב-7 ימים | השעיה אוטומטית 48 שעות + התראה למנהל |
report-button.component מ-Sprint 3 — על הודעות פרטיות.
confirm-dialog.component מ-Sprint 1 — מחיקת חשבון.
loading-spinner + error-display — ווידוא שכל component קיים משתמש בהן.
501 Not Implemented ואין raise NotImplementedError בשום מקוםng build עובר ללא שגיאות TypeScriptng lint ו-ruff check . עוברים ירוקבכל ספרינט — כל פיצ'ר הוא Backend + Frontend ביחד. אין ספרינט שאחת עושה רק backend ואחרת רק frontend.
לפני שמתחילות כל פיצ'ר שמחבר backend ו-frontend — הגדירו יחד את ה-schema/API contract (5 דקות ביחד חוסכות שעות debugging).
לפני שכותבות קומפוננטה חדשה: בדקו אם משהו דומה קיים ב-shared/components/. אם כן — הרחיבו. אם תיבנה ביותר מספרינט אחד — מקמו ב-shared/ מהרגע הראשון.
| ✅ נכון | ❌ לא נכון (Angular ישן) |
|---|---|
standalone: true בכל component | NgModule |
input() / output() (Signals) | @Input() / @Output() |
@if / @for | *ngIf / *ngFor |
inject() בתוך הפונקציה ב-interceptor | inject() ברמת המודול |
loadComponent ב-app.routes.ts | import ישיר בלי lazy-loading |
| כלל | למה |
|---|---|
| Pydantic schema לכל request + response | ולידציה + Swagger אוטומטי |
Depends(get_current_user) על routes מוגנים | RBAC ב-FastAPI |
HTTPException עם status code ברור | Frontend מקבל error שניתן להציג |
router מחובר ב-api/router.py | endpoint שלא מחובר → 404 ולא מתגלה |
ng build + ng lint עוברים ללא שגיאותruff check . + mypy . עוברים על backend501 Not Implemented / raise NotImplementedError / throw Error('not implemented')standalone: true, input(), @if/@for| ספרינט | מה ה-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 | פרויקט מוגמר — מוכן להגשה |