Ana içeriğe geç

Backend API

Backend iqvflex/backend/ altındadır: Node.js 22 + Express (ESM), TypeScript kullanılmaz.

Uç noktalar

Metot Yol Açıklama
GET /health Servis durumu (MongoDB'ye ulaşılamasa da 200 döner)
POST /erp-mapping Node-RED karşılığı. format_template veya iş emri (JSON/XML) kaydı
GET /erp-mapping/format-template Kaydedilmiş şablonu okur
POST /api/v1/erp/auth/login ERP kullanıcı girişi, { identifier, password } gövdesi
GET /api/v1/erp/auth/me Korumalı — geçerli token gerektirir
POST /api/v1/auth/token OAuth 2.0 client_credentials (credential yalnızca backend .env'de)
POST /api/v1/inbound/work-orders/test Go API'ye forward (test)
POST /api/v1/inbound/work-orders Go API'ye forward
GET /api/v1/machine-events Go API'ye forward, query parametreleri değiştirilmez
GET /api/v1/production-performance Go API'ye forward, query parametreleri değiştirilmez

API dokümantasyonu (Swagger)

Backend, uç noktaları tarayıcıdan gezilebilir hâlde de sunar (API kodu değiştirilmeden, yalnızca eklenmiştir — bkz. src/config/swagger.js, app.js):

Yol İçerik
/api-docs Swagger UI (tarayıcıdan gezilebilir OpenAPI arayüzü)
/openapi.json Ham OpenAPI 3.0 belgesi (JSON)

Go API kimlik doğrulaması

GO_API_CLIENT_ID ve GO_API_CLIENT_SECRET boşsa hiçbir Authorization başlığı gönderilmez — mevcut Node-RED davranışı budur. Doldurulursa backend POST {GO_API_BASE_URL}/api/v1/auth/token ile client_credentials akışını çalıştırır, data.access_token değerini cache'ler ve isteklere Authorization: Bearer <token> ekler. İstemci kendi Authorization başlığını gönderirse o başlık aynen iletilir.

client_secret ve access_token hiçbir koşulda frontend'e dönmez.

Yanıt sözleşmesi

Başarılı MongoDB yazımı (yeni kayıtta 201, güncellemede 200):

{
  "success": true,
  "message": "Alan eslestirme sablonu olusturuldu.",
  "id": null,
  "data": {
    "database": "iqvizyon",
    "collection": "erp_mapping",
    "record_type": "format_template",
    "upserted_id": null,
    "matched_count": 0,
    "modified_count": 0,
    "upserted_count": 0
  }
}

Hata (400):

{ "success": false, "message": "Istek govdesi islenemedi.", "error": "…" }

Go API hataları 500'e çevrilmez; Go'nun HTTP status kodu, message ve errors alanları ile birlikte (JSON ise JSON, XML ise ham XML olarak) frontend'e aktarılır.

Ortam değişkenleri

Tüm ayarlar iqvflex/backend/.env dosyasındadır; şablonu .env.example.

Değişken Varsayılan Açıklama
PORT 3001 HTTP portu
CORS_ORIGIN http://localhost:5173 Virgülle ayrılmış origin listesi
MONGODB_URI (zorunlu) MongoDB bağlantı adresi
MONGODB_DATABASE iqvizyon Mevcut üretim yapısı — değiştirmeyin
ERP_AUTH_SECRET (zorunlu) JWT/HS256 imza anahtarı
ERP_AUTH_TOKEN_TTL_SECONDS 28800 Token ömrü (8 saat)
GO_API_BASE_URL (zorunlu) Harici Go servisinin adresi
GO_API_CLIENT_ID / _SECRET (boş) Boşsa Authorization gönderilmez

Komutlar

cd iqvflex/backend
npm install
npm start     # server.js
npm run dev   # node --watch
npm test      # birim testleri + smoke kontrolleri (node:test)