Kullanıcı Aktivitesi


Zaman Takibi (time-tracking)

Modül: src/modules/time-tracking

Kullanıcının platformda ne kadar zaman geçirdiğini, hangi modüllerde aktif olduğunu ve odak seanslarını takip eder.

Varlık (Presence) Takibi

PresenceSessions tablosu, kullanıcının hangi sayfada ne kadar aktif olduğunu kaydeder.

Alan Açıklama
moduleKey Hangi modülde (örn. "lessons", "time-center")
pathname Sayfa URL'si
status Oturumun nasıl kapandığı
activeSeconds Toplam aktif saniye
lastHeartbeatAt Son heartbeat zamanı

Oturum kapanış sebepleri (status):

Değer Ne zaman
active Hâlâ devam ediyor
idle_closed Kullanıcı idle'a geçti
hidden_closed Tarayıcı sekmesi gizlendi
route_changed Farklı sayfaya geçildi
logout_closed Kullanıcı çıkış yaptı
stale_closed 65 saniye heartbeat gelmedi — otomatik kapatma

Stale eşiği: STALE_HEARTBEAT_MS = 65000 — Frontend'den heartbeat gelmesi beklenir. 65 saniyeyi aşarsa oturum stale_closed olarak işaretlenir. Bu değer servis dosyasının başında sabit olarak tanımlıdır.

Odak Seansları (Focus Sessions)

FocusSessions — Kullanıcının başlattığı aktif çalışma seansları.

Alan Açıklama
type timer, stopwatch, pomodoro
status running, paused, cancelled, completed, ended
goalDurationSeconds Timer modunda hedef süre
elapsedSeconds Geçen toplam süre
remainingSeconds Kalan süre (timer için)
moduleKey Hangi modülden başlatıldı

FocusSessionEvents — Her seansa ait olay günlüğü. Her durum değişikliği ayrı bir kayıt olarak tutulur:

startedpausedresumedcompleted / cancelled / ended

Pomodoro'ya özgü event tipleri: phase_started, phase_completed, phase_skipped

Günlük İstatistikler

DailyUsageStats — Seanslar bittikten sonra özet istatistikler bu tabloya yazılır. Unique constraint: userId + date + moduleKey.

Alan Açıklama
activeSeconds Varlık seanslarından toplam aktif süre
focusSeconds Odak seanslarından toplam süre
completedFocusCount Tamamlanan odak seansı sayısı
completedPomodoroCount Tamamlanan pomodoro sayısı
focusSessionCount Toplam odak seansı sayısı

Liderboard

getLeaderboard metodu DailyUsageStats tablosunu sorgular:

  • Seçilen metriği (activeSeconds, focusSeconds vb.) tarih aralığında kullanıcı bazında toplar
  • Büyükten küçüğe sıralar, varsayılan limit 20
  • Her satıra kullanıcı adı ve departman bilgisi eklenir
  • Admin görünümü (getAdminUsersActivityList) time_tracking_admin_view yetkisi veya isSuperAdmin gerektirir

Hız Okuma (speed-reading)

Modül: src/modules/speed-reading

Ders sisteminden bağımsız, ayrı bir içerik hiyerarşisine sahip hız okuma modülü.

İçerik Hiyerarşisi

SpeedReadingCourse (Kurs)
└── SpeedReadingLesson (Ders — sesli anlatım)
SpeedReadingContent (Okuma parçası — sorulu)

SpeedReadingProfiles — Kullanıcı Profili

Her kullanıcı için bir profil kaydı tutulur (userId unique). Onboarding süreci tamamlanana kadar kullanıcı adım adım ilerler.

Alan Açıklama
initialSpeed Kullanıcının başlangıçta beyan ettiği okuma hızı (kelime/dk)
targetSpeedRange Hedef hız aralığı: 100-200, 200-400, 400-600, 600+
targetSpeed Hedef hız (üst sınır)
readingProfile BEGINNER, INTERMEDIATE, ADVANCED, EXPERT
readingLevel Kolay, Orta, Lise, Yetişkin
dailyReadingGoal Günlük hedef (dakika)
favoriteBookGenres Favori kitap türleri (max 3, JSON)
currentSpeed Güncel ölçülen okuma hızı
totalSessionCount / totalReadingTime Biriken istatistikler
onboardingCompleted / onboardingStep Onboarding durumu

SpeedReadingLessons — Sesli Ders

Sesli anlatımlı dersler. Gemini TTS ile ses üretilir.

Alan Açıklama
rawTranscript Ham metin (admin tarafından girilir)
cleanedTranscript Gemini tarafından temizlenmiş metin (YouTube/sosyal medya referansları çıkarılır)
audioMediaId Üretilen ses dosyası
audioDurationMs Ses süresi (ms)
voice TTS sesi (varsayılan: "Kore")
status DRAFT, PROCESSING, READY, FAILED

SpeedReadingContents — Okuma Parçası

Okuma anlama egzersizleri için metin + soru setleri.

Alan Açıklama
sourceKey Unique kaynak anahtarı
categorySlug / categoryName İçerik kategorisi
content Okuma metni
questions JSON — anlama soruları ve cevapları
questionCount Soru sayısı (varsayılan: 5)
wordCount / characterCount Metin istatistikleri
difficultyLevel Zorluk seviyesi

Hedefler (goal)

Modül: src/modules/goal

Kullanıcıların benimseyebileceği hedef şablonları sistemi.

Tablolar

Goals — Sistem tarafından tanımlanmış hedef şablonları. Başlık ve açıklama içerir.

UserGoals — Kullanıcının hangi hedefleri aldığı. order alanıyla kullanıcının hedeflerini sıralayabilir.

Bu modül ilerleyen süreçte genişletilmek üzere minimal tutulmuş — şu an hedefler sadece kullanıcıya atanıp sıralanabiliyor, ilerleme takibi eklenmemiş.

results matching ""

    No results matching ""