Vegman
Design · UX: Personas, Flows and Screens

UX: Personas, Flows and Screens

A proposal, not a decision. Every entity and relationship below is open to challenge; the open decisions are listed at the end.

Version 0.1, 6 September 2026. The experience track's design for the timetabling application, built against the API contract v0.1 and the Mevo Hagalil requirements. A working prototype of the screens marked "built" lives in apps/web against an in-browser stub.

Overview

The product replaces a magnet board and Tik-Tak with one screen the timetable coordinator can trust: the board, made honest. The grid stays the hero, teachers stay magnets, and every rule the coordinator carries in her head (R-05 to R-14) becomes a row she can switch on, weight, and see broken in plain Hebrew on the exact cell. Solving is a background job she can start, watch and cancel; repair is pinning and dragging with the engine validating every move. The design targets the deputy principal first, treats teachers and the principal as readers in version 1, and keeps the secretary's daily substitutions for later.

Summary

Bottom line

Build the timetable screen, the violations panel, the constraints checklist and the staff availability editor first; they are what the coordinator uses daily and what no competitor does well. Import and publish can stay designed-only until the engine's Tik-Tak adapter exists. Ship Hebrew RTL as the only tested direction, with English behind a toggle.

Detailed explanation

Personas

PersonaWho, at Mevo HagalilNeedsv1
Timetable coordinator (primary)Vegman, deputy principal. Builds the timetable on a magnet board, types it into Tik-Tak, prints it. Re-cuts it several times a year.See the whole school like the board; know why something does not fit; move one lesson without breaking ten others; keep teacher promises (R-09, R-10); finish on time.In scope, full
PrincipalApproves the timetable, answers teachers who ask "why do I end at period 7 three times".A summary of what was traded off and why (R-06, R-07), and confidence that hard rules hold (R-05, R-08, R-11).Read-only dashboard and grid
Homeroom teacherEighteen of them (S-02). Reads her own week; wants period 1 with her class (R-06) and the trip day (R-11).Personal view, requests for a change with a reason.Read-only teacher view; requests later
Subject and specialist teacherCo-teaches with the homeroom (R-03, R-12); often part-time (R-09).Her own week, her free day respected, double periods kept.Read-only teacher view
School secretaryHandles daily absences and substitutes.Who is free at period 3 today, who covers.Later; a separate workflow (research brief, Israel section)

Journeys

Each flow lists the screens it touches. Screen names are in the inventory below.

  1. Onboard a school from Tik-Tak. Import screen: upload the export, map short names to full names (S-03: two אורלי, two ספיר, two קרן), confirm inferred homeroom teachers (S-02), confirm fixed blocks (S-06, S-07) and meeting slots (S-05). Result: the achieved timetable scored against the rules on the Dashboard. Screens: Import, Dashboard.
  2. Staff and availability. Staff screen: table of everyone with role, homeroom, frontal, individual and staying hours (R-04), working days. Detail: a day-by-period grid where a click cycles available, prefer-not (R-10, soft) and unavailable (R-09, R-10, hard), a day header marks a whole day, each row carries a reason. Saving rescores the timetable at once. Screens: Staff.
  3. Curriculum per grade. Weekly periods per subject per grade (R-13), double-period and co-teaching flags (R-12). Designed as a grade-by-subject table with pattern editing; the prototype reads the fixture only. Screens: Curriculum (designed).
  4. Constraints as a checklist. Constraints screen: one row per requirement ID in Vegman's order, his Hebrew wording quoted, the engine constraint or constraints beneath it with on/off, hard/soft, weight and parameters, and the current violation count. Structural rules (R-01 to R-04, R-13) show where they are set instead. Open questions are linked by Q-ID. Screens: Constraints.
  5. Solve. Solve dialog from the top bar: time limit, warm start from the current version, keep pinned cells. Live phase (queued, building model, searching, improving), elapsed time, hard and soft counts; cancel at any time keeps the best so far. Done opens the new draft version. Screens: Solve dialog, Timetable.
  6. Review. Timetable screen in three views: one class (periods by days, like a printed page), one grade (three classes side by side, like the board), one teacher (her week, with unavailable slots shaded). Co-teachers are two magnets in one cell; trip blocks span periods 4 to 6; fixed programmes carry a lock. A corner mark shows a violation, red for hard, amber for soft. Hover explains. The Violations panel groups by rule and explains each case. Screens: Timetable, Violations panel.
  7. Repair. Pin a cell or a whole view; drag a lesson onto another slot of the same class and the stub scores the swap before the drop, refusing one that creates a hard violation and reporting the soft delta with undo otherwise; "fix only this" pins everything except the lessons involved in one violation and re-solves for a few seconds. Editing a published version forks a draft. Screens: Timetable, Solve dialog.
  8. Publish and export. Checks before publishing (no hard violations; teachers confirmed; availability current), publish to staff, export to Tik-Tak and XHSTT, print for the board, and a diff against the previous version. Screens: Publish (designed except publish itself).
  9. Mid-year change. A teacher leaves or hours change in October: edit Staff, see the new violations on the Dashboard, pin everything that must not move, solve with warm start, review the diff, publish. Same screens, no new ones; the version history on the Dashboard is the audit trail.

