# סיכום סשן — 0010
תאריך: 2026-05-18
אפליקציה: VitSiteTrack
נושא: תכנון מוצר + ארכיטקטורה + GTM

## מה נבנה/הושלם
- **תוכנית מלאה מאושרת** של אפליקציית VitSiteTrack — שמורה ב-`C:\Users\elyas\.claude\plans\snuggly-exploring-newell.md`
- מיפוי האקוסיסטם הקיים (VitPMIS, VitVital, Design Language) למימוש VitSiteTrack
- החלטות מוצר + תמחור + GTM אסטרטגיה לקהל ישראלי
- אישור 4 שינויי ארכיטקטורה חיוניים (נספח שינויים)

## החלטות שהתקבלו

### מוצר
- **שם:** VitSiteTrack — אפליקציה להוצאת דו"ח פיקוח עליון מיידי לאדריכלים
- **פלטפורמות:** iOS + Android + Tablets (Flutter cross-platform)
- **שפות:** עברית (RTL) + אנגלית, dark mode default
- **MVP scope:** Core בלבד — צילום + סקיצה + voice→text + שיוכים + רשימת תפוצה + PDF + email. ללא Autodesk, ללא PDF plan pinning בגרסה 1.0
- **קהל יעד:** אדריכלים עצמאיים + משרדים קטנים בישראל (5-50 משתמשים)
- **תמחור:** Solo ₪79/חודש, Studio ₪249, Office ₪599, Enterprise custom

### ארכיטקטורה
- **Stack:** Flutter 3.41, Firebase (Firestore + Auth + Storage + FCM + Functions), זהה ל-VitPMIS/VitVital
- **Auth:** Google Sign-In **+ Microsoft 365 (Graph)** — קריטי כי משרדים ישראלים עובדים עם Outlook/Exchange
- **Email:** Microsoft Graph sendMail + Gmail API — מייל יוצא מ-Sent Items של המשתמש (לא noreply)
- **State:** Riverpod (לא Bloc)
- **PDF:** חבילת `pdf` + `printing` (client-side rendering, תומך RTL)
- **Image annotation:** flutter_painter_v2 / painter
- **Region:** europe-west1 (תאימות לחוק הגנת הפרטיות הישראלי + GDPR)

### 4 שינויי ארכיטקטורה חיוניים (נספח שהמשתמש הוסיף — קיבלתי הכל)
1. **Web Companion הוסר מ-MVP** — Draft Editor ימומש רק על mobile/tablet client-side. נדחה לגרסה עתידית. חיסכון בCORS+auth+responsive complexity.
2. **BiDi RTL Helper מוקדם** — `services/text_processing_service.dart` נבנה כבר ב-M1 (לא ב-M5). מטפל בהיפוך לוגי של פיסוק, ניקוי תווים, סדר מחרוזות מעורבות (עברית+אנגלית+מספרים) לפני זריקה ל-`pdf` package. מגבלת `pdf` הידועה ב-BiDi.
3. **Transcription Async Queue** — `services/transcription_queue_service.dart` עם status pending|processing|completed|failed. **לכידה מיידית של audio ללוקאל ללא חסימת UI** (קריטי בסביבת אתר רועשת). עיבוד ברקע מול Whisper/Google STT. Status מוצג ב-Draft Editor.
4. **Token Encryption** — `services/token_crypto_service.dart`. AES-256 סימטרי על refresh_tokens של Microsoft Graph + Gmail. מפתח נגזר דינמית מ-UID + secret root ב-Google Cloud Secret Manager. הצפנה/פענוח רק ב-Cloud Function (לא בלקוח). collection `users/{uid}/encryptedTokens/{provider}` עם {ciphertext, iv, kdfSalt}. מניעת חשיפת Mail.Send מ-Firebase Console.

### Flow שאושר (סדר חדש)
1. בחירת פרויקט → "התחל סיור חדש"
2. **רישום נוכחים בסיור** (חדש לפי בקשת המשתמש) — multi-select מאנשי קשר + אורח ad-hoc, כל אחד עם שם+תפקיד. מופיע בדו"ח כשורה ייעודית: "נוכחים בסיור: יוסי כהן (יזם), רונית לוי (אדריכלית ראשית)..."
3. הוספת ממצאים (צילום+סקיצה+voice+שיוכים+סטטוס)
4. הערות כלליות בקול
5. "סיים סיור" → **Draft Editor (תחנת ביניים)** — *לא יוצר PDF סגור!* אדריכל עורך תמלולים, נוכחים, סדר ממצאים, מבוא/סיכום. autosave Firestore כ-status=draft. ניתן לסגור ולחזור.
6. "אשר ושלח" → רינדור PDF סופי → preview → שליחה מהחשבון של המשתמש → status=sent

