Envelope: Synthesis Servisi
Topic: qapu.synthesis
DLQ: qapu.dlq.synthesis
Producer: synthesis-service
Synthesis servisi, segment tablolardaki ham ölçümleri okuyarak fiziksel anlamlı ölçek değerlerine çevirir ve synth tablolara yazar. Başarı durumunda Window servisini tetikler, hata durumunda Observer'ı bilgilendirir.
Event Envanteri
| Event | Ne zaman üretilir? | Consumer | Amaç |
|---|---|---|---|
synth.ready.v1 | Tüm sentez adımları başarıyla tamamlandığında | Window Servisi | Pencere hesabını tetiklemek |
synth.failed.v1 | Herhangi bir sentez adımı hatayla sonlandığında | Observer | Hata görünürlüğü ve replay |
synth.ready.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.synthesis |
| Producer | synthesis-service |
| Consumer | Window Servisi |
| Tetikleyici | raw.persisted.v1 tüketimi sonrası tüm sentez hesapları tamamlandığında |
| Kritiklik | Yüksek — pencere hesabını tetikler |
Payload
{
"event": "synth.ready.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i0",
"producer_service": "synthesis-service",
"produced_at": "2026-03-11T15:22:11.500Z",
"process_ms": 180
},
"context": {
"device_id": "400000011D081B70",
"raw_id": 12345,
"stream_id": 9823412,
"device_time": "2026-03-11T15:22:06Z",
"stream_time": "2026-03-11T15:22:11.600Z",
"iccid": null,
"imei": null,
"firmware": "2.3.0"
},
"data": {
"current_stage": "synthesized",
"state_version": 5,
"synth_rows_written": 48
},
"error": null
}
Alan Açıklamaları
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
data.current_stage | string | Evet | Sabit: synthesized |
data.synth_rows_written | integer | Hayır | Sentez tablosuna yazılan satır sayısı |
synth.failed.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.synthesis |
| Producer | synthesis-service |
| Consumer | Observer Servisi |
| Kritiklik | Yüksek — pencere hesabı bloke olur; Observer replay kararı verir |
Payload
{
"event": "synth.failed.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i1",
"producer_service": "synthesis-service",
"produced_at": "2026-03-11T15:22:11.600Z",
"process_ms": 20
},
"context": {
"device_id": "400000011D081B70",
"raw_id": 12345,
"stream_id": 9823412,
"device_time": "2026-03-11T15:22:06Z",
"stream_time": "2026-03-11T15:22:11Z",
"iccid": null,
"imei": null,
"firmware": null
},
"data": {
"failed_step": "scale_conversion"
},
"error": {
"failed_stage": "synthesis",
"error_code": "SYNTH_SCALE_ERROR",
"error_message": "Calibration coefficient missing for channel CH3",
"failed_at": "2026-03-11T15:22:11Z"
}
}
Alan Açıklamaları
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
context.raw_id | integer | Evet | raw_packets tablosuna yazılan paket kimliği |
context.stream_id | integer | Evet | Stream kaydı kimliği |
context.device_time | datetime | Evet | Cihazın paket üretim zamanı |
context.stream_time | datetime | Evet | Synthesis servisi işlem zamanı |
data.failed_step | string | Evet | Hatanın oluştuğu sentez adımı |
error.failed_stage | string | Evet | Sabit: synthesis |
error.error_code | string | Evet | Hata kodu (SYNTH_SCALE_ERROR vs.) |
error.error_message | string | Evet | İnsan okunur hata açıklaması |
error.failed_at | datetime | Evet | Hata oluşum zamanı |