Ana içeriğe geç

API — Platform Modülleri

Uç noktalar

Endpoint Metot Kullanım amacı Kaynak dosya
/platform/modules GET Platform ana sayfasının modül listesi — sıralanmış platformService.tsx (getOrderedModules)
/iqv_platform_modulleri GET Tüm platform modüllerini listeleme (eski uç) platformService.tsx (getModules)
/iqv_platform_modul_ekle POST Yeni platform modülü ekleme platformService.tsx (createModule)
/iqv_platform_modul_guncelle PUT Mevcut modülü güncelleme platformService.tsx (updateModule)
/iqv_platform_sil DELETE (gövdede { id }) Modülü silme platformService.tsx (deleteModule)
/platform-queue-list POST (gövdede { company_id, organization_id }) Kaydedilmiş kart sıralamasını getirme platformQueueService.tsx (getPlatformQueue)
/platform-queue-create POST Yeni kart sıralamasını kaydetme platformQueueService.tsx (savePlatformQueue)
/platform-reminder-list POST Platform hatırlatıcılarını listeleme platformReminderService.tsx (listPlatformReminders)
/platform-reminder-update POST Platform hatırlatıcısı oluşturma/güncelleme platformReminderService.tsx (savePlatformReminder)
/platform-reminder-delete DELETE (gövdede) Platform hatırlatıcısı silme platformReminderService.tsx (deletePlatformReminder)

GET /platform/modules — Node.js Platform Backend

Node-RED'deki [GET] /iqv_platform_modulleri akışının Node.js karşılığıdır. Public adres /api/v1/platform/modules'tür: merkezi Axios client'ın baseURL'i (VITE_PLATFORM_API_BASE_URL) zaten /api/v1 ile bittiği için internal route yalnızca /platform/modules olarak tanımlanmıştır (routers/platform.routes.ts). Authorization: Bearer <token> zorunludur; sorgu parametresi veya gövde almaz.

{
  "success": true,
  "message": "Platform modülleri listelendi",
  "data": [{ "_id": "", "id": "", "name": "", "url": "", "order": 0, "created_by_id": "", "created_at": "", "updated_at": "" }]
}

Hata durumunda mevcut standart korunur: { "success": false, "message": "Platform modülleri alınamadı" }.

Listeleme kuralları (tamamı backend'de — services/platform.service.ts):

  1. Modüller platform-data koleksiyonundan okunur (koleksiyon adı .env → MONGODB_PLATFORM_COLLECTION; tanımlı değilse otomatik tespit).
  2. id veya name alanı boş olan kayıtlar elenir.
  3. Sıralama bilgisi platform-queue yapısından gelir: kapsama (JWT'deki company_id / organization_id) ait en güncel belge seçilir, items içindeki kayıtlar module_id bazında tekilleştirilir.
  4. Kaydedilmiş sıralamada geçerli (pozitif) ve kendi içinde benzersiz queue_number'ı olan modüller artan sırada başa gelir.
  5. Sonra koleksiyondaki order alanı olan kayıtlar order ASC gelir; aynı order değerine sahip kayıtlar created_at ASC ile sıralanır. order: 0 geçerli bir değerdir ve elenmez.
  6. order alanı olmayan/çözülemeyen kayıtlar en sona, created_at ASC sırasıyla eklenir; çözülemeyen tarihler en sondadır.

order ham değerdir, sıra dizinin kendisidir

Yanıttaki order, koleksiyondaki alanın ham değeridir (0 dahil; alan yoksa null). Ekrandaki sıra bu alandan değil, dizinin sırasından okunur — istemci listeyi yeniden sıralamaz. Sıra önceliği: kaydedilmiş sıralama → order → created_at.

Geçiş kuralı

/iqv_platform_modulleri (Node-RED) kaldırılmadı. Notlar, Hatırlatıcı ve Ayarlar sayfaları modül listesini hâlâ oradan alır; yalnızca Platform ana sayfası yeni uca taşındı. Yeni uç doğrulanıp tüm tüketiciler taşındıktan sonra Node-RED bağlantısı kaldırılacaktır.

Önbellekleme

getModules sonuçları, 60 saniyelik "stale-while-revalidate" bellek içi önbellekte tutulur ve eş zamanlı çağrılar tekilleştirilir (in-flight dedup); modül oluşturma/güncelleme/silme sonrası bu önbellek geçersiz kılınır (invalidateModulesCache).

getOrderedModules (yeni uç) aynı deseni ayrı bir anahtarla kullanır (iqvizyon-platforms-ordered). Modül mutasyonlarına ek olarak, sıralama kaydedildiğinde de geçersiz kılınır (savePlatformQueue → invalidateOrderedModulesCache) — böylece Ayarlar > Sırala ekranında kaydedilen yeni sıra, Platform sayfasında beklemeden görünür.

Sıralama kaydı — istemci tarafı doğrulama

savePlatformQueue çağrılmadan önce validateQueueItems ile ağa hiç istek gitmeden şu kontroller yapılır: liste boş olamaz, yinelenen module_id olamaz, gönderilen öğeler beklenen modül kümesiyle tam eşleşmeli, queue_number değerleri 1..N aralığında benzersiz ve ardışık olmalı.

POST /platform-queue-create istek gövdesi

sort_mode, organization_id, company_id, items, updated_by_id, updated_by_name alanlarının yanında, backend'e kategorileme amacıyla gönderilen sabit bir alan daha vardır: source: 'termit-platform-queue'.

Backend sözleşmesi — kasıtlı olarak değiştirilmedi

Bu literal değer, backend'in kayıtları kategorilemek için beklediği sabit bir sözleşme alanıdır. Proje adı değişikliği kapsamında, backend tarafıyla koordinasyon yapılmadan bu tür sözleşme değerlerinin değiştirilmesi gerçek entegrasyonu bozabileceğinden bilinçli olarak değiştirilmemiştir. Ayrıntı için ana rapordaki "Backend sözleşmesi nedeniyle değiştirilmeyenler" bölümüne bakın.