Sınav ve Değerlendirme

Bu bölüm üç ayrı modülü kapsar: deneme sınavı sistemi, Maarif soru üretimi ve hata defteri.


Deneme Sınavı (practice_exam)

Modül: src/modules/practice_exam

Deneme sınavları okul genelinde yapılan LGS ve YKS hazırlık sınavlarının sonuçlarını sisteme almak ve analiz etmek için kullanılır.

Sınav Tipleri

İki farklı sistem tipi var:

Tip Açıklama
PUBLISHER Yayıncı firmaların sınavları. Cevap anahtarı ve öğrenci cevapları dışarıdan dosya ile yüklenir.
INTERNAL Okulun kendi optik formuyla yaptığı sınavlar (YES Optik sistemi). .bldm / .ftm formatında form tanımı yüklenir.

İki seviye tipi:

Seviye Bölümler
LGS Türkçe, Sosyal, Din, İngilizce, Matematik, Fen (6 bölüm)
YKS TYT (Türkçe, Sosyal, Temel Matematik, Fen) + AYT (Edebiyat-Sosyal1, Sosyal2, Matematik, Fen)

YKS sınavları iki modda çalışabilir:

  • FULL — TYT + AYT birlikte
  • SINGLE_TYT — Sadece TYT

Tablolar

PracticeExams

Alan Açıklama
answerKey JSONB — cevap anahtarı
testNames JSONB — kitapçık/test adları eşlemesi
formDefinition JSONB — .bldm/.ftm dosyasından ayrıştırılmış optik form tanımı
bookletMapping JSONB — kitapçık numaralarının bölümlere eşlenmesi (örn. TYT=1, AYT=2)

StudentExamResults

Alan Açıklama
student JSONB — öğrenci bilgileri (ad, TC, sınıf, okul kodu)
booklet Kitapçık türü
answers JSONB — verilen cevaplar
results JSONB — doğru/yanlış/boş hesaplamaları
stats JSONB — net, yüzdelik, puan türleri, sıralama

Optik Form Ayrıştırma

.bldm ve .ftm dosyaları özel bir format kullanan optik form tanım dosyalarıdır. OpticalFormParserService bu dosyaları okur ve formDefinition alanına kayıt edilecek yapıya dönüştürür.

ExamParserService ise yayıncı sınavlarının sonuç dosyalarını (genellikle XLSX veya metin) okur. Bu dosyalar zaman zaman Windows-1254 (Latin5) encoding'de gelir, Türkçe karakter bozulmalarını düzeltmek için özel dönüşüm uygulanır.

YKS Puanlama Motoru

src/modules/practice_exam/services/yks_scoring/ dizini bağımsız bir puanlama motorudur. Şunları hesaplar:

  • Net puanlar — doğru - (yanlış × 0.25)
  • Ağırlıklı puanlar — YKS puan türlerine göre (SAY, SÖZ, EA, DIL vb.)
  • Normalizasyon — oturum içi ağırlıklı ortalama, standart sapma
  • OGM puanları — Ölçme, Seçme ve Yerleştirme Merkezi normlarına dayalı tahmini puan
  • Sıralama — oturum içi ve tahmini ulusal sıralama
  • Yüzdelik dilimleri — her puan türü için

Harici skorlama (externalScoring: false değilse) OGM verilerini de dahil eder.


Maarif Soru Sihirbazı (maarif_question_wizard)

Modül: src/modules/maarif_question_wizard

PDF veya metin içeriğinden otomatik soru üretir. Türkiye Yüzyılı Maarif Modeli (TYMM) kurallarına göre çalışır.

TYMM Kuralları

Gemini'ye verilen sistem promptunda şu kurallar zorunlu tutulur:

  • Sorular beceri temelli olmalı
  • Her soru işlevsel bir bağlama dayanmalı (bağlam dekoratif olmamalı)
  • Bağlam okunmadan soru çözülememeli
  • Çeldiriciler tipik kavram yanılgılarına dayanmalı
  • Dil sade, seviyeye uygun, öğretici
  • Gereksiz işlem yükü yok
  • 5 seçenek (A-E), soru kökü net

Teknik Detaylar

  • PDF yüklendiyse pdfjs-dist + canvas kütüphaneleriyle sayfa görsellerine render edilir (sunucu taraflı canvas — node-canvas)
  • Görseller Gemini'ye gönderilir
  • Gemini çıktısı JSON modunda alınır
  • Üretilen soru yapılandırılarak MaarifQuestionRecord tablosuna kaydedilir
  • Aynı zamanda question_bank modülü üzerinden soru bankasına da eklenir

MaarifQuestionRecord Tablosu

Alan Açıklama
userId Soruyu oluşturan kullanıcı
lessonId / lessonTitle Bağlı olduğu ders
gradeLabel Sınıf düzeyi (örn. "9. Sınıf")
difficulty Zorluk seviyesi (varsayılan: "Orta")
gainText Hedef kazanım metni
processComponentCode İşlem bileşeni kodu
workflowSource "generated" (AI üretimi) veya başka kaynak
content JSON — üretilen sorunun tam içeriği

Maarif Test Üreticisi (maarif_test_generator)

Modül: src/modules/maarif_test_generator

Soru sihirbazına benzer ama toplu test üretimi için tasarlanmıştır. Farkları:

  • Birden fazla konu/kazanım seçilip tek seferde çok sorulu test üretilebilir
  • Dosya içeriği veya seçilmiş ders içerikleri kaynak olarak kullanılabilir (max 3 içerik)
  • Üretilen test files tablosuna Maarif test MIME tipiyle (application/x-maarif-test+json) kaydedilir
  • Soru bankasına da eklenir

Kaynak dosya boyut sınırı: 15MB (üzerindeyse base64 inline gönderilmez, URI referansıyla gönderilir)


Hata Defteri (error_booklet)

Modül: src/modules/error_booklet

Öğrencinin sınavlarda yanlış yaptığı soruları tekrar çözmesi için kişisel bir çalışma defteri.

Yapı

Hata defteri ay bazlı organize edilir. Her kullanıcı için ayda en fazla bir defter olabilir (unique constraint: userId + year + month).

ErrorBooklet (Aylık defter)
└── ErrorBookletQuestions (Yanlış yapılan sorular)

ErrorBooklets Tablosu

Alan Açıklama
userId Defterin sahibi
year / month Ay bazlı organizasyon
totalQuestions Defterdeki toplam soru sayısı
solvedQuestions Tekrar çözülen soru sayısı
correctAnswers Tekrar çözümde doğru yapılan soru sayısı
status PENDING, IN_PROGRESS, COMPLETED

ErrorBookletQuestions Tablosu

Alan Açıklama
originalQuestionId Sınav sorusunun orijinal ID'si (LessonSectionExamQuestions)
gainId Sorunun bağlı olduğu kazanım
lessonSectionContentId Sorunun geldiği içerik
previousWrongAnswer Orijinal sınavda verilen yanlış cevap (JSON)
answer Hata defterinde verilen cevap (JSON)
isCorrect Hata defterinde doğru yapıldı mı?
answeredAt Ne zaman cevaplandı?

Bir soru bir ay içinde birden fazla kez eklenemez (unique constraint: errorBookletId + originalQuestionId).

results matching ""

    No results matching ""