Soru Bankası, Sosyal Medya ve Dış API


Soru Bankası (question_bank)

Modül: src/modules/question_bank

Kullanıcıların çoktan seçmeli sorular oluşturup test formatında düzenleyebildiği, diğer öğretmenlerle paylaşabildiği ve InDesign için dışa aktarabildiği modül. Arayüzde "Dizgici" olarak adlandırılır.

Tablolar

QuestionBanks

Alan Açıklama
userId Sahibi
testAdi Test adı
kategori Kategori etiketi (nullable)
questionCount Soru sayısı
content JSONB — tam test içeriği (soru metinleri, şıklar, görseller)

QuestionBankShares

Alan Açıklama
questionBankId Orijinal test
ownerUserId Paylaşan kullanıcı
recipientUserId Paylaşılan kullanıcı
allowEditing true ise alıcı orijinali doğrudan düzenleyebilir
recipientDraft allowEditing: false ise alıcının yaptığı değişiklikler burada saklanır (snapshot)

Erişim Modeli

resolveAccessibleQuestionBank(id, userId) iki yolu destekler:

  • ownerQuestionBanks.userId = userId → orijinal kayıt üzerinde tam kontrol
  • sharedQuestionBankShares.recipientUserId = userIdallowEditing: true ise orijinali değiştir; false ise değişiklikleri recipientDraft olarak kaydet

Liste görünümünde sahip ve paylaşılan testler birleştirilerek tek liste döner (ownedItems + sharedItems).


İçerik Yapısı (JSONB content)

{
  "test_adi": "...",
  "kategori": "...",
  "soru_sayisi": 20,
  "sorular": [
    {
      "sira": 1,
      "soru_metni": "...",
      "questionContent": { "version": 1, "blocks": [...] },
      "templateType": "classic_vertical",
      "choiceLayout": "vertical",
      "secenek_sayisi": 5,
      "siklar": { "A": "...", "B": "...", "C": "...", "D": "...", "E": "..." },
      "choiceContents": { "A": { "version": 1, "blocks": [...] }, ... },
      "dogru_cevap": "C",
      "image": null,
      "sketchElements": null
    }
  ]
}

Şablon tipleri: classic_vertical, image_with_caption, horizontal_choices

Şık düzeni: vertical, horizontal, staggered


InDesign Export

downloadQuestionBankbuildQuestionBankZip()adm-zip ile .zip döner.

ZIP içeriği:

  • manifest.json — soru verisi (görseller base64'ten dosyaya çıkarılır)
  • YesAkademi_Soru_Olusturucu.jsx — Adobe InDesign çalıştırılabilir script

JSX scripti InDesign'da manifest.json seçilerek çalıştırılır. 190×270mm sayfa, 2 sütunlu düzen, font sıralaması Cambria → Times New Roman → Arial → Calibri, matematiksel semboller için Cambria Math fallback, otomatik cevap anahtarı sayfası üretir.


Paylaşım Kapsamı

listShareCandidates sadece setting.teacherDepartmentId departmanı ve alt departmanlarındaki kullanıcıları döner. Öğrencilere paylaşım yapılamaz — yalnızca öğretmen departmanındaki diğer kullanıcılar aday listesine girer.


Sosyal Medya (social)

Route: src/routes/social.route.js

Servis: src/services/social.service.js

Kurumsal sosyal medya içeriği üretimi için kullanılan modül. Marka kimliği yönetimi ve AI destekli içerik üretimi içerir.

İzinler

İzin Endpoint
social_list Brand ve içerik listeleri
social_brand_manage Marka oluştur/güncelle/sil, logo renk analizi, medya yükle
social_provider_manage API provider konfigürasyonu
social_generate_text AI metin üretimi
social_generate_image AI görsel üretimi
social_generate_video AI video üretimi

Marka Yönetimi

Her kullanıcının markası (kurumsal kimlik) sisteme kaydedilir. Logo yükleme ve renk analizi (analyzeBrandLogoColors) desteklenir. Üretilen içerikler GeneratedContents tablosunda saklanır.

İçerik Üretimi

Endpoint Açıklama
POST /generate/text AI ile sosyal medya metni üretir
POST /generate/image AI ile görsel üretir
POST /generate/video Video üretim job'ı başlatır
GET /generate/video/:jobId Video üretim durumunu sorgular

Provider konfigürasyonu (/providers) ile her kullanıcı hangi AI servisini kullanacağını ayarlayabilir.


Dış API (external-api)

Modül: src/modules/external-api

Harici sistemlerin YesV3 verilerine erişmesi için API anahtarı tabanlı ayrı bir endpoint grubu.

Kimlik Doğrulama

src/modules/external-api/middlewares/api-key.middleware.js

İki yoldan API anahtarı kabul edilir:

  1. x-api-key header
  2. apiKey query parametresi

Anahtar process.env.EXTERNAL_API_KEY ile karşılaştırılır. Eşleşmezse 401 döner.

Endpoint'ler

Route Açıklama
GET /external-api/students Öğrenci listesi
POST /external-api/register Yeni kullanıcı kaydı
GET /external-api/cafe/user Kafeterya kullanıcı bilgisi
GET /external-api/health Servis sağlık kontrolü

Ortam Değişkeni

EXTERNAL_API_KEY=harici-api-anahtari

Bu değişken tanımlı değilse dış API endpointleri çalışmaz.


Kafeterya Menüsü (cafe-menu)

Servis: src/services/cafe-menu.service.js

Okul kantini/kafeterya için ayrı bir menü/katalog sistemi. Ürün listesi yönetimi ve QR tabanlı ödeme akışı içerir. Dış API'nin /cafe/user endpoint'i bu modülle entegre çalışır.

results matching ""

    No results matching ""