# פרויקט מסכם — Pipeline: Postgres + Mongo → דוח יומי📖 שיעור

## הגדרת הפרויקט

זהו הפרויקט המסכם של יחידת Python ו-Pandas כולה: צנרת ETL אמיתית שצריכה לשאוב נתונים משני מקורות שונים לגמרי — Postgres (SQL, מיחידת EF Core) ו-MongoDB (Document DB, מיחידת NoSQL) — לאחד ולעבד אותם עם Pandas, לכתוב דוח יומי ל-CSV, ולזהות **אנומליות** (חריגות סטטיסטיות) שדורשות תשומת לב מיידית. אין כאן כלי טכני חדש — כל שכבה (Extract/Transform/Load, ניקוי, קיבוץ, logging) כבר נלמדה בנפרד ביחידה; המשימה כאן היא חיבור מלא לצנרת אחת עובדת, על נתונים משני עולמות שונים (SQL מובנה + NoSQL גמיש) שמתאחדים דרך Pandas כמכנה משותף.

## מה צריך להיות מוכן בסוף

**דרישות:**
1. Extract מ-Postgres (הזמנות) ומ-MongoDB (אירועי משתמש), עם logging על כמות הרשומות שנשלפו מכל מקור
2. Transform: ניקוי נתונים חסרים, קיבוץ לפי מוצר, וזיהוי אנומליה — ערך שחורג מ-2 סטיות תקן מהממוצע מסומן לבדיקה, לא "מתוקן" אוטומטית
3. Load: דוח CSV יומי (שם הקובץ כולל תאריך) + רישום `warning` בלוג על כל אנומליה שזוהתה
4. עטיפת כל התהליך ב-`try`/`except` עם `logging.error` על כל כישלון, כך שריצה עתידית (מתוזמנת) לא נחסמת

**קריטריוני הצלחה:**

• הרצת ה-Pipeline המלא מייצרת קובץ CSV עם סיכום נכון של הנתונים משני המקורות

• הזרקת נתון קיצוני מכוונת גורמת לו להיות מסומן כאנומליה, עם `warning` מתאים בלוג

• כישלון מכוון באחד המקורות (למשל Mongo לא זמין) נתפס ומתועד כ-`error`, בלי לקרוס את כל התוכנית

• הרצה חוזרת באותו יום כותבת לאותו קובץ דוח (לפי תאריך), ולא יוצרת קבצים כפולים

## דוקומנטציה רשמית מותרת

[Pandas — Documentation](https://pandas.pydata.org/docs/)

[SQLAlchemy — Documentation](https://docs.sqlalchemy.org/)

[PyMongo — Documentation](https://pymongo.readthedocs.io/)
