📍 מה המודול עושה
בסיסימודול טיולים מחליף את ה-Excel הידני של "תכנית תקציבית טיולים". הוא יודע: תמחור עלות-אמת פר ספק (בסיס + שעות חריגה + אגרות), שיבוץ אוטומטי של כיתות ומחנכים לאוטובוסים, הפקת בקשות הזמנה ב-DOCX/PDF, וסנכרון ליומן Google.
🚌 פתחו את מודול הטיוליםזרימת עבודה מומלצת ▾
- פעם בשנה (אדמין): טוענים את מחירי המכרז — /school/trips/prices → 🚌 "טען מחירי מכרז תשפ"ו".
- לכל טיול חדש: /school/trips/new → ממלאים תאריך/שעות/יעד + מסמנים את הכיתות היוצאות.
- בעמוד פרטי הטיול: לוחצים "🤖 מילוי אוטומטי" → המערכת בוחרת ספק הזול, מחלקת כיתות לאוטובוסים, ומשבצת את מחנכי הכיתות.
- (אופציונלי) עריכה ידנית של אוטובוסים/צוות/הערות לספק.
- אישור הטיול → נוצרת שורת תקציב ב-כלכלה, משימות חשבונאיות פר ספק, ובקשות הזמנה (PO).
- "📅 סנכרן ליומן" → אירוע ב-Calendar האישי + מראה אוטומטית ליומן בית-הספר השיתופי.
- מעקב מצב תשלום (חשבונית/שיק/הופקד) ישירות מעמוד הטיול.
🔐 הרשאות וגישה
הרשאות
גישה ל-/school/trips פתוחה למי שיש לו אחת מהתגיות
הבאות, או דגל אדמין:
מי יכול לעשות מה ▾
- אדמין (
is_admin=1) — גישה מלאה כולל ניהול מחירון וייבוא מכרז. - תגית "רכז טיולים" — תגית חדשה שנוצרה למודול. רכז יכול לתכנן/לערוך/לאשר טיולים אבל לא יכול לערוך את המחירון הראשי.
- תגיות "מזכירה" / "מנהל" / "סגן מנהל" — גישה זהה לרכז טיולים.
תגיות מוקצות ב-/school/admin/permissions.
שני דפים נפרדים שדורשים אדמין בלבד:
- 📋 מחירון — צפייה + עריכת מחירי הספקים.
- 📥 ייבוא מכרז — ייבוא מ-Google Drive באמצעות Gemini AI.
💰 מחירון ספקים
חובה לפני שימושהמודול לא יכול לתמחר טיולים בלי מחירון. יש 3 דרכים לטעון:
📋 פתחו את המחירון3 דרכים לטעון מחירים ▾
1. 🚌 "טען מחירי מכרז תשפ"ו" (הכי קל)
לחצן בראש הדף שמכניס בלחיצה אחת את 83 שורות המכרז של תשפ"ו (4 ספקים × 20 יעדים + שירותי-יום למאבטח/חובש): שחר צח, טיולים זה אנחנו, רובין תיירות, אגד. ה-4 הספקים נוצרים אוטומטית גם ב-כלכלה עם ע"מ אמיתי. idempotent — אפשר ללחוץ שוב בלי חשש לכפילויות.
2. 📥 "ייבוא מכרז מגוגל דרייב" (לקבצים אחרים)
פותח את /school/trips/import_tender. מדביקים את הקישור המלא של קובץ ה-xlsx ב-Drive (או את ה-File ID), בוחרים אופציונלית את "סוג השירות בקובץ" (מאבטחים / מדריכים / אוכל לתלמיד וכו'), ולוחצים "🔍 תצוגה מקדימה". Gemini Pro מפענח את הטבלה, מציג preview של השורות, ואחרי אישור — מכניס למחירון.
חשוב: דרוש שהקובץ נגיש לחשבון Google שלכם (קובץ פרטי או "כל מי שיש לו את הקישור — צופה").
3. ➕ הוספה ידנית (טופס בראש הדף)
בוחרים ספק, סוג שירות, יעד, ומחיר. הטופס מתאים את עצמו לפי סוג השירות:
- אוטובוסים — מציג שדות יעד / שעות כלולות / תעריף שעה חריגה / אגרות.
- שירותי-יום (מאבטח / חובש / מדריך) — רק מחיר ליום.
- אוכל / פעילות לתלמיד — המחיר יוכפל אוטומטית בכמות התלמידים בטיול.
- אחר — free-form עם הערות.
סינון "הזול ביותר" ▾
בראש הטבלה יש צ'ק-בוקס "הצג רק את הספק הזול לכל יעד/שירות". סימון יסתיר את כל השורות חוץ מהזולה ביותר בכל קומבינציה של (סוג שירות, יעד). הזול תמיד מסומן ⭐ ירוק גם בלי הסינון.
➕ יצירת טיול חדש
בסיסי/school/trips/new — טופס קצר עם שדות בסיסיים. אחרי שמירה תועברו לעמוד פרטי הטיול שם כל היתר קורה.
שדות הטופס ▾
- שם הטיול — חופשי (למשל "טיול שכבה ז' למצדה").
- תאריך / שעת יציאה / שעת חזרה — נצרך כדי שהמערכת תוכל לחשב שעות חריגה.
- יעד — האוטוקומפליט מציג יעדים שכבר יש להם מחיר במחירון.
- כולל אגרות כביש (כביש 6/מנהרות הכרמל) — סמנו אם רלוונטי, ייוסף לעלות.
- כיתות יוצאות — סמנו את הכיתות; כמות התלמידים נטענת אוטומטית מהמערכת.
- מספר מלווים — כמות צוות (להגדרת מספר אוטובוסים נחוצים).
- דרישות מיוחדות לספקים — צ'קבוקס: "מסך וידאו פעיל באוטובוס", "מאבטח חמוש", "נהג דובר עברית", וכו'. יופיעו בבקשת ההזמנה לספק.
🤖 מילוי אוטומטי
הכי שימושיבעמוד הטיול — כפתור "🤖 מילוי אוטומטי". בלחיצה אחת המערכת עושה 3 דברים:
מה קורה בלחיצה ▾
- בחירת ספק זול ביותר — לפי עלות
אמת:
בסיס + (שעות חריגה × תעריף) + אגרות. לדוגמה: לטיול ליעד "כפר חב"ד" 8 שעות עם אגרות, מחושב לכל 4 הספקים → הזול נבחר. - חלוקת כיתות לאוטובוסים — אלגוריתם "First-Fit-Decreasing" שמפזר כיתות גדולות קודם, משאיר 4 מקומות פנויים לצוות בכל אוטובוס, ולא מפצל כיתות בין אוטובוסים אלא אם חייב.
- שיבוץ מחנכים — לכל כיתה, המחנך שלה (מ- /school/admin/homeroom) משובץ לאוטובוס שעליו הכיתה שלו.
אזהרות שאתם עלולים לקבל:
- "אין מחנך משויך לכיתה ד1" — צריך להגדיר ב- /school/admin/homeroom.
- "לא נמצא מחיר אוטובוס ליעד" — צריך להוסיף ידנית למחירון.
idempotent: לחיצה חוזרת תחליף את התכנון הקיים — אם ערכתם ידנית, יישאל אישור לפני.
✏️ עריכה ידנית של אוטובוסים
אחרי המילוי האוטומטי תוכלו לערוך כל אוטובוס: להחליף ספק, להזיז כיתה, להוסיף מחנך נוסף, להזין הערות מיוחדות לנהג.
פעולות זמינות ▾
- 🗑 הסר אוטובוס — מסיר את האוטובוס והכיתות/צוות שעליו (קסקייד).
- הזנת הערות לאוטובוס — "מסך וידאו פעיל", "הגעה ב-09:05 במקום 09:15", וכו'.
- החלפת ספק — אם רוצים אוטובוס אחר לאוטובוס מסוים (למשל אוטובוס 60 מק').
- כפתור 📞 ליד שם המחנך → חיוג מהיר מהמובייל.
✅ אישור הטיול
חשובאחרי שבחרתם ספקים ובדקתם את התכנון — לוחצים "✅ אשר טיול" בראש העמוד. ברגע הזה קורות 4 פעולות אוטומטיות.
מה נוצר באישור ▾
- שורת תקציב ב-כלכלה
(
finance_budget_lines) בקטגוריה "טיולים" בסכום הכולל של הטיול. - משימת חשבונאות פר ספק
(
finance_tasks) — "הוצאת צ'ק לספק X" עם ה-department "טיולים". - משימות חכמות לרכז ב-/school/tasks:
- "אישור טיול במשרד החינוך" עם קישור ישיר ל- tiulim.education.gov.il
- "תיאום סופי מול ספק X" עם טלפון/מייל של הספק (כפתורי 📞 ו-✉️).
- טיוטות בקשת הזמנה (PO) פר ספק עם מספר אוטומטי (T0042-bus_55-260520).
הסטטוס של הטיול עולה מ-draft → approved.
📄 בקשות הזמנה (PO)
לכל ספק שאישרתם נוצרה בקשת-הזמנה. אפשר להוריד DOCX/PDF או לשלוח במייל ישירות לספק.
פעולות פר PO ▾
- 📄 DOCX — הורדה כקובץ Word עם תבנית רשמית של בית הספר + חתימת הרב אסולין.
- 📑 PDF — אותו דבר כ-PDF (דרך LibreOffice headless בשרת).
- ✉️ שלח במייל — שולח את ה-PDF ישירות לספק דרך Gmail API של המשתמש (או SMTP גיבוי). מבקש לאשר את כתובת המייל קודם.
בשליחת מייל, נפתח אוטומטית צ'ק בכלכלה
בסטטוס "ממתין לחתימה" (finance_checks).
הסטטוס של הטיול עולה ל-sent.
💸 מעקב מצב תשלום
טבלה בעמוד הטיול עם 3 צ'קבוקסים פר שורת תקציב: חשבונית התקבלה, צ'ק יצא, הופקד. מתעדכנת מיידית בלחיצה.
השימוש הנכון ▾
החשבונאית מסמנת כל שלב כשהוא קורה:
- הספק שלח חשבונית → ☑ חשבונית התקבלה.
- המזכירה הוציאה צ'ק → ☑ צ'ק יצא.
- הצ'ק הופקד בבנק → ☑ הופקד.
שדה הערות חופשי לכל שורה (מספר חשבונית, תאריכים, חריגות).
📅 סנכרון ליומן Google
דורש חיבור Google
כפתור "📅 סנכרן ליומן Google" יוצר אירוע
ב-Calendar האישי שלכם + במראה ליומן בית-הספר השיתופי
([email protected]) אם יש לכם הרשאת שיתוף.
איך זה עובד ▾
- סנכרון ראשון דורש לחיצה מפורשת — לא שולחים אירועים מאחורי הגב.
- לאחר מכן — כל עדכון של הטיול (שינוי תאריך, שינוי שעות, שינוי יעד, הוספת אוטובוס) מסונכרן אוטומטית ברקע תוך שניות.
- האירוע כולל: שם, יעד, שעות, תיאור עם כמות תלמידים/צוות, עלות, רשימת אוטובוסים והערות.
- תזכורות: 24 שעות לפני + שעה לפני.
- אם נמחק האירוע ידנית מ-Calendar — סנכרון נוסף ייצור אותו מחדש.
תקלה: "חיבור Google פג תוקף"
זה קורה אוטומטית כל ~6 חודשים. בהודעה יופיע כפתור "🔄 חבר מחדש ל-Google" — לחצו עליו, אשרו הרשאות, וחזרו לדף הטיול.
🐞 פתרון תקלות
תקלות נפוצות + מה לעשות איתן. אם משהו אחר נשבר — /school/bug_report.
תקלות ופתרונות ▾
"לא נמצא מחיר אוטובוס ליעד"
המחירון ריק או לא מכיל את היעד שבחרתם. פתחו את /school/trips/prices ולחצו 🚌 "טען מחירי מכרז תשפ"ו", או הוסיפו ידנית.
"אין מחנך משויך לכיתה X"
במילוי אוטומטי, מחנכים נלקחים מ- /school/admin/homeroom. אם חסר — תוסיפו שם, או שבצו ידנית באוטובוס.
"חיבור Google שלך פג תוקף או בוטל"
מתחבר ל-Google דרך כפתור "🔄 חבר מחדש" שמופיע ליד ההודעה. אחרי האישור — לחזור ולנסות שוב.
"Gemini לא זיהה שורות תמחור בקובץ" (בייבוא)
פתחו את "פרטים טכניים" מתחת להודעה — תוכלו לראות מה ה-AI ראה ולמה כל שורה נפסלה. ייתכן שהקובץ אינו טבלת השוואה, או שהפורמט שונה ממה ש-Gemini מצפה. נסו לבחור "סוג השירות בקובץ" כדי לעזור לו.
"השרת החזיר HTML במקום JSON"
Railway באמצע deploy — חכו 30 שניות ונסו שוב.
"job not found (אולי פג תוקף)" — בייבוא מכרז
Railway התחיל restart בזמן ייבוא ארוך. לחצו "🔄 נסה שוב" ליד ההודעה.