Information architecture and navigation

One top bar: school name, six sections (Overview, Timetable, Staff, Rules, Publish, Import), the current version selector with status and score, the solve button, language and theme. No sidebar: the grid needs the width. Timetable is the working screen; the others prepare its inputs or consume its output. The Dashboard is the landing page and lists next actions derived from state (hard violations first, then soft, then missing availability, then the standing placeholder note about subjects, N-01). Versions are a list with scores; picking one loads it everywhere.

RTL and bilingual approach

Hebrew is the document direction (dir="rtl" on the root), so days run from Sunday on the right exactly as on the board and the period column sits on the right. All layout uses logical properties (inline-start, margin-inline-end), so the English toggle flips the whole interface without a second stylesheet. Every string lives in one dictionary with Hebrew and English keys; contract objects carry nameHe and name, and a helper picks by language. Numbers, IDs and times are set in a monospace face and never mirrored. Teacher short names on magnets are always the Hebrew board names, in both languages, because that is how the school knows them.

What explainability looks like

A violation is a sentence, not a code: "מור מתחילה בשיעור 1 ב-2 ימים; הכלל דורש 3." It names the rule by requirement ID and title, the people or classes, the day and period, and the cost. Three ways to see it: a corner mark on the cell, the hover card on the cell listing every violation that touches it, and the panel grouped by rule with counts and total cost. Two ways to act: show in grid (switches to the right class or teacher and outlines the cells) and fix (local repair with everything else pinned). The same scorer explains a drag before it lands. When the engine ships unsat-core explanations for infeasible hard rules, they slot into the same panel as a violation of the rule with no assignment.

Screen inventory

ScreenStatusNotes
DashboardBuiltScore, violations by rule, next actions, week structure, versions
Timetable: class, grade and teacher viewsBuiltCo-teachers, spanning trip blocks, locks, pins, violation marks, hover card
Violations panelBuiltGrouped by rule, hard-only filter, show in grid, fix
Staff list and availability editorBuiltSaves through the API and rescores
Constraints checklistBuiltOn/off, hard/soft, weight; R-IDs and Q-IDs
Solve dialog and local repairBuiltLive progress, cancel, result delta
Drag-to-swap with validationBuiltSame-class swaps; refused when a hard rule breaks
PublishDesignedPublish works against the stub; checks, notify, export, print are placeholders
Import from Tik-TakDesignedFour-step flow described; endpoint answers 501
Curriculum editorDesigned onlyTable per grade; needs N-03 data
RoomsLaterQ-13; contract ignores rooms in 0.1
Teacher change requests, secretary substitutions, multi-user editingLaterNot in contract 0.1
תכנון · UX: פרסונות, תהליכים ומסכים

UX: פרסונות, תהליכים ומסכים

הצעה, לא החלטה. כל ישות וקשר להלן פתוחים לערעור; ההחלטות הפתוחות מפורטות בסוף.

גרסה 0.1, 6 בספטמבר 2026. העיצוב של מסלול חוויית המשתמש (experience track) ליישום מערכת השעות, שנבנה מול חוזה ה-API גרסה 0.1 ודרישות מבוא הגליל. אב-טיפוס עובד של המסכים המסומנים "נבנה" נמצא ב-apps/web מול stub בתוך הדפדפן.

