Envelope: Stream Servisi
Topic: qapu.stream
DLQ: qapu.dlq.stream
Producer: stream-service
Stream servisi iki farklı işlev üstlenir: telemetri pipeline'ını ilerletmek (stream.created) ve envanter değişikliklerini audit kayıt olarak bildirmek (device.inventory.*, modem.inventory.*, sim.inventory.*). Tüm bu eventler tek qapu.stream topic'inde taşınır; event türü payload event alanından ayrışır.
Event Envanteri
| Event | Ne zaman üretilir? | Consumer | Amaç |
|---|---|---|---|
stream.created.v1 | Stream kaydı başarıyla oluşturulduğunda | Calibration Servisi | Pipeline'ı bir sonraki aşamaya tetiklemek |
stream.failed.v1 | Stream işlemi teknik hatayla sonlandığında | Observer | Hata görünürlüğü |
stream.message_type.unmapped.v1 | Mesaj tipi sözlükte bulunamadığında | Ops | İnceleme uyarısı |
device.inventory.created.v1 | Yeni cihaz kaydı açıldığında | Audit | Cihaz envanteri audit |
device.inventory.updated.v1 | Cihaz metadata güncellendiğinde | Audit | Cihaz envanteri audit |
modem.inventory.created.v1 | Yeni IMEI kaydı açıldığında | Audit | Modem envanteri audit |
device.modem.changed.v1 | Cihaz-modem ilişkisi değiştiğinde | Audit | Modem bağlantı audit |
sim.inventory.created.v1 | Yeni ICCID kaydı açıldığında | Audit | SIM envanteri audit |
device.sim.changed.v1 | Cihaz-SIM ilişkisi değiştiğinde | Audit | SIM bağlantı audit |
device.firmware.recorded.v1 | Cihaz için ilk firmware bilgisi kaydedildiğinde | Audit | Firmware envanteri audit |
device.firmware.changed.v1 | Firmware versiyonu değiştiğinde | Audit | Firmware güncelleme audit |
stream.created.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.stream |
| Producer | stream-service |
| Consumer | Calibration Servisi |
| Tetikleyici | ingest.accepted.v1 tüketimi sonrası stream kaydı başarıyla açıldığında |
| Kritiklik | Yüksek — kalibrasyon adımını tetikler |
Payload
{
"event": "stream.created.v1",
"meta": {
"schema_version": 1,
"trace_id": "9f3f...",
"producer_service": "stream-service",
"produced_at": "2026-03-11T15:22:08.120Z",
"process_ms": 11
},
"context": {
"device_id": "400000011D081B70",
"raw_id": 12345,
"stream_id": 9823412,
"device_time": "2026-03-11T15:22:06Z",
"stream_time": "2026-03-11T15:22:00.350Z",
"iccid": null,
"imei": null,
"firmware": "2.3.0"
},
"data": {
"current_stage": "streamed",
"state_version": 2
},
"error": null
}
Alan Açıklamaları
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
context.device_id | string | Evet | Cihaz kimliği |
context.stream_id | integer | Evet | Bu akışın benzersiz kimliği |
context.device_time | datetime | Evet | Cihazın ürettiği ölçüm zamanı |
context.stream_time | datetime | Evet | Stream katmanında kaydın açıldığı zaman |
data.current_stage | string | Evet | Sabit: streamed |
data.state_version | integer | Evet | device_buffer güncelleme sürümü |
stream.failed.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.stream |
| Producer | stream-service |
| Consumer | Observer Servisi |
| Kritiklik | Orta — Observer replay kararı verir |
Payload
{
"event": "stream.failed.v1",
"meta": {
"trace_id": "9f3f...",
"producer_service": "stream-service",
"produced_at": "2026-03-11T15:22:08.300Z",
"process_ms": 14
},
"context": {
"device_id": "400000011D081B70",
"stream_id": null
},
"data": {},
"error": {
"code": "STREAM_DB_WRITE_FAILED",
"message": "Unique constraint violation on stream_records",
"stage": "db_write",
"retryable": true
}
}
stream.message_type.unmapped.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.stream |
| Producer | stream-service |
| Consumer | Ops |
| Kritiklik | Düşük — pipeline devam eder, uyarı amaçlı |
Payload
{
"event": "stream.message_type.unmapped.v1",
"meta": {
"schema_version": 1,
"trace_id": "9f3f...",
"producer_service": "stream-service",
"produced_at": "2026-03-11T15:22:08.400Z",
"process_ms": 5
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {
"received_message_type": "0xFF",
"action_taken": "default_mapping_used"
},
"error": null
}
Envanter Audit Eventleri
Aşağıdaki eventler qapu.stream topic'inde taşınır. Hepsi aynı genel yapıyı kullanır; yalnız data bloğu değişir.
Ortak Envelope (Audit Eventleri)
{
"event": "<audit_event>.v1",
"meta": {
"schema_version": 1,
"trace_id": "9f3f...",
"producer_service": "stream-service",
"produced_at": "2026-03-11T15:22:08.200Z",
"process_ms": 6
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"data": {},
"error": null
}
device.inventory.created.v1
"data": {
"new_device_id": "400000011D081B70",
"project_id": 12
}
device.inventory.updated.v1
"data": {
"updated_fields": ["firmware_version", "modem_id"]
}
modem.inventory.created.v1
"data": {
"modem_id": 8012,
"imei": "354723XXXXXXX"
}
device.modem.changed.v1
"data": {
"old_modem_id": 8010,
"new_modem_id": 8012
}
sim.inventory.created.v1
"data": {
"sim_id": 41,
"iccid": "8945001234567890123"
}
device.sim.changed.v1
"data": {
"old_sim_id": 39,
"new_sim_id": 41
}
device.firmware.recorded.v1
"data": {
"firmware_version": "02.04.10",
"recorded_at": "2026-03-11T15:22:08Z"
}
device.firmware.changed.v1
"data": {
"old_firmware_version": "02.04.09",
"new_firmware_version": "02.04.10"
}