İletişim Modülleri


Duyuru (announcement)

Modül: src/modules/announcement

Yöneticilerin departmanlara duyuru göndermesi için kullanılır.

Tablolar

announcement

Alan Açıklama
createdBy Duyuruyu oluşturan kullanıcı
departmentId Eski tek-departman ilişkisi (geriye uyumluluk için kaldı)
display false iken taslak, true iken yayınlanmış

AnnouncementDepartments — Yeni çoklu departman sistemi. Bir duyuru birden fazla departmana gönderilebilir. announcementId + departmentId kombinasyonu unique.

Geçiş notu: Eski sistemde duyurunun kendisinde departmentId alanı vardı (tek departman). Yeni sistemde AnnouncementDepartments junction tablosu kullanılıyor. Her iki association da hâlâ modelde tanımlı — as: 'department' (eski) ve as: 'departments' (yeni).


Randevu (appointment)

Modül: src/modules/appointment

Öğrencilerin öğretmen veya danışmanlarla randevu alması için kullanılır.

Akış

  1. Randevu veren kişi (provider) müsaitlik saatlerini tanımlar (AppointmentAvailabilities)
  2. Öğrenci müsait bir slota randevu talebi oluşturur
  3. Onay moduna göre otomatik onaylanır (AUTO) ya da provider manuel onaylar (MANUAL)
  4. Toplantı sonrası devam durumu işaretlenir

Appointments Tablosu

Alan Açıklama
providerId Randevu veren kişi (öğretmen/danışman)
userId Randevu alan kişi (öğrenci)
status PENDING, APPROVED, REJECTED, CANCELLED, COMPLETED
approvalMode AUTO (anında onaylanır), MANUAL (provider onaylar)
attendanceStatus UNMARKED, ATTENDED, NO_SHOW
attendanceMarkedAt / attendanceMarkedBy Kim ne zaman yoklama aldı
referenceId / referenceType Başka bir kaynağa bağlantı (opsiyonel)

AppointmentAvailabilities — Müsaitlik Tanımı

Alan Açıklama
weekly JSON — haftalık müsait slotlar: { "monday": { "08:00-09:00": [...] }, ... }
defaultCapacity Her slot için varsayılan kapasite (varsayılan: 1)
workingHours Çalışma saatleri aralığı: { start: "08:00", end: "20:00" }
slotDuration Randevu süresi (dakika, varsayılan: 10)

AppointmentSettings — Provider Ayarları

Her provider için ayrı ayarlar. allowedDepartments alanı ile hangi departmanların randevu alabileceği kısıtlanabilir. Varsayılan timezone: Europe/Istanbul.


Toplantı (meet)

Modül: src/modules/meet

Çevrimiçi veya yüz yüze toplantı yönetimi.

Meets Tablosu

Alan Açıklama
userId Toplantıyı oluşturan
reWatchMediaId Toplantı kaydı (sonradan tekrar izleme)
referenceId / referenceType Başka kaynağa bağlantı

MeetSummaries — Toplantı Özeti

Toplantı başına bir kayıt (meetId unique).

Alan Açıklama
overview Genel özet metni
details JSON — detaylı notlar
nextSteps JSON — toplantı sonrası aksiyonlar
content Ham içerik metni
docUrl Bağlı döküman URL'si
show false ise özet gizlenir

MeetParticipants ve MeetAttendances

MeetParticipants toplantıya kimin davet edildiğini, MeetAttendances kimin gerçekten katıldığını tutar.


Anket (survey)

Modül: src/modules/survey

Anket ve değerlendirme formu sistemi. Doldurulan ankete bağlı olarak otomatik eylemler tetiklenebilir.

Anket Tipleri

Tip Açıklama
SURVEY Standart anket
EVALUATION Değerlendirme formu
LIVE Canlı oturum anketi
CUSTOM Özel kullanım

Anket Yapısı

Survey
└── SurveySection (Bölüm)
    └── SurveyQuestion (Soru)
        └── UserSurveyAnswer (Kullanıcı cevabı)
UserSurvey (Kullanıcı-anket ilişkisi)
SurveyParticipant (Kimlere gönderildi: USER veya DEPARTMENT)

Soru Tipleri

TEXT, SELECT, MULTI_SELECT, RADIO, CHECKBOX, DATE, TIME, DATETIME, FILE, IMAGE, VIDEO, AUDIO, LINK

Görüntüleme Modu

pagination alanı sorular nasıl gösterileceğini belirler:

  • NONE — hepsi tek sayfada
  • PAGINATION — sayfa sayfa
  • SCROLL — kaydırarak

Otomatik Eylemler (isActionEnabled: true)

Anket tamamlandıktan sonra inceleme yapılırsa (APPROVED veya REJECTED) otomatik eylem tetiklenebilir:

Eylem Açıklama
NONE Sadece durum güncellenir
ASSIGN_FIXED_DEPARTMENT Kullanıcı approveDepartmentId / rejectDepartmentId departmanına taşınır
ASK_DEPARTMENT_ON_REVIEW İnceleme anında departman seçilir
DELETE_USER Kullanıcı silinir
DEACTIVATE_USER Kullanıcı pasife alınır

Bu sistem kayıt/başvuru formları için kullanılır — örneğin öğrenci kayıt anketi onaylandığında kullanıcı otomatik olarak ilgili departmana atanır.


Takvim (calendar)

Modül: src/modules/calendar

Tüm takvim kaynaklarını tek bir liste halinde birleştiren unified takvim sistemi.

getAllCalendars — Birleşik Sorgulama

Tek bir API çağrısıyla dört farklı kaynaktan etkinlikler çekilir ve birleştirilir:

Kaynak Koşul
Calendars tablosu USER tipi: sadece o kullanıcı — DEPARTMENT tipi: kullanıcının departmanına ait
Appointments Sadece PENDING veya APPROVED durumundakiler, provider veya kullanıcı ise
Homeworks Sadece isActive: true, deadline tarih etkinliği olarak gösterilir
Meets Kullanıcının oluşturduğu toplantılar

isSystem Bayrağı

isSystem: true olan takvim etkinlikleri düzenlenemez ve silinemez — servis katmanında kontrol edilir:

if (event.isSystem) throw new ApiError(400, "Sistem etkinliği güncellenemez");

Sistem etkinlikleri yalnızca programatik olarak oluşturulur.

results matching ""

    No results matching ""