סקירה

המוצר מחליף לוח מגנטים ואת תיק-תק במסך אחד שרכזת המערכת יכולה לסמוך עליו: הלוח, בגרסה כנה. הרשת (grid) נשארת הגיבורה, המורים נשארים מגנטים, וכל כלל שהרכזת נושאת בראשה (R-05 עד R-14) הופך לשורה שהיא יכולה להדליק, לשקלל, ולראות אותה מופרת בעברית פשוטה על התא המדויק. הפתרון (solving) הוא עבודת רקע שהיא יכולה להתחיל, לעקוב אחריה ולבטל; תיקון הוא נעיצה (pin) וגרירה כשהמנוע מאמת כל מהלך. העיצוב מכוון קודם כול לסגן/ית המנהל, מתייחס למורים ולמנהל כקוראים בגרסה 1, ומשאיר את מילוי המקום היומי של המזכירה לשלב מאוחר יותר.

תקציר

שורה תחתונה

לבנות תחילה את מסך מערכת השעות, את חלונית ההפרות, את רשימת האילוצים ואת עורך הזמינות של הסגל; אלה מה שהרכזת משתמשת בו יום-יום ומה שאף מתחרה לא עושה היטב. ייבוא ופרסום יכולים להישאר בשלב עיצוב בלבד עד שיהיה קיים מתאם (adapter) תיק-תק של המנוע. לשחרר עברית RTL ככיוון הנבדק היחיד, עם אנגלית מאחורי מתג.

הסבר מפורט

פרסונות

פרסונהמי, במבוא הגלילצרכיםv1
רכז/ת מערכת (ראשית)ווגמן, סגן מנהל. בונה את מערכת השעות על לוח מגנטים, מקליד אותה לתיק-תק, מדפיס. חותך אותה מחדש כמה פעמים בשנה.לראות את כל בית הספר כמו על הלוח; לדעת למה משהו לא מסתדר; להזיז שיעור אחד בלי לשבור עשרה אחרים; לקיים הבטחות למורים (R-09, R-10); לסיים בזמן.בהיקף, מלא
מנהל/תמאשר/ת את מערכת השעות, עונה למורים ששואלים "למה אני מסיימת בשיעור 7 שלוש פעמים".תקציר של מה הוחלף ולמה (R-06, R-07), וביטחון שהכללים הקשיחים מתקיימים (R-05, R-08, R-11).לוח מחוונים ורשת לקריאה בלבד
מחנכתשמונה-עשרה כאלה (S-02). קוראת את השבוע שלה; רוצה את שיעור 1 עם הכיתה שלה (R-06) ואת יום הטיול (R-11).תצוגה אישית, בקשות לשינוי עם נימוק.תצוגת מורה לקריאה בלבד; בקשות בהמשך
מורה מקצועית ומורה מומחיתמלמדת יחד עם המחנכת (R-03, R-12); לעיתים קרובות במשרה חלקית (R-09).השבוע שלה, כיבוד היום החופשי שלה, שמירה על שיעורים כפולים.תצוגת מורה לקריאה בלבד
מזכירת בית הספרמטפלת בהיעדרויות יומיות ובמילוי מקום.מי פנוי בשיעור 3 היום, מי מחליף.בהמשך; תהליך עבודה נפרד (תקציר המחקר, פרק ישראל)

מסעות

