Ödev, Görev ve Planlama


Ödev Sistemi (whomework)

Modül: src/modules/whomework

Ödevler, öğrenciye belirli bir ders içeriğini belirli bir tarihe kadar tamamlaması için gönderilen kayıtlardır. Ödev doğrudan oluşturulmaz — akademik takvim üzerinden toplu gönderilir.

Homeworks Tablosu

Alan Açıklama
userId Ödevin gönderildiği öğrenci
lessonId Bağlı ders
lessonSectionId Ders bölümü
lessonSectionContentId Yapılacak içerik
status PENDING, STARTED, COMPLETED, FAILED
deadline Son teslim tarihi
finishedAt Öğrencinin tamamladığı tarih
isActive Ödev aktif mi?

Her ödev, doğrudan bir ders içeriğine bağlıdır. Öğrenci o içeriği izleyince veya tamamlayınca ödev durumu güncellenir.


Akademik Takvim (wacademic)

Modül: src/modules/wacademic

Öğretmenin haftalık ders planını oluşturması ve ödev göndermesi için kullanılan sistem.

Yapı

LessonAcademicCalendar (Haftalık plan başlığı)
└── LessonAcademicCalendarItem (Haftalık plan satırı — hangi departmana, hangi içerik)

LessonAcademicCalendars — Öğretmenin (userId) belirli bir ders için (lessonId) oluşturduğu haftalık plan. week (1–52) ve year ile tanımlanır.

LessonAcademicCalendarItems — Bir haftalık plandaki her satır: hangi departmana, hangi bölüm/içerik işlenecek. Durum: WAITINGCOMPLETED.

Ödev Gönderme (sendHomework)

Akademik takvim üzerinden ödev gönderildiğinde şunlar olur:

  1. Hedef departman(lar) ve ilgili takvim öğeleri (WAITING durumundakiler) seçilir
  2. Departman ağacı yinelemeli olarak çözülür — alt departmanlar da dahil edilir
  3. Her kullanıcı için aynı içeriğe ödev zaten varsa atlanır (duplicate kontrol)
  4. Ödev kaydı her kullanıcı için ayrı oluşturulur
  5. Deadline: bugünden expDay gün sonra, saat 20:59:59
  6. Her takvim öğesi COMPLETED olarak işaretlenir
  7. Tüm hedef departmanlara bildirim gönderilir

Her takvim öğesi ayrı bir transaction içinde işlenir — birinde hata olursa sadece o öğe rollback olur, diğerleri etkilenmez.


Görev Sistemi (task)

Modül: src/modules/task

Yöneticilerin departman veya bireysel kullanıcılara görev ataması için kullanılan sistem. Ödevden farkı: ders içeriğine bağlı değil, serbest tanımlı iş atamaları.

Tablolar

task

Alan Açıklama
frequency ONCE, DAILY, WEEKLY, MONTHLY
format TEXT (yazılı), FILE (dosya), BOTH
startDate / endDate Görev geçerlilik aralığı
createdBy Görevi oluşturan kullanıcı

task_department — Görevin hangi departmanlara atandığı.

task_user — Görevin hangi bireysel kullanıcılara atandığı.

task_submission — Görev teslimi.

Alan Açıklama
content Yazılı teslim içeriği
attachments JSON — dosya bağlantıları
status PENDING, APPROVED, REJECTED
reviewedBy / reviewNote İnceleyenin notu
periodKey Tekrarlayan görevlerde hangi periyot (örn. "2025-W12")
periodStart / periodEnd Periyot tarih aralığı

Görünürlük Kuralı

Kullanıcı görev listesini çektiğinde şunları görür:

  • Kendi departmanına atanmış görevler
  • Doğrudan kendisine atanmış görevler
  • Kendisinin oluşturduğu görevler

isSuperAdmin ise tüm görevleri görür.


Yapılacaklar (todo)

Modül: src/modules/todo

Öğrencinin kişisel yapılacaklar listesi ve günlük rutin yönetimi.

todoItem — Yapılacak Maddesi

Alan Açıklama
todoCategoryId Kategoriye bağlı
taskId / taskSubmissionId Bir görevden dönüştürülmüşse bağlantı
isTask Sistem görevi mi yoksa kişisel mi?
priority low, medium, high, critical
estimatedTimeValue / estimatedTimeUnit Tahmini süre (dakika/saat/gün)
completed / cancelled Durum bayrakları

dailyRoutine — Günlük Rutin

Öğrencinin her gün tekrarladığı alışkanlıklar. Sıralı, renkli ve öncelik seviyeli.

smartRoutineSuggestion — Akıllı Rutin Önerisi

Hata defteri verisinden türetilen haftalık çalışma planı önerisi.

Alan Açıklama
lessonId / lessonName Hangi ders için
weekStartDate / weekEndDate Hangi hafta için
sourceMonth / sourceYear Hataların alındığı ay
totalErrors Toplam hata sayısı
dailyTarget Günlük çözülmesi gereken soru hedefi (yuvarlanmış)
weeklyTarget Haftalık toplam hedef
completedQuestions Tamamlanan soru sayısı
status active, completed, expired

Unique constraint: bir kullanıcı için aynı ders + aynı hafta başlangıcı kombinasyonu tekrar oluşturulamaz.


Ders Planı (wplan)

Modül: src/modules/wplan

Okulun haftalık ders programı (ders çizelgesi) oluşturma sistemi.

Temel Modeller

Model Açıklama
PlanClasses Sınıf tanımı. departmentIds (JSONB) ile departmanlara bağlıdır. Sınıf adı unique.
PlanTeachers Öğretmen kaydı
PlanLessons Planlamada kullanılan ders tanımı
PlanTeacherLessonAssignments Hangi öğretmen hangi dersi verebilir
PlanTeacherBranchAssignments Öğretmenin branş atamaları
PlanTeacherAvailability Öğretmenin müsait olduğu gün/saat bilgisi
PlanClassSchedule Sınıfın haftalık program çizelgesi
PlanClassLessonAssignment Sınıfa atanan ders ve haftalık saat sayısı
PlanScheduleEntries Program girişleri (gün + saat dilimi + öğretmen + ders)
PlanTimeTable Oluşturulan ders programı
PlanDepartmentDailyHours Departman bazında günlük ders saatleri

PlanSettings — Global Plan Ayarları

Alan Varsayılan Açıklama
workingDays 5 Çalışma gün sayısı (1–7)
dailyMaxLessons 8 Günlük maksimum ders (1–12)
lessonDuration 40 dk Ders süresi (30–90 dk)
breakBetweenLessons 10 dk Dersler arası teneffüs (0–30 dk)
maxConsecutiveLessons 3 Art arda verilebilecek maksimum ders
preventConsecutiveSameLessons true Aynı dersin arka arkaya olmasını engelle
maxDailySameLesson 0 Aynı dersin günde maksimum kaç kez olabileceği (0 = sınırsız)
schoolStartTime 08:30 Okul başlangıç saati
lunchBreakStart 12:00 Öğle arası başlangıcı
lunchBreakDuration 60 dk Öğle arası süresi
workingDaysList Pzt–Cum Aktif çalışma günleri (JSONB array)
considerTeacherPreferences true Öğretmen tercihlerini dikkate al
balanceWorkload true Öğretmen iş yükünü dengele

results matching ""

    No results matching ""