🚌

מדריך תכנון טיולים

מתכננים טיול שכבה? המודול הזה עושה את כל המתמטיקה במקומכם — מחשב כמה אוטובוסים צריך, משבץ מחנכים, בוחר את הספק הזול ביותר לפי המכרז, פותח שורת תקציב ב-כלכלה, ומסנכרן ליומן Google של בית הספר. הכל בלחיצה אחת.

לא נמצאו תוצאות. נסו מילת חיפוש אחרת.

📍 מה המודול עושה

בסיסי

מודול טיולים מחליף את ה-Excel הידני של "תכנית תקציבית טיולים". הוא יודע: תמחור עלות-אמת פר ספק (בסיס + שעות חריגה + אגרות), שיבוץ אוטומטי של כיתות ומחנכים לאוטובוסים, הפקת בקשות הזמנה ב-DOCX/PDF, וסנכרון ליומן Google.

🚌 פתחו את מודול הטיולים
זרימת עבודה מומלצת ▾
  1. פעם בשנה (אדמין): טוענים את מחירי המכרז — /school/trips/prices → 🚌 "טען מחירי מכרז תשפ"ו".
  2. לכל טיול חדש: /school/trips/new → ממלאים תאריך/שעות/יעד + מסמנים את הכיתות היוצאות.
  3. בעמוד פרטי הטיול: לוחצים "🤖 מילוי אוטומטי" → המערכת בוחרת ספק הזול, מחלקת כיתות לאוטובוסים, ומשבצת את מחנכי הכיתות.
  4. (אופציונלי) עריכה ידנית של אוטובוסים/צוות/הערות לספק.
  5. אישור הטיול → נוצרת שורת תקציב ב-כלכלה, משימות חשבונאיות פר ספק, ובקשות הזמנה (PO).
  6. "📅 סנכרן ליומן" → אירוע ב-Calendar האישי + מראה אוטומטית ליומן בית-הספר השיתופי.
  7. מעקב מצב תשלום (חשבונית/שיק/הופקד) ישירות מעמוד הטיול.

🔐 הרשאות וגישה

הרשאות

גישה ל-/school/trips פתוחה למי שיש לו אחת מהתגיות הבאות, או דגל אדמין:

מי יכול לעשות מה ▾
  • אדמין (is_admin=1) — גישה מלאה כולל ניהול מחירון וייבוא מכרז.
  • תגית "רכז טיולים" — תגית חדשה שנוצרה למודול. רכז יכול לתכנן/לערוך/לאשר טיולים אבל לא יכול לערוך את המחירון הראשי.
  • תגיות "מזכירה" / "מנהל" / "סגן מנהל" — גישה זהה לרכז טיולים.

תגיות מוקצות ב-/school/admin/permissions.

שני דפים נפרדים שדורשים אדמין בלבד:

💰 מחירון ספקים

חובה לפני שימוש

המודול לא יכול לתמחר טיולים בלי מחירון. יש 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 דברים:

מה קורה בלחיצה ▾
  1. בחירת ספק זול ביותר — לפי עלות אמת: בסיס + (שעות חריגה × תעריף) + אגרות. לדוגמה: לטיול ליעד "כפר חב"ד" 8 שעות עם אגרות, מחושב לכל 4 הספקים → הזול נבחר.
  2. חלוקת כיתות לאוטובוסים — אלגוריתם "First-Fit-Decreasing" שמפזר כיתות גדולות קודם, משאיר 4 מקומות פנויים לצוות בכל אוטובוס, ולא מפצל כיתות בין אוטובוסים אלא אם חייב.
  3. שיבוץ מחנכים — לכל כיתה, המחנך שלה (מ- /school/admin/homeroom) משובץ לאוטובוס שעליו הכיתה שלו.

אזהרות שאתם עלולים לקבל:

  • "אין מחנך משויך לכיתה ד1" — צריך להגדיר ב- /school/admin/homeroom.
  • "לא נמצא מחיר אוטובוס ליעד" — צריך להוסיף ידנית למחירון.

idempotent: לחיצה חוזרת תחליף את התכנון הקיים — אם ערכתם ידנית, יישאל אישור לפני.

✏️ עריכה ידנית של אוטובוסים

אחרי המילוי האוטומטי תוכלו לערוך כל אוטובוס: להחליף ספק, להזיז כיתה, להוסיף מחנך נוסף, להזין הערות מיוחדות לנהג.

פעולות זמינות ▾
  • 🗑 הסר אוטובוס — מסיר את האוטובוס והכיתות/צוות שעליו (קסקייד).
  • הזנת הערות לאוטובוס — "מסך וידאו פעיל", "הגעה ב-09:05 במקום 09:15", וכו'.
  • החלפת ספק — אם רוצים אוטובוס אחר לאוטובוס מסוים (למשל אוטובוס 60 מק').
  • כפתור 📞 ליד שם המחנך → חיוג מהיר מהמובייל.

אישור הטיול

חשוב

אחרי שבחרתם ספקים ובדקתם את התכנון — לוחצים "✅ אשר טיול" בראש העמוד. ברגע הזה קורות 4 פעולות אוטומטיות.

מה נוצר באישור ▾
  1. שורת תקציב ב-כלכלה (finance_budget_lines) בקטגוריה "טיולים" בסכום הכולל של הטיול.
  2. משימת חשבונאות פר ספק (finance_tasks) — "הוצאת צ'ק לספק X" עם ה-department "טיולים".
  3. משימות חכמות לרכז ב-/school/tasks:
    • "אישור טיול במשרד החינוך" עם קישור ישיר ל- tiulim.education.gov.il
    • "תיאום סופי מול ספק X" עם טלפון/מייל של הספק (כפתורי 📞 ו-✉️).
  4. טיוטות בקשת הזמנה (PO) פר ספק עם מספר אוטומטי (T0042-bus_55-260520).

הסטטוס של הטיול עולה מ-draftapproved.

📄 בקשות הזמנה (PO)

לכל ספק שאישרתם נוצרה בקשת-הזמנה. אפשר להוריד DOCX/PDF או לשלוח במייל ישירות לספק.

פעולות פר PO ▾
  • 📄 DOCX — הורדה כקובץ Word עם תבנית רשמית של בית הספר + חתימת הרב אסולין.
  • 📑 PDF — אותו דבר כ-PDF (דרך LibreOffice headless בשרת).
  • ✉️ שלח במייל — שולח את ה-PDF ישירות לספק דרך Gmail API של המשתמש (או SMTP גיבוי). מבקש לאשר את כתובת המייל קודם.

בשליחת מייל, נפתח אוטומטית צ'ק בכלכלה בסטטוס "ממתין לחתימה" (finance_checks). הסטטוס של הטיול עולה ל-sent.

💸 מעקב מצב תשלום

טבלה בעמוד הטיול עם 3 צ'קבוקסים פר שורת תקציב: חשבונית התקבלה, צ'ק יצא, הופקד. מתעדכנת מיידית בלחיצה.

השימוש הנכון ▾

החשבונאית מסמנת כל שלב כשהוא קורה:

  1. הספק שלח חשבונית → ☑ חשבונית התקבלה.
  2. המזכירה הוציאה צ'ק → ☑ צ'ק יצא.
  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 בזמן ייבוא ארוך. לחצו "🔄 נסה שוב" ליד ההודעה.