Ders Sistemi

Modül: src/modules/lesson

Ders sistemi, platformun temel içerik katmanıdır. Tüm AI özellikleri, eksiklik tespiti, kazanım takibi ve ödev sistemi bu yapı üzerine inşa edilmiştir.


Hiyerarşi

Lesson (Ders)
└── LessonSection (Bölüm) [sıralı]
    └── LessonSectionContent (İçerik) [sıralı]
        ├── LessonSectionContentGain (Kazanım bağlantısı)
        ├── LessonSectionContentTimes (Video transcript zaman damgaları)
        └── LessonSectionExamQuestion (Sınav sorusu — sadece EXAM tipinde)
            └── LessonSectionExamQuestionGain (Soru-kazanım bağlantısı)

Her katman order alanıyla sıralanır. Bölümler ve içerikler bu değere göre listelenir.


Tablolar

Lessons

Ana ders kaydı. Temel alanlar:

Alan Tip Açıklama
id STRING lesson_ prefix'li
title STRING Ders başlığı
isActive BOOLEAN false → öğrencilere görünmez
isDownloadable BOOLEAN İçerik indirilebilir mi?
isCertificate BOOLEAN Bitirince sertifika verilsin mi?
isCommentable BOOLEAN Öğrenciler yorum yapabilir mi?
isVotable BOOLEAN Öğrenciler oy verebilir mi?
isQa BOOLEAN Soru-cevap bölümü açık mı?
coverMediaId STRING Kapak görseli (media tablosu)
paranoid: true Soft delete — silinen dersler fiziksel silinmez

LessonSections

Ders bölümleri. Her bölümün bir lessonId ve bir order değeri var.

LessonSectionContents

Bölüm içerikleri. type alanı içeriğin ne olduğunu belirler:

Tip Açıklama
VIDEO Video içerik (mediaId ile bağlı)
AUDIO Ses dosyası
IMAGE Görsel
TEXT Zengin metin (HTML/markdown)
FILE PDF veya dosya
CODE Kod bloğu
EXAM Sınav — altında LessonSectionExamQuestion kayıtları olur

LessonSectionContentGains

Bir içerikteki (genellikle video) kazanım bağlantısı. Video için startTime/endTime alanları MM:SS veya HH:MM:SS formatında saklanır. Bu aralıklar Eksiklik Öğretmeni ve kazanım raporları tarafından kullanılır.

AI üretimli alanlar:

  • aiExplanation — Kazanım için AI'ın ürettiği açıklama metni
  • aiExamples — AI'ın ürettiği örnek listesi (JSON array)
  • aiGeneratedAt — AI içeriği üretim tarihi

LessonSectionContentTimes

Video içeriğin transcript kayıtları. Her kayıt bir startTime/endTime aralığı ve o aralıktaki content metnini tutar. AI Öğretmenin video bölümü özetlemesinde ve Eksiklik Öğretmeninin bağlam oluşturmasında kullanılır.

LessonSectionExamQuestions

Tip EXAM olan bir içeriğin altındaki sorular. Soru tipi metin, görsel, ses, video, dosya veya kod olabilir.

LessonSectionExamQuestionGains

Sınav sorusu ile LessonSectionContentGain arasındaki many-to-many bağlantı tablosu. Bu bağlantı sayesinde hangi sorunun hangi kazanımı ölçtüğü bilinir — eksiklik tespiti algoritması bunu kullanır.


Kullanıcı Takip Tabloları

UserLessonSectionContentTrackings

Öğrencinin hangi içerikleri ne kadar izlediğini saklar.

Alan Açıklama
status VIEWED, IN_PROGRESS, COMPLETED
startDate / endDate İzleme başlangıç/bitiş zamanı
duration Toplam izleme süresi (saniye, float)

UserLessonSectionExams

Öğrencinin sınav girişi. Durumlar: IN_PROGRESS, COMPLETED.

UserLessonSectionExamAnswers

Öğrencinin verdiği cevaplar. Bu tablo eksiklik tespiti algoritmasının ham verisidir.


Katılımcı ve Sorumlu

LessonParticipants

Derse kimin erişebileceğini belirler. type alanına göre:

  • USER — tek bir kullanıcı
  • DEPARTMENT — tüm departman
  • NONE — kısıtlama yok

LessonResponsibles

Dersden sorumlu öğretmeni ve hangi departmanla ilişkili olduğunu belirler. Bir derse birden fazla sorumlu atanabilir.


Diğer Özellikler

  • Yorum (LessonComments): isCommentable: true ise öğrenciler yorum bırakabilir
  • Oy (LessonVotes): isVotable: true ise öğrenciler ders puanı verebilir
  • Soru-Cevap (LessonQAs): isQa: true ise öğrenciler soru sorabilir, öğretmen cevaplayabilir
  • Not (LessonNotes): Öğrencinin derse kişisel not eklemesi

Kazanım Sistemi

Kazanımlar (gain) ayrı bir modül değil, lesson modülünün parçası.

LessonSectionContentGains tablosu şunu sağlar: her ders içeriği, bir veya birden fazla kazanımla etiketlenir. Video içeriklerinde bu etiket video zamanıyla da ilişkilendirilir — "bu kazanım videonun 04:30–07:15 arasında işleniyor" gibi.

Bu yapı üç şeyi mümkün kılar:

  1. Eksiklik tespiti — Öğrenci sınavda yanlış yaptığında hangi kazanımda eksik olduğu bilinir
  2. Eksiklik öğretmeni — AI'a "bu kazanımla ilgili videodan alıntı göster" diyebilmek için zaman aralığı bilgisi var
  3. Kazanım raporları — Departman bazında hangi kazanımlar ne kadar çözülmüş, takip edilebilir

Kazanım rapor servisi: src/modules/gain/services/gain.report.service.js

results matching ""

    No results matching ""