מערכת מועדים ולוחות זמנים מותאמת אישית ל-LMS
סטודנטים מפספסים מועדים, מרצים מבזבזים שעות על תזכורות ידניות, ושיעורי השלמת הקורסים סובלים. זו בדיוק הבעיה שאנחנו פותרים עם מנוע מועדים ולוחות זמנים מותאם אישית לכל LMS. במהלך 5 השנים האחרונות סיפקנו 20+ פרויקטים כאלה לבתי ספר מקוונים ואוניברסיטאות. המערכת שלנו מעלה את שיעורי הגשת המטלות ב-40% (מאומת על ידי נתוני לקוחות) וחוסכת למרצים עד 10 שעות בשבוע.
למה מערכת מועדים ולוחות זמנים ייעודית היא קריטית
ללא אוטומציה, סטודנטים מאבדים מעקב אחר תאריכי הגשה ומפגשים חיים. מרצים שולחים תזכורות ידנית—זמן שיכול להיות מושקע בהוראה. המערכת שלנו הופכת את התהליך לאוטומטי לחלוטין: מיצירת לוח זמנים לקורס ועד שליחת התראות push 15 דקות לפני שיעור. היא משתמשת בתור משימות (Bull/BullMQ) שהוא אמין פי 3 מעבודות cron בסיסיות.
שני מצבי קורס
בקצב עצמי — סטודנטים מתקדמים בקצב שלהם. המועדים יחסיים: "הגש תוך 7 ימים מתחילת השיעור." אין לוח זמנים.
מבוסס קבוצות — קבוצה עם תאריכים קבועים. מועדים מוחלטים ולוח שיעורים (וובינרים, סמינרים). סטודנטים נרשמים לקבוצה ספציפית.
איך אנחנו מגדירים התראות בלי ספאם
אנחנו משתמשים בתור משימות (Bull/BullMQ) ומגדירים כללים: התראה נשלחת רק אם המטלה לא הוגשה. מרווחים: 7 ימים, 24 שעות, 3 שעות לפני המועד. לשיעורים: יום אחד ו-15 דקות לפני. הכל מנוהל מלוח בקרה אחד.
מודל נתונים (דוגמת PostgreSQL)
-- Потоки (cohorts) CREATE TABLE course_cohorts ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), course_id UUID REFERENCES courses(id), name VARCHAR(200), -- 'Поток №5, март 2026' starts_at DATE NOT NULL, ends_at DATE, max_students INT, enrollment_open BOOLEAN DEFAULT TRUE ); -- Дедлайны заданий CREATE TABLE assignment_deadlines ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), assignment_id UUID REFERENCES assignments(id), cohort_id UUID REFERENCES course_cohorts(id), deadline_at TIMESTAMPTZ, relative_days INT, late_allowed BOOLEAN DEFAULT FALSE, late_penalty_pct INT DEFAULT 0 ); -- Расписание занятий CREATE TABLE schedule_events ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), cohort_id UUID REFERENCES course_cohorts(id), lesson_id UUID REFERENCES lessons(id), title VARCHAR(500), event_type VARCHAR(50), -- 'webinar', 'seminar', 'qa_session' starts_at TIMESTAMPTZ NOT NULL, ends_at TIMESTAMPTZ NOT NULL, location_url VARCHAR(2000), -- Zoom/Meet ссылка recording_url VARCHAR(2000), -- После события is_mandatory BOOLEAN DEFAULT FALSE, timezone VARCHAR(100) DEFAULT 'Europe/Moscow' ); חישוב מועדים אישיים לקצב עצמי
כשסטודנט נרשם, כל המועדים היחסיים מומרים למוחלטים ונשמרים לכל סטודנט:
async function assignDeadlines(studentId, courseId) { const enrollment = await db.enrollments.findOne({ studentId, courseId }); const assignments = await db.assignments.findAll({ courseId }); const deadlineRecords = assignments .filter(a => a.relativeDays !== null) .map(a => ({ studentId, assignmentId: a.id, deadlineAt: addDays(enrollment.enrolledAt, a.relativeDays), })); await db.studentDeadlines.bulkCreate(deadlineRecords, { onConflict: 'ignore', // Не перезаписываем при повторном вызове }); } תצוגה בממשק
לסטודנטים:
- לוח שנה עם מועדים ואירועים
- רשימת "מה להגיש השבוע" בלוח הבקרה
- שעון ספירה לאחור למועד הקרוב
- פילוח: באיחור / להגשה היום / השבוע / מאוחר יותר
למרצים:
- סקירת קבוצה: כמה סטודנטים הגישו בזמן לעומת באיחור
- הארכת מועדים בכמות גדולה לכל הקבוצה
התראות מועדים
ההתראות נשלחות דרך תור המשימות לפי לוח זמנים:
| מתי | סוג | תנאי |
|---|---|---|
| 7 ימים | אימייל | מטלה לא הוגשה |
| 24 שעות | אימייל + Push | מטלה לא הוגשה |
| 3 שעות | Push | מטלה לא הוגשה |
| יום השיעור | אימייל | תזכורת וובינר |
| 15 דקות | Push | תזכורת שיעור |
// Cron job каждый час async function sendDeadlineReminders() { const upcoming = await db.studentDeadlines.findAll({ deadlineAt: { gte: new Date(), lte: addHours(new Date(), 25), // Следующие 25 часов }, submittedAt: null, // Ещё не сдано reminderSent24h: false, }); for (const deadline of upcoming) { const hoursLeft = (deadline.deadlineAt - new Date()) / (1000 * 60 * 60); if (hoursLeft <= 24) { await sendReminderEmail(deadline.studentId, deadline.assignmentId); await db.studentDeadlines.update(deadline.id, { reminderSent24h: true }); } } } ייצוא iCal
סטודנטים רוצים לראות את לוח הקורס ב-Google Calendar או Apple Calendar:
import ical from 'ical-generator'; app.get('/api/courses/:id/schedule.ics', authMiddleware, async (req, res) => { const events = await db.scheduleEvents.findAll({ courseId: req.params.id }); const calendar = ical({ name: course.title }); events.forEach(event => { calendar.createEvent({ start: event.startsAt, end: event.endsAt, summary: event.title, description: `Тип: ${event.eventType}\nСсылка: ${event.locationUrl}`, url: event.locationUrl, }); }); res.setHeader('Content-Type', 'text/calendar'); res.send(calendar.toString()); }); מה כלול בעבודה שלנו
- ניתוח המערכת הנוכחית שלך ואיסוף דרישות.
- עיצוב סכמת נתונים (PostgreSQL).
- פיתוח API ב-Laravel/Node.js.
- שילוב תור משימות (Bull, RabbitMQ).
- ממשק משתמש מותאם ב-React/TypeScript.
- הגדרת התראות (אימייל, Push, טלגרם).
- ייצוא iCal ללוחות שנה.
- תיעוד והדרכת צוות.
- 3 חודשי תמיכה לאחר ההשקה.
השוואה בין קצב עצמי למבוסס קבוצות
| פרמטר | קצב עצמי | מבוסס קבוצות |
|---|---|---|
| מועדים | יחסיים | מוחלטים |
| לוח זמנים | אין | כן (וובינרים) |
| דינמיקה קבוצתית | לא | כן |
| מורכבות יישום | נמוכה | בינונית |
| מתאים ביותר ל | למידה אישית | קורסים מונחי מרצה |
תהליך
- אנליטיקה — לימוד ה-LMS שלך, עומס, דרישות.
- עיצוב — סכמת מסד נתונים, ארכיטקטורת התראות.
- פיתוח — כתיבת קוד, בדיקות עם נתוני דוגמה.
- אינטגרציה — חיבור ל-LMS שלך דרך API.
- בדיקות — בדיקות עומס ופונקציונליות.
- פריסה — לשרת שלך או לענן.
- הדרכה — וובינר למנהלים.
לוח זמנים ועלות
מערכת מועדים בסיסית עם התראות — 4 עד 5 ימים. לוח זמנים מבוסס קבוצות עם תצוגת לוח שנה וייצוא iCal — 4–5 ימים נוספים. מחזור מלא — 10–12 ימים. העלות מחושבת בנפרד לאחר הערכת היקף.
מלכודות יישום נפוצות
- אזורי זמן לא מטופלים — מועדים זזים.
- תור התראות לא ניתן להרחבה — תזכורות נדלגות.
- אין סובלנות לתקלות — מועדים נאבדים במקרה של כשל.
- ממשק מורכב — סטודנטים לא מוצאים מועדים.
אנחנו מטפלים בסיכונים אלה בשלב התכנון.
המומחיות שלנו
אנחנו בונים מערכות LMS מאז 2019. בזמן הזה סיפקנו מעל 20 פרויקטים לבתי ספר מקוונים ואוניברסיטאות תאגידיות. אנחנו משתמשים בטכנולוגיות מודרניות: Laravel, PostgreSQL, Redis, Vue.js. אנחנו מבטיחים 3 חודשי תמיכה חינם לאחר ההשקה.
יש שאלות? צור קשר ואנחנו נעריך את הפרויקט שלך תוך יום אחד.