כל תהליך מפרט את המסכים שהוא נוגע בהם. שמות המסכים מופיעים במצאי (inventory) שלהלן.

  1. קליטת בית ספר מתיק-תק. מסך הייבוא: העלאת קובץ הייצוא, מיפוי שמות קצרים לשמות מלאים (S-03: שתי אורלי, שתי ספיר, שתי קרן), אישור מחנכות שהוסקו (S-02), אישור בלוקים קבועים (S-06, S-07) ומשבצות ישיבות (S-05). תוצאה: מערכת השעות שהושגה, מדורגת מול הכללים בלוח המחוונים. מסכים: ייבוא, לוח מחוונים.
  2. סגל וזמינות. מסך הסגל: טבלה של כולם עם תפקיד, חינוך כיתה, שעות פרונטליות, פרטניות ושהייה (R-04), ימי עבודה. פירוט: רשת של ימים לפי שיעורים שבה לחיצה מחליפה במחזוריות בין זמין, עדיף שלא (R-10, רך) ולא זמין (R-09, R-10, קשיח), כותרת יום מסמנת יום שלם, וכל שורה נושאת נימוק. שמירה מדרגת מחדש את מערכת השעות מיד. מסכים: סגל.
  3. תוכנית לימודים לכל שכבה. שיעורים שבועיים לכל מקצוע לכל שכבה (R-13), דגלים של שיעור כפול ושל הוראה משותפת (R-12). מעוצב כטבלת שכבה-לפי-מקצוע עם עריכת תבניות; אב-הטיפוס קורא רק את ה-fixture. מסכים: תוכנית לימודים (מעוצב).
  4. אילוצים כרשימת בדיקה. מסך האילוצים: שורה אחת לכל מזהה דרישה בסדר של ווגמן, הניסוח העברי שלו מצוטט, אילוץ המנוע או האילוצים שמתחתיו עם דלוק/כבוי, קשיח/רך, משקל ופרמטרים, וספירת ההפרות הנוכחית. כללים מבניים (R-01 עד R-04, R-13) מציגים במקום זאת היכן הם מוגדרים. שאלות פתוחות מקושרות לפי Q-ID. מסכים: אילוצים.
  5. פתרון. דו-שיח הפתרון מהסרגל העליון: מגבלת זמן, התחלה חמה (warm start) מהגרסה הנוכחית, שמירה על תאים נעוצים. שלב חי (בתור, בניית מודל, חיפוש, שיפור), זמן שחלף, ספירות קשיח ורך; ביטול בכל רגע שומר את הטוב ביותר עד כה. סיום פותח את גרסת הטיוטה החדשה. מסכים: דו-שיח פתרון, מערכת שעות.
  6. סקירה. מסך מערכת השעות בשלוש תצוגות: כיתה אחת (שיעורים לפי ימים, כמו עמוד מודפס), שכבה אחת (שלוש כיתות זו לצד זו, כמו על הלוח), מורה אחת (השבוע שלה, עם משבצות לא זמינות מוצללות). מורים משותפים הם שני מגנטים בתא אחד; בלוקי טיול משתרעים על שיעורים 4 עד 6; תוכניות קבועות נושאות מנעול. סימן פינה מציג הפרה, אדום לקשיח, כתום לרך. ריחוף מסביר. חלונית ההפרות מקבצת לפי כלל ומסבירה כל מקרה. מסכים: מערכת שעות, חלונית הפרות.
  7. תיקון. נעיצת תא או תצוגה שלמה; גרירת שיעור למשבצת אחרת של אותה כיתה וה-stub מדרג את ההחלפה לפני השחרור, מסרב להחלפה שיוצרת הפרה קשיחה ומדווח על הדלתא הרכה עם אפשרות ביטול אחרת; "תקן רק את זה" נועץ הכול מלבד השיעורים המעורבים בהפרה אחת ופותר מחדש למשך כמה שניות. עריכת גרסה שפורסמה מפצלת (fork) טיוטה. מסכים: מערכת שעות, דו-שיח פתרון.
  8. פרסום וייצוא. בדיקות לפני הפרסום (אין הפרות קשיחות; המורים אושרו; הזמינות עדכנית), פרסום לסגל, ייצוא לתיק-תק ול-XHSTT, הדפסה ללוח, והשוואה (diff) מול הגרסה הקודמת. מסכים: פרסום (מעוצב, למעט הפרסום עצמו).
  9. שינוי באמצע השנה. מורה עוזבת או שעות משתנות באוקטובר: עריכת הסגל, צפייה בהפרות החדשות בלוח המחוונים, נעיצת כל מה שאסור להזיז, פתרון עם התחלה חמה, סקירת ההשוואה, פרסום. אותם מסכים, בלי חדשים; היסטוריית הגרסאות בלוח המחוונים היא נתיב הביקורת (audit trail).

ארכיטקטורת מידע וניווט