### Milestones (6-8 שבועות)
- M1: Scaffolding + BiDi helper (שבוע 1)
- M2: Projects & Contacts (שבוע 2)
- M3: Camera + Annotation (שבוע 3)
- M4: Voice (Async Queue) & Findings (שבוע 4)
- M5: Draft Editor (שבוע 5)
- M6: PDF + Email (שבוע 6)
- M7: Polish + i18n (שבוע 7, **ללא web**)
- M8: Beta & Stores (שבוע 8)

## בעיות שנפתרו (תכנוניות)
- **למה Microsoft 365 ולא רק Google?** — המשתמש העיר שרוב המשרדים בישראל עובדים עם 365. הוספתי MSAL + Graph sendMail. מייל יוצא מחשבון האדריכל = הרבה יותר מקצועי מ-noreply.
- **למה Draft Editor ולא PDF ישיר?** — המשתמש עצר אותי באישור הראשון. צריך לאפשר תיקון תמלולים (שגיאות זיהוי) ועריכה לפני סגירת ה-PDF. הוספתי autosave Firestore + persistence של drafts.
- **למה רישום נוכחים?** — המשתמש העיר אחרי האישור השני. שדה חיוני בדו"ח פיקוח עליון מקצועי.
- **למה async transcription?** — באתר בנייה יש רעש קיצוני; תמלול סינכרוני יחסום UI ויטה לכשול. queue-based + status indicators.
- **למה AES על tokens?** — Firebase Console גישה ישירה תחשוף Mail.Send. הצפנה עם key ב-Secret Manager מונעת זאת.

## מה לא עבד / צריך להיזהר
- **Apple Sign-In:** לא חובה כש-Microsoft+Google זמינים, אבל בטוח יותר להוסיף ב-iOS build. App Store guideline 4.8.
- **תמלול עברית offline (speech_to_text):** מוגבל. fallback ל-Google STT cloud — $0.024/דקה.
- **BiDi ב-`pdf` package:** מגבלה ידועה — חובה helper מוקדם, אחרת ייצא מחרוזות הפוכות בPDF.
- **iOS App Store rejection risk:** אם רק Google login → דחייה. צריך Microsoft+Google או להוסיף Apple Sign-In ב-iOS.
- **`afterEvaluate` ב-`subprojects {}`:** ה-learning מ-VitPMIS — לא לעשות זאת! שובר evaluationDependsOn.
- **נתיב Flutter עם רווח:** `C:\Program Files\src\flutter\bin\flutter.bat` שובר hooks. להשתמש ב-`C:\flutter\bin\flutter.bat` (junction).

## קבצים שנוצרו/שונו
- `C:\Users\elyas\.claude\plans\snuggly-exploring-newell.md` — התוכנית המלאה (~12 סעיפים, ~350 שורות)
- `D:\Vitruvius Ecosystem\Sessions\0010-VitSiteTrack-תכנון-VitSiteTrack-context-now.md` — קובץ זה
- `D:\Vitruvius Ecosystem\Sessions\0010-VitSiteTrack-תכנון-VitSiteTrack-session.md` — קובץ זה
- `D:\Vitruvius Ecosystem\Sessions\sessions-index.html` — מתעדכן עם שורת 0010
- `D:\Vitruvius Ecosystem\CLAUDE.md` — מתעדכן בסעיף VitSiteTrack

## הצעד הבא — מימוש M1
ראה `0010-context-now.md` לרשימה ממוספרת.

המשתמש עצר לפני הרצת `flutter create` בכוונה — רצה לסגור סשן ולהמשיך בסשן הבא מאותה הנקודה. בסשן 0011 להתחיל ישר מ-`flutter create` (שלב 1) ולא לחזור על המיפוי.

## תזכורת לסשן הבא
- לבדוק עם המשתמש אם יש Firebase project `vitsitetrack` שכבר נוצר, או ליצור חדש
- לבדוק עם המשתמש אם הוא רשם app ב-Azure Portal לקבלת MS Client ID (אם לא — להדריך)
- לעדכן את `D:\Vitruvius Ecosystem\Design\Vitruvius-Hub-Diagram.html` או ליצור `VitSiteTrack-Ecosystem-Map.html` בסיום M1 (VIT-004)
