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):
- Modüller
platform-datakoleksiyonundan okunur (koleksiyon adı.env→MONGODB_PLATFORM_COLLECTION; tanımlı değilse otomatik tespit). idveyanamealanı boş olan kayıtlar elenir.- Sıralama bilgisi
platform-queueyapısından gelir: kapsama (JWT'dekicompany_id/organization_id) ait en güncel belge seçilir,itemsiçindeki kayıtlarmodule_idbazında tekilleştirilir. - Kaydedilmiş sıralamada geçerli (pozitif) ve kendi içinde benzersiz
queue_number'ı olan modüller artan sırada başa gelir. - Sonra koleksiyondaki
orderalanı olan kayıtlarorderASC gelir; aynıorderdeğerine sahip kayıtlarcreated_atASC ile sıralanır.order: 0geçerli bir değerdir ve elenmez. orderalanı olmayan/çözülemeyen kayıtlar en sona,created_atASC 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.