Ana içeriğe geç

Üretim Performansı Hesaplamaları

Bu belge GET /api/v1/production-performance metriklerinin nasıl türetildiğini açıklar. API kullanımı: Üretim Performansı API.

Veri kaynakları

Kaynak Koleksiyon / konum Kullanım
Proje yapısı projects Kapsam çözümleme, gömülü production_stage_operation olayları
Kiracı makineleri machines Alarm sorguları için makine ID koruması
Alarm zaman çizelgesi alarms Net/duruş süre aralıkları

Tüm okumalar çözümlenmiş kiracıya kapsamlanır. Alarm sorguları ek olarak kiracı makine ID'leriyle sınırlanır.

Zaman penceresi

start_time ve end_time verildiğinde:

  • Her ikisi geçerli RFC 3339 zaman damgası olmalıdır (ofset kabul edilir, UTC'ye normalize)
  • start_time, end_time'dan kesinlikle önce olmalıdır
  • Pencere [effective_start_time, effective_end_time) — effective_end_time anındaki olaylar hariç tutulur

Atlandığında:

  1. effective_end_time = istek işleme anındaki güncel UTC zaman
  2. effective_start_time sırayla çözümlenir:
  3. Varsa proje start_date
  4. Aktif kapsam için en erken gömülü operasyon olayı zaman damgası
  5. Aktif kapsam ve kiracı makineleri için en erken alarm zaman damgası
  6. Daha erken sinyal yoksa effective_end_time'a geri dönüş

Kapsam ve bağımsız metrikler

Metrikler döndürülen her seviye için ayrı hesaplanır:

Seviye Dahil edilen olaylar
Proje Proje altındaki tüm üretimler ve aşamalar
Üretim Yalnızca seçilen üretim
Üretim aşaması Yalnızca seçilen aşama

Operasyon olayları eşleşen aşamalardaki gömülü production_stage_operation dizilerinden düzleştirilir. Alarm olayları kiracı makine $in korumasıyla kapsam için yüklenir.

Süre kesme

Tüm süre çıktıları int64 saniyedir. Dönüşüm:

text int64(duration / time.Second)

Kesirli alt saniye artıkları sıfıra doğru kesilir. Kırpılmış aralık hesabı, segmentler aktif pencereyle kesiştikten sonra aynı kuralı uygular.

Operasyon süresi (total_operation_time_seconds)

Kaynak: gömülü production_stage_operation kayıtları (event_case, event_time, makine kimliği).

Makine grubu başına (makine ID, yoksa normalize makine adı):

Olay durumu Etki
operation_start Açık aralık yoksa aktif aralık açar
operation_break Aktif aralığı kapatır
operation_end Aktif aralığı kapatır

Kurallar:

  • Makine başına aynı anda yalnızca bir aktif aralık; zaten aktifken ikinci operation_start yok sayılır
  • İstek anında açık kalan aralıklar operation_break, operation_end veya pencere sonuna kadar açık kalır
  • Her kapatılan segment toplamdan önce pencereye kırpılır

total_operation_time_seconds tüm makine gruplarında toplanır.

Alarm süreleri

Kaynak: alarms belgeleri (event_type, type_code, timestamp, makine kimliği).

Olaylar makine başına gruplanır, (timestamp ASC, _id ASC) ile sıralanır. Hesaplayıcı ayrıca pencere içi başlangıç durumunu kurmak için makine başına effective_start_time öncesindeki en son alarmı yükler.

Durum geçişleri

event_type Sonuç durumu Notlar
start Net operasyon
stop Duruş type_code planlı / plansız / arıza sınıflandırır
reconnecting Aktif durum yok Sıfır süre katkısı. Eski aliaslar (reconnect, re-connect, re_connect, büyük/küçük harf fark etmez) bu kanonik değere normalize edilir.
Diğer / bilinmeyen Aktif durum yok

Duruş sınıflandırması normalize type_code kullanır:

Kanonik type_code Kova
planned planned_stop_time_seconds
unplanned unplanned_stop_time_seconds
failure failure_stop_time_seconds

Pencere içi ardışık olaylar arasında (ve pencere başından sonuna) her durumdaki geçen süre pencereye kırpılır ve şunlara eklenir:

  • net_operation_time_seconds
  • stop_time_seconds (toplam)
  • Eşleşen planlı/plansız/arıza alt kümesi

reconnecting önceki start veya stop aralığını kendi timestamp değerinde kapatır; net veya stop toplamlarına süre eklemez.

Ürün metrikleri (product_metrics)

Kaynak: pencere içi operasyon olaylarına bağlı product_operations girdileri.

Ürün anahtarı başına (product_id tercih, yoksa product_code):

Sayaç Kaynak alan
successful_count success_count
revised_count revise_count
scrap_count fire_count
total_count Üç sayacın toplamı

Negatif kaynak değerleri sıfır kabul edilir. Sonuçlar product_code, ardından product_id ile sıralanır.

Pencere içi ürün operasyonu yoksa product_metrics boş dizi olur.

Sıfır veri davranışı

Proje mevcut ancak pencerede nitelikli operasyon veya alarm olayı yoksa:

  • HTTP 200
  • Tüm süre alanları 0
  • product_metrics [] döner

404 yanıtları yalnızca proje, üretim veya aşama varlığı kiracı için bulunamadığında geçerlidir.

Normalizasyon

event_type, type_code ve operasyon event_case değerleri paylaşılan normalizer'dan geçer (internal/outbound/normalize):

  • Trim, küçük harf, boşluk/tire → alt çizgi
  • Bilinen alias'lar kanonik snake_case biçimlerine eşlenir
  • Alarm event_type kanonik değerleri yalnız start, stop ve reconnecting (reconnect varyasyonları reconnecting'e map edilir)

Bu, kaynak büyük/küçük harfinden bağımsız tutarlı hesaplama ve API çıktısı sağlar.

İlgili indeksler

Alarm okuma performansı migration yönetimli benzersiz olmayan indekslere dayanır:

  • ix_alarms_machine_timestamp_id_desc
  • ix_alarms_project_production_stage_machine_timestamp_id

Bunlar API istekleri sırasında değil, migration CLI ile oluşturulur.