Ana içeriğe geç

Üretim Performansı API

Uç nokta

text GET /api/v1/production-performance

Çözümlenmiş kiracı içinde bir proje ve isteğe bağlı üretim/aşama kapsamı için üretim performans metriklerini hesaplayan salt okunur uç nokta.

Hesaplama ayrıntıları: Üretim Performansı Hesaplamaları

Sözleşme referansı: api/openapi.yaml

Kimlik doğrulama

AUTH_ENABLED=true iken istekler JWT Bearer erişim token'ı içermelidir:

http Authorization: Bearer <access_token>

AUTH_ENABLED=false iken uç nokta yerel geliştirme için açıktır.

Accept müzakere

Değer Açıklama
application/json JSON yanıt (Accept gönderilmezse varsayılan)
application/xml XML yanıt
text/xml XML yanıt
*/* JSON yanıt

Desteklenmeyen Accept değerleri 406 Not Acceptable (NOT_ACCEPTABLE) döner.

Kiracı bağlamı

Makine Olayları ile aynı çift ve geri dönüş kuralları:

Durum Sonuç
Her iki sorgu değeri mevcut İstek çifti kullanılır
Hiç sorgu değeri yok Her iki DEFAULT_* yapılandırılmışsa kullanılır
Tam olarak bir sorgu değeri 400 TENANT_CONTEXT_INCOMPLETE
Ne sorgu ne yapılandırılmış varsayılan 400 TENANT_CONTEXT_REQUIRED
Geçersiz ObjectID 400 INVALID_TENANT_CONTEXT

Sorgu parametreleri

Parametre Zorunlu Açıklama
project_code Evet Çözümlenmiş kiracı içinde proje kodu
company_id Hayır Kiracı şirket ObjectID (çift kuralı geçerli)
organization_id Hayır Kiracı organizasyon ObjectID (çift kuralı geçerli)
production_code Hayır Metrikleri tek üretime daraltır
production_stage_code Hayır Metrikleri tek aşamaya daraltır; production_code gerektirir
start_time Hayır* Pencere başlangıcı (RFC 3339; ofset kabul edilir, UTC'ye normalize)
end_time Hayır* Pencere sonu (RFC 3339; ofset kabul edilir, UTC'ye normalize)

* start_time ve end_time birlikte veya birlikte atlanmalıdır. İkisi de verildiğinde start_time, end_time'dan kesinlikle önce olmalıdır.

Zaman penceresi atlandığında servis şunları türetir:

  • effective_end_time — istek işleme anındaki güncel UTC zaman
  • effective_start_time — proje meta verisi, gömülü operasyon olayları veya aktif kapsam için alarm geçmişinden en erken ilgili zaman damgası

Metrik kapsamları

Metrikler her döndürülen seviyede bağımsız hesaplanır:

Yanıt bloğu Ne zaman Kapsam
project Her zaman Tüm proje
production production_code verildiğinde Yalnızca o üretim
production_stage production_stage_code verildiğinde Yalnızca o aşama

Aşama filtresi verilse bile proje ve üretim toplamları kendi bloklarında tam döner.

Yanıt alanları

Üst düzey zaman damgaları:

Alan Açıklama
generated_at Hesaplama zaman damgası (UTC)
effective_start_time Uygulanan pencere başlangıcı (UTC)
effective_end_time Uygulanan pencere sonu (UTC)

Her metrics nesnesi şunları içerir:

Alan Açıklama
total_operation_time_seconds Operasyon Start/Break/End aralık toplamı
net_operation_time_seconds Alarm türetilmiş net operasyon süresi
stop_time_seconds Toplam duruş süresi
planned_stop_time_seconds Planlı duruş alt kümesi
unplanned_stop_time_seconds Plansız duruş alt kümesi
failure_stop_time_seconds Arıza duruş alt kümesi
product_metrics Toplanmış ürün sayaçları

Süre değerleri int64 saniyedir. Kesirli alt saniye artıkları int64(duration / time.Second) ile sıfıra doğru kesilir.

Eşleşen veri yoksa uç nokta HTTP 200, sıfır metrik değerleri ve "product_metrics": [] döner.

Örnek istek

http GET /api/v1/production-performance?project_code=PROJE-001&production_code=URETIM-001&start_time=2026-08-01T00:00:00Z&end_time=2026-08-06T23:59:59Z HTTP/1.1 Host: localhost:8080 Authorization: Bearer <access_token> Accept: application/json

Örnek yanıt

json { "success": true, "request_id": "550e8400-e29b-41d4-a716-446655440000", "data": { "generated_at": "2026-08-06T15:00:00Z", "effective_start_time": "2026-08-01T00:00:00Z", "effective_end_time": "2026-08-06T23:59:59Z", "project": { "project_name": "Proje Adı", "project_code": "PROJE-001", "metrics": { "total_operation_time_seconds": 3600, "net_operation_time_seconds": 3200, "stop_time_seconds": 400, "planned_stop_time_seconds": 200, "unplanned_stop_time_seconds": 150, "failure_stop_time_seconds": 50, "product_metrics": [ { "product_id": "6a2bc9fbeb8679852cddac2a", "product_code": "URUN-001", "product_name": "Ürün Adı", "successful_count": 100, "revised_count": 5, "scrap_count": 2, "total_count": 107 } ] } }, "production": { "production_name": "Üretim Emri Adı", "production_code": "URETIM-001", "metrics": { "total_operation_time_seconds": 1800, "net_operation_time_seconds": 1600, "stop_time_seconds": 200, "planned_stop_time_seconds": 100, "unplanned_stop_time_seconds": 75, "failure_stop_time_seconds": 25, "product_metrics": [] } } }, "error": null }

Hata yanıtları

HTTP Kod Ne zaman
400 PROJECT_CODE_REQUIRED project_code eksik
400 PRODUCTION_CODE_REQUIRED / INVALID_FILTER_DEPENDENCY production_code olmadan production_stage_code
400 TENANT_CONTEXT_* / INVALID_TENANT_CONTEXT Kiracı çözümleme hatası
400 INVALID_START_TIME / INVALID_END_TIME Hatalı biçimlendirilmiş zaman parametresi
400 INVALID_TIME_RANGE Tek taraflı zamanlar veya geçersiz aralık
401 AUTHENTICATION_REQUIRED / INVALID_TOKEN Kimlik doğrulama hatası
404 PROJECT_NOT_FOUND Kiracı için bilinmeyen proje
404 PRODUCTION_NOT_FOUND Projede bilinmeyen üretim
404 PRODUCTION_STAGE_NOT_FOUND Üretimde bilinmeyen aşama
406 NOT_ACCEPTABLE Desteklenmeyen Accept
503 DATABASE_UNAVAILABLE MongoDB kullanılamıyor

Bkz. Hata Kodları.

Veritabanı indeksleri

Benzersiz olmayan alarm indeksleri migration CLI ile oluşturulur:

  • ix_alarms_machine_timestamp_id_desc
  • ix_alarms_project_production_stage_machine_timestamp_id

İndeks amaç notları için bkz. Makine Olayları.