הוספתי שכבת אונבורדינג שלמה שהייתה חסרה למסעדות חדשות. אשף ההקמה הוא modal קופץ עם 4 צעדים (שם+סלוגן · סוג עסק · מטבע+טלפון · סקירה+דוגמה), פס התקדמות זהוב, focus management מלא, ESC לסגירה, validation על שדה השם, ו-RTL נקי. הוא נפתח אוטומטית רק כשפרופיל המסעדה מעולם לא נשמר (updated_at ריק) — כך התקנות קיימות אינן מוטרדות. הסיור המודרך הוא overlay עם spotlight אורבן שמתקדם ב-5 שלבים על פני פריטי הניווט (דשבורד, חישוב משמרת, משמרות, דוחות, הגדרות+נגישות), קופץ אוטומטית פעם אחת בכניסה הראשונה לדשבורד, מקבל ↔ למעבר ו-Esc לסיום, ומדלג על אלמנטים שאינם נראים. מחולל נתוני הדוגמה הוא Backend פתוח: יוצר 4 עובדים מגוונים (2 מלצרים, ברמן, מסתגל) ו-12 משמרות פרוסות על 13 ימים אחרונים עם תפוסות וסכומים אמינים, וכל רשומה מסומנת ב-_is_sample=true. הסרה בקליק אחד מנקה את כל הסימון ומחזירה את המערכת לנתוני production המקוריים בלבד. כרטיס חדש בעמוד ההגדרות ('אונבורדינג ונתוני דוגמה') מאפשר להפעיל מחדש את האשף, הסיור, איפוס דגלי localStorage, וניהול נתוני הדוגמה. אפס נגיעה ב-envelopes/auth/webhook/api, אפס תלות חיצונית חדשה, אפס rename של מפתחות JSON.
core/onboarding.php (חדש — 5 helpers: render_onboarding/generate_sample_data/remove_sample_data/count_sample_data/profile_is_fresh; אשף 4 צעדים, סיור 5 תחנות, מחולל 4 עובדים+12 משמרות מסומנים, JS API window.TipTopOnboarding)
layout.php (require_once + tiptop_render_onboarding ליד ה-a11y_panel — האשף והסיור זמינים בכל עמוד)
settings.php (POST handler מורחב ל-onboarding_demo + handler עצמאי ל-tiptop_onboarding עם load_demo/remove_demo + כרטיס UI חדש 'אונבורדינג ונתוני דוגמה' עם 5 כפתורים, באנר flash וספירת sample-rows)
דוגמאות ופירוט
פרופיל חדש (updated_at=null) → אשף נפתח אוטומטית 400ms אחרי load בכל עמוד
תיוג restaurant_type → 5 כפתורים אינטראקטיביים עם אייקונים: מסעדה/בית קפה/בר/שף/מהיר
צעד 4 → תקציר חי + checkbox 'הוסף נתוני דוגמה' → submit ל-save_restaurant_profile + onboarding_demo=1
TipTopOnboarding.startTour() מ-console → spotlight זהוב ניצב על דשבורד → ↔ למעבר
כניסה ראשונה לדשבורד → סיור 5/5 קופץ אוטומטית, נגמר → localStorage['tiptop_tour_completed']='1'
כפתור 'טען נתוני דוגמה' בהגדרות → 4 עובדים + 12 משמרות עם _is_sample:true ב-JSON
כפתור 'הסר נתוני דוגמה' → confirm + ניקוי מלא של כל רשומה עם _is_sample:true
URL hash #wizard בכל עמוד → פותח אשף; #tour → מתחיל סיור (לדמו ופיתוח)
Esc באמצע אשף → סוגר ומסמן localStorage['tiptop_wizard_completed']='1'
Onboarding Pack שלם ב-3 קבצים בלבד, כולם אדיטיביים. core/onboarding.php כולל 5 helpers idempotent (static flag על render למניעת double-emit). layout.php קיבל 2 הוספות זעירות. settings.php קיבל הרחבה של handler קיים (לא שוברת — ברירת מחדל 0) + handler עצמאי חדש + כרטיס UI אחד. אפס נגיעה ב-envelopes/auth/webhook/api. אפס rename של מפתחות JSON. אפס תלות חיצונית חדשה. נתוני הדוגמה מסומנים ב-_is_sample=true (מפתח חדש בלבד) — קוד קיים מתעלם ממנו. ההסרה בלעדית לרשומות מסומנות — אפס סיכון לנתוני production. אשף נפתח אוטומטית רק כשפרופיל לא נשמר אף פעם (FRESH=true) — בהתקנה החיה לא יקפוץ. סיור נפתח רק בדשבורד ופעם אחת. validation בצד שרת שומר whitelist קיים מסיבוב 2 — אם wizard שולח ערך חוקי הוא נשמר, אחרת מתעלם. חסר רק ניתוח אנליטי של event-funnel (אופציונלי לסיבוב עתידי).