Skip to main content

Synthesis Event Sozlesmeleri

Bu sayfa Synthesis Servisi tarafindan tuketilen/uretilen eventlerin payload sozlesmelerini, zorunlu alanlarini ve versiyonlama kurallarini toplu olarak verir.

Event Haritasi

EventNe zaman kullanilir?ProducerConsumerAmac
raw.persisted.v1Sentez akisini tetiklemek icin tuketilirRaw Writer ServisiSynthesis ServisiIslenecek stream baglamini almak
synth.ready.v1Sentez hesabi + yazimlar tamamlandiginda uretilirSynthesis ServisiWindow ServisiPencere hesabini tetiklemek
synth.failed.v1Sentez adimi teknik hatayla sonlandiginda uretilirSynthesis ServisiOps/Replay WorkerHata gorunurlugu ve tekrar isleme

Ortak Envelope

Synthesis eventleri asagidaki ortak zarf yapisini kullanir:

{
"event": "<name>.v1",
"meta": {
"schema_version": 1,
"trace_id": "9f3f...",
"producer_service": "synthesis-service",
"produced_at": "2026-04-12T09:10:11.102Z",
"process_ms": 22
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412,
"device_time": "2026-04-12T09:10:08Z",
"stream_time": "2026-04-12T09:10:11Z"
},
"data": {},
"error": null
}

Alan notlari:

  • meta.process_ms: Synthesis servisinin bu event icin uctan uca islem suresi (ms).
  • context.device_time: Cihazin olcum zaman damgasi.
  • context.stream_time: Stream katmaninda kaydin acildigi sistem zamani.
Observability Ownership

Bu dokuman, Synthesis event kontratini ve SLI alanlarini tanimlar. Sayisal SLO/SLA hedefleri ile alarm esikleri Observer Servisi tarafinda yonetilir.

Detaylar icin Observer Servisi sayfasina bakiniz.

Input Event

raw.persisted.v1

Synthesis servisi bu eventi tetikleyici olarak tuketir.

AlanTipZorunluAciklama
eventstringEvetSabit deger: raw.persisted.v1
meta.schema_versionintegerEvetEvent sema surumu
meta.trace_idstringEvetDagitik izleme kimligi
meta.producer_servicestringEvetBeklenen deger: raw-writer-service
meta.produced_atdatetimeEvetEvent uretim zamani
context.device_idstringEvetCihaz kimligi
context.stream_idintegerEvetIslenecek stream kaydi
context.device_timedatetimeEvetCihaz zamani
context.stream_timedatetimeEvetStream zamani

synth.ready.v1

Sentez hesabi tamamlanip Redis synthesis ve sentez tablolari basariyla guncellendiginde uretilir.

Alanlar

AlanTipZorunluAciklama
eventstringEvetSabit deger: synth.ready.v1
meta.schema_versionintegerEvetEvent sema surumu
meta.trace_idstringEvetDagitik izleme kimligi
meta.producer_servicestringEvetSabit deger: synthesis-service
meta.produced_atdatetimeEvetEvent uretim zamani
meta.process_msintegerEvetIslem suresi (ms)
context.device_idstringEvetCihaz kimligi
context.stream_idintegerEvetStream kaydi kimligi
context.device_timedatetimeEvetCihaz zamani
context.stream_timedatetimeEvetStream zamani
data.rule_versionstringHayirKullanilan kural snapshot versiyonu
data.written_tables[]string[]EvetYazilan sentez tablolari
data.redis_patch_appliedbooleanEvetsynthesis patch basari durumu
errornullEvetBasari eventinde daima null

Ornek

{
"event": "synth.ready.v1",
"meta": {
"schema_version": 1,
"trace_id": "9f3f...",
"producer_service": "synthesis-service",
"produced_at": "2026-04-12T09:10:11.182Z",
"process_ms": 22
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412,
"device_time": "2026-04-12T09:10:08Z",
"stream_time": "2026-04-12T09:10:11Z"
},
"data": {
"rule_version": "ruleset-2026.04.10",
"written_tables": [
"synthesis_voltage",
"synthesis_current",
"synthesis_power",
"synthesis_energy"
],
"redis_patch_applied": true
},
"error": null
}

synth.failed.v1

Sentez adimi teknik nedenle tamamlanamadiginda uretilir.

Alanlar

AlanTipZorunluAciklama
eventstringEvetSabit deger: synth.failed.v1
meta.schema_versionintegerEvetEvent sema surumu
meta.trace_idstringEvetDagitik izleme kimligi
meta.producer_servicestringEvetSabit deger: synthesis-service
meta.produced_atdatetimeEvetEvent uretim zamani
meta.process_msintegerEvetHatanin olustugu ana kadar gecen sure
context.device_idstringEvetCihaz kimligi
context.stream_idintegerEvetStream kaydi kimligi
error.failed_stagestringEvetPipeline asamasi (input_resolution, rule_resolution, persist, publish)
error.error_codestringEvetMakine okunur hata kodu
error.error_messagestringEvetInsan okunur hata aciklamasi
error.retryablebooleanEvetYeniden denenebilirlik bilgisi
error.failed_atdatetimeEvetHata olusum zamani

Ornek

{
"event": "synth.failed.v1",
"meta": {
"schema_version": 1,
"trace_id": "9f3f...",
"producer_service": "synthesis-service",
"produced_at": "2026-04-12T09:10:11.191Z",
"process_ms": 24
},
"context": {
"device_id": "400000011D081B70",
"stream_id": 9823412
},
"error": {
"failed_stage": "rule_resolution",
"error_code": "RULE_NOT_FOUND",
"error_message": "No active synthesis rule found for stream_id=9823412",
"retryable": false,
"failed_at": "2026-04-12T09:10:11Z"
}
}

Zorunlu Alan Dogrulama Kurallari

Synthesis servisinde event kabul/uretimi asamasinda asagidaki kontroller uygulanir:

KuralUygulama
event bos olamazBos/yanlis event adinda event reddedilir
meta.schema_version zorunluDesteklenmeyen versiyonlarda synth.failed.v1 (UNSUPPORTED_SCHEMA_VERSION)
meta.trace_id zorunluYoksa yeni trace_id uretilir ve warning log atilir
context.device_id zorunluYoksa islem durur (DEVICE_ID_MISSING)
context.stream_id zorunluYoksa islem durur (STREAM_ID_MISSING)
synth.ready.v1 icin error=nullAksi durumda payload gecersiz sayilir
synth.failed.v1 icin error.* zorunluerror_code/error_message/retryable/failed_stage eksik olamaz

Versiyonlama ve Geriye Donuk Uyumluluk

  • Bu dokumanda aktif surum v1 ve meta.schema_version=1 kabul edilir.
  • Geriye donuk uyumlu degisiklikler (optional alan ekleme) mevcut v1 altinda yapilir.
  • Geriye donuk uyumsuz degisikliklerde yeni event surumu acilir (synth.ready.v2, synth.failed.v2).
  • Tuketici servisler en az bir gecis periyodu boyunca v1 + v2 birlikte dinlemelidir.
  • Surum gecislerinde producer tarafinda cift yayin (dual publish) ve kontrat testi zorunludur.

Hata Kodlari Referansi

Aşağıdaki hata kodları synth.failed.v1 içinde kullanılabilir:

  • STREAM_ID_MISSING
  • DEVICE_ID_MISSING
  • INPUT_SET_INCOMPLETE
  • RULE_NOT_FOUND
  • SYNTHESIS_WRITE_FAILED
  • UNSUPPORTED_SCHEMA_VERSION
  • UNEXPECTED