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)