סרגל עליון אחד: שם בית הספר, שישה מדורים (סקירה, מערכת שעות, סגל, כללים, פרסום, ייבוא), בורר הגרסה הנוכחית עם סטטוס וציון, כפתור הפתרון, שפה וערכת נושא. בלי סרגל צד: הרשת צריכה את הרוחב. מערכת השעות היא מסך העבודה; האחרים מכינים את הקלט שלה או צורכים את הפלט שלה. לוח המחוונים הוא דף הנחיתה ומפרט פעולות הבאות שנגזרות מהמצב (הפרות קשיחות תחילה, אחר כך רכות, אחר כך זמינות חסרה, ואחר כך הערת ה-placeholder הקבועה על מקצועות, N-01). גרסאות הן רשימה עם ציונים; בחירה באחת טוענת אותה בכל מקום.

גישת RTL ודו-לשוניות

עברית היא כיוון המסמך (dir="rtl" על שורש המסמך), כך שהימים רצים מיום ראשון בצד ימין בדיוק כמו על הלוח ועמודת השיעורים יושבת מימין. כל הפריסה משתמשת במאפיינים לוגיים (inline-start, margin-inline-end), כך שמתג האנגלית הופך את כל הממשק בלי גיליון סגנונות שני. כל מחרוזת חיה במילון אחד עם מפתחות בעברית ובאנגלית; אובייקטי החוזה נושאים nameHe ו-name, ופונקציית עזר בוחרת לפי שפה. מספרים, מזהים וזמנים מסודרים בגופן ברוחב אחיד (monospace) ולעולם לא משתקפים. שמות קצרים של מורים על המגנטים הם תמיד שמות הלוח בעברית, בשתי השפות, כי כך בית הספר מכיר אותם.

איך נראית הסבירות

הפרה היא משפט, לא קוד: "מור מתחילה בשיעור 1 ב-2 ימים; הכלל דורש 3." היא מציינת את הכלל לפי מזהה הדרישה וכותרתו, את האנשים או הכיתות, את היום והשיעור, ואת העלות. שלוש דרכים לראות אותה: סימן פינה על התא, כרטיס הריחוף על התא שמפרט כל הפרה שנוגעת בו, והחלונית המקובצת לפי כלל עם ספירות ועלות כוללת. שתי דרכים לפעול: הצג ברשת (עובר לכיתה או למורה הנכונה ומתווה את התאים) ותקן (תיקון מקומי כשכל השאר נעוץ). אותו מדרג (scorer) מסביר גרירה לפני שהיא נוחתת. כשהמנוע ישחרר הסברי unsat-core לכללים קשיחים בלתי ישימים, הם ישתלבו באותה חלונית כהפרה של הכלל ללא שיבוץ.

מצאי מסכים

מסךסטטוסהערות
לוח מחווניםנבנהציון, הפרות לפי כלל, פעולות הבאות, מבנה השבוע, גרסאות
מערכת שעות: תצוגות כיתה, שכבה ומורהנבנהמורים משותפים, בלוקי טיול משתרעים, מנעולים, נעיצות, סימני הפרה, כרטיס ריחוף
חלונית הפרותנבנהמקובץ לפי כלל, סינון קשיח בלבד, הצג ברשת, תקן
רשימת סגל ועורך זמינותנבנהשומר דרך ה-API ומדרג מחדש
רשימת אילוציםנבנהדלוק/כבוי, קשיח/רך, משקל; מזהי R ו-Q
דו-שיח פתרון ותיקון מקומינבנההתקדמות חיה, ביטול, דלתא של התוצאה
גרירה להחלפה עם אימותנבנההחלפות באותה כיתה; נדחות כשכלל קשיח נשבר
פרסוםמעוצבהפרסום עובד מול ה-stub; בדיקות, התראה, ייצוא, הדפסה הם placeholders
ייבוא מתיק-תקמעוצבתהליך של ארבעה שלבים מתואר; נקודת הקצה עונה 501
עורך תוכנית לימודיםמעוצב בלבדטבלה לכל שכבה; זקוק לנתוני N-03
חדריםבהמשךQ-13; החוזה מתעלם מחדרים ב-0.1
בקשות שינוי של מורים, מילוי מקום של המזכירה, עריכה מרובת משתמשיםבהמשךלא בחוזה 0.1