Envelope: Window Servisi
Topic: qapu.window
DLQ: qapu.dlq.window
Producer: window-service
Window servisi, sentezlenmiş ölçümleri 15 dakikalık saat başı pencerelerine gruplar ve istatistiksel agregasyonları hesaplar. Hesap tamamlandığında Rule servisini tetikler, hata durumunda Observer'ı bilgilendirir.
Event Envanteri
| Event | Ne zaman üretilir? | Consumer | Amaç |
|---|---|---|---|
window.ready.v1 | Tüm pencere hesapları başarıyla tamamlandığında | Rule Servisi | Kural değerlendirmesini tetiklemek |
window.failed.v1 | Herhangi bir pencere hesabı hatayla sonlandığında | Observer | Hata görünürlüğü ve replay |
window.ready.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.window |
| Producer | window-service |
| Consumer | Rule Servisi |
| Tetikleyici | synth.ready.v1 tüketimi — tüm pencere yazımları tamamlandığında |
| Kritiklik | Yüksek — kural değerlendirmesini tetikler |
Payload
{
"event": "window.ready.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i0",
"producer_service": "window-service",
"produced_at": "2026-03-11T15:22:12.300Z",
"process_ms": 220
},
"context": {
"device_id": "400000011D081B70",
"raw_id": 12345,
"stream_id": 9823412,
"device_time": "2026-03-11T15:22:06Z",
"stream_time": "2026-03-11T15:22:12.400Z",
"iccid": null,
"imei": null,
"firmware": "2.3.0"
},
"data": {
"current_stage": "windowed",
"state_version": 6,
"window_slot": "2026-03-11T15:15:00Z",
"window_size_min": 15,
"windows_updated": 2
},
"error": null
}
Alan Açıklamaları
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
data.current_stage | string | Evet | Sabit: windowed |
data.window_slot | string (ISO 8601) | Evet | Pencerenin başlangıç zaman damgası (her zaman 15 dakika başı) |
data.window_size_min | integer | Evet | Pencere büyüklüğü (dakika). Sabit: 15 |
data.windows_updated | integer | Hayır | Bu stream için güncellenen pencere satırı sayısı |
window.failed.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.window |
| Producer | window-service |
| Consumer | Observer Servisi |
| Kritiklik | Yüksek — kural değerlendirmesi tetiklenmez; Observer replay kararı verir |
Payload
{
"event": "window.failed.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i1",
"producer_service": "window-service",
"produced_at": "2026-03-11T15:22:12.400Z",
"process_ms": 18
},
"context": {
"device_id": "400000011D081B70",
"raw_id": 12345,
"stream_id": 9823412,
"device_time": "2026-03-11T15:22:06Z",
"stream_time": "2026-03-11T15:22:12Z",
"iccid": null,
"imei": null,
"firmware": null
},
"data": {
"window_slot": "2026-03-11T15:15:00Z",
"failed_step": "aggregation_write"
},
"error": {
"failed_stage": "window",
"error_code": "WINDOW_DB_TIMEOUT",
"error_message": "Database write timed out after 5000ms",
"failed_at": "2026-03-11T15:22:12Z"
}
}