Ana içeriğe geç

Mimari Genel Bakış

flowchart LR
  ERP[ERP Sistemleri] -->|POST /api/v1/inbound/work-orders| API[iqv-integration-api serve]
  API --> Mongo[(Müşteri MongoDB)]
  API --> IQV[IQV platform / domain verisi]
  Worker[iqv-integration-api worker] -.->|planlanan outbound| External[Harici API’ler]
  Worker -.-> Mongo
  API --> Health[GET /health/live /ready /details]

Servis tek binary’dir. serve üretim HTTP sürecidir. worker bir iskelettir ve outbound iş çalıştırmaz.

Paket sınırları

Paket Sorumluluk
cmd/iqv-integration-api Süreç giriş noktası
internal/command CLI yönlendirme
internal/app Çalışma zamanı bağlama ve yaşam döngüsü
internal/config Tipli yapılandırma
internal/logging stdout’a yapılandırılmış slog
internal/database/mongodb MongoDB istemcisi ve sağlık kontrolü
internal/httpserver HTTP sunucusu ve rotalar
internal/middleware Request ID, log, limit, recover
internal/health Liveness / readiness / details
internal/response / httperror Standart zarflar ve kodlar
internal/inbound/workorder Decode, doğrulama, actor, kalıcılık
internal/idempotency Idempotency-Key deposu
internal/outbound/* Olay ve performans okuma API’leri
internal/worker Worker iskeleti
internal/migration Migration çalıştırıcısı
internal/windowsservice Native Windows Service host
internal/security Ayrılmış paket adı; kimlik doğrulama internal/auth içindedir
internal/telemetry Metrik/push için ayrılmış

Handler’lar ortam değişkenlerini doğrudan okumamalı veya MongoDB istemcisi oluşturmamalıdır.

Dağıtım katmanı

Kurucu ve güncelleme scriptleri Go binary’sinin dışındadır:

  • Windows Native: scripts/windows/service
  • Windows Docker: scripts/windows/docker
  • Linux Native: scripts/linux/service (offline paket bunları scripts/ altına kopyalar)
  • Linux Docker: scripts/linux/docker

Servis/konteyner yaşam döngüsü, yedek, health kapıları ve deployment metadata bunlardadır. MongoDB kurulmaz veya geri alınmaz.

Health uç noktaları

Yol Anlam
GET / Servis adı, sürüm, ortam
GET /health/live Süreç canlılığı (MongoDB yok)
GET /health/ready MongoDB ping
GET /health/details HEALTH_DETAILS_ENABLED=true iken ayrıntı

İlgili diyagramlar