Ana içeriğe geç

Sistem Bileşenleri

Bu sayfa, yalnızca depoda (repository) doğrulanabilen bileşenleri listeler; varsayımsal veya planlanan bileşenler içermez.

Frontend

  • React 18 + TypeScript, Vite ile derlenen bir SPA (dashboard/).
  • UI kütüphanesi: Ant Design + @ant-design/pro-components (ProLayout üzerine kurulu ana uygulama kabuğu).
  • Yönlendirme: react-router-dom v6 (dashboard/src/routes/browserRouter.tsx).
  • PWA desteği: enablePWA: true (dashboard/config.ts) — service worker/manifest üretimi build sürecinin bir parçasıdır.

Backend / API katmanı

  • Gerçek üretim backend'i: https://platform.iqvizyon.com (PLATFORM_API_BASE_URL, dashboard/src/utils/index.tsx).
  • Geliştirme ortamında istekler, CORS'tan kaçınmak için Vite'in yerel geliştirme sunucusu proxy'si (/iqv-platform-api öneki) üzerinden aynı backend'e yönlendirilir; bu önek yalnızca yerel geliştirme içindir, üretimde kullanılmaz.
  • Tüm gerçek uç noktalar dashboard/src/routes/api.tsx içinde iqvApiRoutes sabitleri olarak tanımlıdır (tam liste için bkz. API Dokümantasyonu).
  • Not eklerinin backend'e giden bazı isteklerinde (örn. hatırlatıcı/kuyruk/mail kayıtları) Node-RED tabanlı bir arka uç akışına ait sözleşme izleri koda yansımıştır (dosya/yorum referansları); bu, backend'in uygulama detayıdır ve frontend tarafından yalnızca tüketilir.

Kimlik doğrulama (Auth)

  • JWT bearer token, merkezi Axios istemcisinin (dashboard/src/utils/http.tsx) istek arayüzcüsü (interceptor) tarafından her isteğe otomatik eklenir (/login hariç).
  • Token kaynağı sırasıyla: Redux state → localStorage.token → localStorage.auth_tokens (eski sürümle uyumluluk için).
  • 401/403 yanıtı alındığında otomatik çıkış yapılır, eski localStorage alanları temizlenir ve kullanıcı bilgilendirilir.

State yönetimi

  • react-redux + @reduxjs/toolkit; tek slice: admin (dashboard/src/store/slices/adminSlice.tsx) — token, user, username alanlarını tutar.
  • redux-persist (localStorage tabanlı) ile admin state'i tarayıcı yenilemelerinde kalıcıdır (persist:IQV Platform anahtarı altında).
  • Ayrıca tema, giriş kilidi ve hatırlatıcı "gösterildi" durumu gibi birkaç ayrı kaygı, Redux dışında doğrudan localStorage/sessionStorage ile yönetilir (bkz. Genel Çalışma Akışı).

Veri kaynakları

  • Ana veri kaynağı: IQVizyon bulut backend'i (https://platform.iqvizyon.com) — platform modülleri, notlar, hatırlatıcılar, kullanıcılar, denetim günlüğü.
  • Dosya deposu: Herkese açık MinIO nesne deposu (https://minio.iqvizyon.com) — not ekleri buradan sunulur; backend API origin'inden bağımsız, ayrı bir adrestir.
  • Eski (legacy) dosya sunucusu: MinIO'ya geçiş öncesi kullanılan termit.iqvizyon.com host'u, yalnızca geriye dönük uyumluluk için tanınır ve gelen eski mutlak URL'ler MinIO adresine çevrilir; bu, gerçek geçmiş üretim verisini temsil eder ve kod içinde bilinçli olarak korunmuştur.

Harici servisler

  • ReqRes (https://reqres.in/api) — yalnızca VITE_DEMO_MODE=true olduğunda kullanılan, gerçek ürünle ilgisi olmayan demo/test giriş akışı.

CI/CD

  • GitHub Actions (.github/workflows/ci.yml): Lint, Production TypeScript, Test TypeScript, Tests and Coverage, Production Build, Dependency Audit ve bunları özetleyen bir Quality Report job'u.
  • Dokümantasyon dağıtımı: .github/workflows/mkdocs-pages.yml — mkdocs.yml/docs/** değişikliklerinde GitHub Pages'e otomatik dağıtım.

Test altyapısı

  • Jest tabanlı test paketi dashboard/iqv-platform-test/ klasöründe; coverage eşikleri CI'da zorunludur (bkz. CI Kalite Raporu).

Dağıtım (deployment) yapısı

  • Uygulama: Vite npm run build ile üretim derlemesi alınır (dashboard/dist/); barındırma/dağıtım hedefi bu depoda tanımlı değildir.
  • Dokümantasyon: MkDocs + Material for MkDocs statik sitesi, GitHub Pages üzerinde proje sitesi olarak yayınlanır (bkz. Geliştirme ve depo kökündeki mkdocs.yml).