Qapu AI Memory
Bu dosya, project-qapu icindeki kararlarin, servis varsayimlarinin ve acik islerin kaybolmamasini saglamak icin tutulur.
Kullanım Kurali
- Her calisma sonunda "Bugun Alinan Kararlar" bolumu guncellenir.
- Her yeni iste once bu dosya okunur.
- Kesinlesen kararlar kisa ve net yazilir.
- Gecici fikirler "Acik Konular" bolumune yazilir.
- Her buyuk degisiklikte "Sistem Envanteri" bolumu da guncellenir.
Dokumantasyon Stili (Merkezi Kurallar)
Bu baslik, project-qapu altindaki dokuman yazim stilinin tek kaynak referansidir.
- Servis
index.mdxsayfalari davranis, sinir ve akis odakli yazilir. - Tablo kolon detayi servis index sayfalarinda verilmez; yalniz data-model sayfalarinda tutulur.
- Servis index'te tablolar icin sadece "Ilgili Veri Modeli" referans linkleri verilir.
- Link patikalari
/projects/qapu/...route base'i ile yazilir ve kirik linke izin verilmez. - Topic (tasima kanali) ve event (payload semasi) ayrimi acik tutulur.
- Servis dokuman seti mumkun oldugunda standart parcali yapida tutulur:
index.mdxflow-chart.mdxevent-contracts.mdxdata-layer-write-order-chart.mdxfaq.mdx
- Docusaurus uyumlu admonition yazimi kullanilir (
:::info[Baslik]formu). - Ayni kural birden fazla memory dosyasina dagitilmaz; stil guncellemeleri bu baslikta yapilir.
Qapu Genel Haritasi
Servis Gruplari
- Core Data Pipeline: redis, ingest, stream, calibration, raw-writer, synthesis, window
- Decision and Execution: rule, action, communication
- Platform and Integration: api, automation, egress, fota
- Observability and Trust: observer, heartbeat, ledger, kafka
Data Model Domain Aileleri
- kullanici-ve-yetki
- mesajlasma-ve-bildirim
- adres-ve-konum
- sozluk
- altyapi
- cihaz-ve-detay
- log
- iot-altyapi
- iot-iletisim
- telemetri-ve-olcum
- kural-ve-aksiyon
- finans-uygulamasi
- not-uygulamasi
Sistem Envanteri (Geriye Donuk)
Servisler
services/redis: Pipeline state ve buffer sozlesmesiservices/ingest: Cihaz paket girisi ve zincir tetiklemeservices/stream: Parca birlestirme / finalizeservices/calibration: Kalibrasyon uygulama katmaniservices/raw-writer: Ham segment yazimiservices/synthesis: Turetilmis metrik hesaplamaservices/window: Zaman penceresi hesaplariservices/rule: Kural degerlendirme ve trigger/resetservices/action: Aksiyon icrasiservices/communication: Cihaz komut iletimiservices/api: Mobil/Admin API katmaniservices/automation: Zamanlanmis gorev ve komut talebiservices/egress: Dis sistem aktarimiservices/ftp(slug fota): Firmware dagitim katmaniservices/observer: Hata/lag/retry gozlemiservices/heartbeat: SIM merkezli canlilik takibiservices/ledger: Cihaz bazli hash-zincirli denetim kaydi
Heartbeat Dokuman Seti
services/heartbeat/index.mdxservices/heartbeat/flow-chart.mdxservices/heartbeat/data-layer-write-order-chart.mdxservices/heartbeat/event-contracts.mdxservices/heartbeat/faq.mdx
Bugun Alinan Kararlar
2026-04-14
- Data model icin ayri hafiza karti acildi:
project-qapu/data-model/AI_MEMORY.md. - Variable structure icin ayri hafiza karti acildi:
project-qapu/variable-structure/AI_MEMORY.md. - Blockchain servisi Ledger olarak yeniden adlandirildi:
services/ledger. - Ledger modeli netlesti: per-device hash zinciri
ledger_transactionstablosunda tutulacak. - Ledger payload karari: ingest sonrasi CPS normalize snapshot saklanacak; base + synthesis + window bloklari dahil olabilir.
- Ledger tetikleme noktasi netlesti:
window.ready.v1sonrasi asenkron/eszamanli islenecek. - Ledger dokuman seti olusturuldu:
services/ledger/index.mdxservices/ledger/flow-chart.mdxservices/ledger/error-flow-chart.mdxservices/ledger/data-layer-write-order-chart.mdxservices/ledger/event-contracts.mdxservices/ledger/faq.mdx
- Ledger event adlari netlesti:
ledger.committed.v1,ledger.failed.v1. - Communication servisinin giris kaynaklari netlesti: Action Executor (
action.execute.requested.v1), Automation (automation.command.requested.v1) ve API (api.command.requested.v1). - Communication komutlari her kaynaktan gelse de tek komut sozlugu
device_commandsuzerinden cozulur. - Heartbeat servisi SIM merkezli modele cevrildi.
- Heartbeat hedef secimi:
sim.simsicindestatus='active'vestatic_ip IS NOT NULLkayitlari. - Heartbeat yazim modeli:
- Tum denemeler
sim.heartbeatstablosuna yazilir. - Son durum ozeti
sim.connectivity_statetablosuna upsert edilir.
- Tum denemeler
- Heartbeat dokuman seti tamamlandi:
services/heartbeat/index.mdxservices/heartbeat/flow-chart.mdxservices/heartbeat/data-layer-write-order-chart.mdxservices/heartbeat/event-contracts.mdxservices/heartbeat/faq.mdx
- MQTT konusu icin karar:
- Mevcut ingest'e direkt gommek yerine ileride ayri bir
mqtt-ingestservisi dusunulecek.
- Mevcut ingest'e direkt gommek yerine ileride ayri bir
- Automation, Communication, Action, Egress ve Ledger index sayfalari stil kurallarina uygun sekilde sadelelestirildi.
2026-04-15
device_commandstablosunais_system_onlyalani eklendi (DEFAULT: false).- Bu alan ile komutlarin API/kullanici kaynakli mi yoksa sadece sistem kaynakli mi calisabilecegi veri modelinden yonetilecek.
- Kural netlestirildi: API kaynakli komut taleplerinde
is_system_only=truekayitlar reddedilir; Automation/Action/internal akislar kullanabilir. - Sistem kaynakli islemler icin
user_id=0rezerv sistem kullanicisi kullanilacak;user_id=nulldeseni otomasyon tarafinda kaldirildi. - Egress servisi kapsamı netlesti: kurumsal musteri talepleri icin Qapu verisinin CRM/ERP/SCADA gibi dis sistemlere policy bazli aktarimi.
- Egress tetikleme kaynagi olarak
window.ready.v1ve otomasyon olaylari (requested/completed/failed) benimsendi. - Egress payload'inin tek global formatta sabitlenmeyecegi; partner/policy bazli transform modeli uygulanacagi netlesti.
- Egress hata politikasinda retry + DLQ + opsiyonel ilgili birime bildirim aksiyonu yaklasimi benimsendi.
- Egress data-model yapisi
iot-iletisimaltinda netlestirildi: policy tanimlariegress_policies, delivery deneme/sonuc kayitlariegress_deliveriestablosunda tutulacak. - Egress topic standardi sadelelestirildi: cikis eventleri tek ana topic
qapu.egress.eventsicinde tasinacak;qapu.dlq.egressyalniz DLQ icin ayrik kalacak. - Kafka servisinde topic kurgusu icin merkezi referans olusturuldu:
services/kafka/topic-standard(servis bazli tek ana topic + servis DLQ modeli). qapu.egress.eventsadiqapu.egressolarak guncellendi; tum servisler icin.eventssuffix kullanilmaz.- Kafka topic-standard dokumani tamamlandi ve production referans kalitesine ulasti (9.5/10).
- Topic modeli kesinlesti:
qapu.<service>(ana) +qapu.dlq.<service>(DLQ). Event turu topic adinda degil, payloadeventalaninda farklilasir. - Shared topicler netlesti:
qapu.system.audit,qapu.system.alerts,qapu.integration.events,qapu.log.error,qapu.log.event. - DLQ+Log hibrit politikasi: per-servis DLQ replay/izolasyon icin;
qapu.log.errormerkezi gozlem icin (replay kaynagi degildir). - Retention sureleri standartlastirildi: ana=7g, DLQ=30g, log.error=14g, log.event=7g.
- Compact topic politikasi: servis ana topiclerinde yasak; yalniz "son durum" senaryolari icin ve architecture review ile acilabilir.
- Consumer Group formati:
cg.qapu.<service>; rol farki icin suffix:cg.qapu.egress.dispatch. - Consumer lag mudahale sirasi: once consumer scale-out, sonra partition artisi (rebalance planli yapilmali).
- PENDING: tum diger servis dokumanlari yeni
qapu.<service>topic modeline gore capraz guncellenmeli. schema_versionalanı meta içinden kaldırıldı — event adındaki.vNyeterli; payload değişim breaking change ise event adınıv2yapar (producers her ikisini taşıyabilir).- Event envelope yapısı kesinleşti:
event,meta(trace_id, producer_service, produced_at, process_ms),context,data,error. trace_idUUID v7 format olarak standardize edildi. Ingest servisi oluşturur; downstream pass-through yapar. Config-driven eventlerde (rule.completed) yeni trace_id üretilir.- Envelope kataloğu tamamlandı:
services/kafka/envelope/index.mdx(global standart, 41-event katalog) + 14 servis sayfası (ingest, stream, calibration, raw-writer, synthesis, window, rule, action, communication, automation, heartbeat, ledger, egress, fota). - Her servis envelope sayfası: Topic + DLQ, Her event için özet tablosu (topic, producer, consumer, kritiklik), JSON payload örneği, alan açıklamaları.
- ingest.mdx tamamen yeniden yazıldı: 2 event → 4 event (accepted, failed, duplicate_detected, stuck_detected). Hata detayları eklendi (HTTP status, error codes: PARSE_ERROR, SCHEMA_VALIDATION_ERROR, AUTHENTICATION_ERROR, RAW_STORAGE_ERROR, REDIS_ERROR, PAYLOAD_SIZE_ERROR; retryable flag). Context standardizasyonu tamamlandı (8-field schema). Event adı
device.ingest_duplicate_detected.v1→ingest.duplicate_detected.v1düzeltildi (device.* inventory events için ayrılmış). Message_type örneği "timed" ile standardize edildi.
2026-04-15 (Devamı) — Merkezi Envelope Konsolidasyonu
- Servis Index Dosyaları Güncelleme: Tüm 14 servis index sayfası (ingest, stream, calibration, raw-writer, synthesis, window, rule, action, communication, automation, heartbeat, ledger, egress) merkezi
services/kafka/envelope/linklerine yönlendirildi.- Her servis index'inde "Event Envelopeları" veya "Event Detayları" info bloku güncellenmiştir.
- Örnek format:
:::info[{SERVICE} Event Envelopeları] ... sayfasına bakınız. **[{SERVICE} Event Envelopeları](/projects/qapu/services/kafka/envelope/{service})** - Türkçe karakter kuralları (Sözleşmeleri → Envelopeları) uygulandı.
- Service-Level Event-Contracts Deprecation Planning:
- 11 servisin
event-contracts.mdxdosyası (services/{service}/event-contracts.mdx):- stream, calibration, raw-writer, synthesis, window, communication, automation, heartbeat, ledger, egress
- 1 servisin
events.mdxdosyası: rule - Şimdi merkezi
kafka/envelope/directory'de definitive hale gelmiştir. - Sonraki adım: Service-level event-contracts dosyalarını deprecation mesajıyla birlikte silmek veya archive etmek.
- 11 servisin
- FOTA Servisi Notu:
services/fota/index.mdxdosyası bulunmadığından güncellenmemiştir. FOTA (firmware OTA) servisi var ancak docusaurus index sayfası henüz oluşturulmamıştır.
kafka.mdx Senkronizasyon ve Güncelleme (2026-04-15):
- ✅ Event Envelope Standardında
schema_versionkaldırıldı; UUID v7 format belirtildi - ✅ Context alanları 8-field standardına tamamlandı: device_id, raw_id, stream_id, device_time, stream_time, iccid, imei, firmware
- ✅ Akış Özeti güncellenmiş topic adları (qapu.ingest, qapu.stream, vs., .raw/.ready suffixleri kaldırıldı)
- ✅ Producer/Consumer Matrisi genişletildi: 14 topic + event adları; ingest 4 event mukayyedesi
- ✅ Tüm örnek payloadlar güncellenmiş:
- Ingest: 4 event örneği (accepted, failed, duplicate_detected, stuck_detected)
- Stream, Calibration, Raw Writer, Synthesis, Window: Context tamamlandı, schema_version kaldırıldı
- Failed Event Standard: Context tamamlandı, schema_version kaldırıldı
- ✅ Topic adlandırması standardizasyonu:
qapu.<service>(no .raw/.ready/.failed suffix) model uygulandı - ✅ Envelope-Kafka senkronizasyonu tamamlandı: her iki dokü tutarlı Observer Envelope Dosyası Oluşturma (2026-04-15 Devamı):
- ✅
services/kafka/envelope/observer.mdxoluşturuldu: 5 event (buffer.duplicate, buffer.replaced, retry.requested, escalated, completed) - ✅ Observer Event Envelopeları index'e eklendi
- ✅ Observer index.mdx güncellendi: merkezi envelope linkine yönlendirildi
- ✅ Kafka Envelope toplam: 15 dosya (index + 14 servis + observer = 15 servis sayfası)
Geriye Donuk Stabil Kararlar
- Qapu servisleri event tabanli zincirle ilerler; topic/event ayrimi korunur.
- Link yapilarinda route base daima
/projects/qapu/...ile verilmelidir. - Broken link olusmamasi icin servisler arasi referanslar slug bazli dogrulanir.
- Yazi stili kurallari icin bu dosyadaki "Dokumantasyon Stili" basligi esas alinir.
Servis Notlari
Servis Bazli Ozet (2026-04-14)
ingest: CPS paket giris noktasi; CRC/duplicate kontrolu yapar, raw kayit olusturur ve pipeline'i tetikler.stream:stream_idureterek akisi kimliklendirir; IMEI/ICCID/firmware envanterini senkronize eder.calibration: Ham olcumu kalibrasyon profiline gore normalize eder; cihaz profili global profile ustundur.raw-writer: Kalibre olcumleri segment tablolara idempotent yazar; sentez yapmaz.synthesis: Turetilmis metrikleri hesaplar; Redis buffer + typed sentez tablolarina yazar.window:1D/1W/1Mpencere hesaplarini yapar;1Dincremental,1W/1Mdonem sonu rollup.rule: Kural gruplarini (all/any/not) degerlendirir; trigger/reset eventleri uretir.action: Rule ciktisini kanal bazli aksiyona cevirir (push/email/webhook vb.); retry + DLQ uygular.communication: Action Executor, Automation veya API kaynakli downlink komutlarini cihaza iletir; ACK/NACK, timeout ve idempotency yonetir.automation: Zamanlanmis/manuel gorev tetikler; cakisma kontrolu ve at-least-once scheduling uygular.heartbeat: Sabit IP'li aktif SIM'lere ping atar;sim.heartbeats+sim.connectivity_stateuzerinden canlilik tutar.egress: Veriyi dis sistemlere policy tabanli aktarir; transform, retry ve DLQ yonetir.fota(services/ftp): Telit modemler icin FTP tabanli firmware dagitimi yapar.observer: Stage bazli hata/lag/retry takibi yapar; pipeline saglik izleme ve replay orkestrasyonu saglar.ledger: Cihaz bazli hash-zincirli denetim kaydi olusturur.redis: Pipeline ortak state katmanidir;device_buffersozlesmesi servisler arasi ownership sinirini belirler.kafka: Servisler arasi event tasima omurgasidir; partition key genel olarakdevice_idbazlidir.
Servis Kritik Sinirlar
- Ana hat sirali event zinciri: ingest -> stream -> calibration -> raw-writer -> synthesis -> window -> rule -> action/communication.
- Yan prosesler: heartbeat, egress, observer, ledger.
- Topic (tasima kanali) ile event (payload sozlesmesi) ayrimi korunur.
- Kalici dogru kaynak DB'dir; Redis hizli state/ara katmandir.
Ingest (Detay Hafiza Karti)
- Ana amac: Cihazdan gelen CPS uyumlu paketi hizli kabul etmek, kalici raw kayit + canonical Redis state yazip pipeline'i tetiklemek.
- Protokol: HTTP girisi; cihazi bekletmeden kabul zinciri tamamlanirsa
200 OK. - Ingest ne yapar:
- Parse + CPS schema dogrulama
- DS28C
device_idkontrolu (uzunluk, CRC8, family code) - Duplicate kontrolu
- Raw payload'i DB'ye yazma
- Canonical normalize state'i Redis
device_buffer:{device_id}altina yazma - Kafka tetikleyici event uretme
- Ingest ne yapmaz:
- Sentez/window/rule hesabi
- Business tablo hesaplari
- Veri ayrimi karari:
- DB: wire/raw payload (audit, replay, inceleme)
- Redis: canonical isleme state'i
- Ana tetikleyici event:
ingest.accepted.v1(topic:qapu.ingest.raw) - Hata eventi:
ingest.failed.v1(topic:qapu.ingest.failed) - Uyari eventleri: duplicate/stuck/flood tespitleri (
qapu.ingest.warning) - Bilinen hata siniflari:
PARSE_ERRORSCHEMA_VALIDATION_ERRORAUTHENTICATION_ERRORRAW_STORAGE_ERRORREDIS_ERRORPAYLOAD_SIZE_ERROR
- Kritik bagimliliklar:
services/redis/device-buffer-contractdata-model/tables/telemetri-ve-olcum/raw_datavariable-structure/cps
- Ownership siniri: Ingest device buffer'i baslatir; downstream servisler kendi stage alanlarini yazar.
- Operasyon notu: Kafka full payload tasimaz; downstream veri kaynagi Redis
device_bufferolur.
Stream (Detay Hafiza Karti)
- Ana amac:
qapu.ingest.raweventinden sonra envanter kontrolu yapipstreamskaydi acmak vestream_iduretmek. - Ne yapar:
- Redis
device_bufferstate'ini okur. devices/modems/sims/firmwaresenvanterini kontrol eder, degisim varsa gunceller.streamstablosuna insert eder,stream_id'yi Redis'e write-back yapar.- Basarida
stream.created.v1, hatadastream.failed.v1uretir.
- Redis
- Kritik kurallar:
- Duplicate kontrolu Stream'de degil, Ingest'tedir.
message_typepakette yoksa reject edilmez; var ama sozlukte yoksamessage_type_id=null+ inceleme eventi.stream_idDB sequence ile uretilir.
- Audit eventleri:
device.inventory.created/updated.v1modem.inventory.created.v1,device.modem.changed.v1sim.inventory.created.v1,device.sim.changed.v1device.firmware.recorded/changed.v1
- Kritik bagimliliklar:
data-model/tables/telemetri-ve-olcum/streamsdata-model/tables/cihaz-ve-detay/devices,firmwaresdata-model/tables/iot-altyapi/modems,sims,sim_assignments
Calibration (Detay Hafiza Karti)
- Ana amac:
stream.created.v1sonrasinda ham olcumleri CT + kalibrasyon kurallariyla normalize etmek. - Ne yapar:
- CT ratio cozer (
device detailRedis -> DB fallback). - Kural cozer (cihaz ozel -> global fallback).
- Degisken bazli
value_ct * gain + offsetuygular. - Sonucu Redis
buffers.measurementsalanina in-place yazar. - Basarida
calibration.ready.v1, hatadacalibration.failed.v1uretir.
- CT ratio cozer (
- Kritik kurallar:
- Kural yoksa degisken pas gecilir.
- CT donusumu once, diger kalibrasyonlar sonra uygulanir.
- Kural secimi deterministic:
priority ASC, esitlikteupdate_timeen yeni. ct_ratiobulunamazsact_ratio=1fallback ile devam.
- Kritik bagimliliklar:
data-model/tables/telemetri-ve-olcum/calibration_profilesdata-model/tables/telemetri-ve-olcum/calibration_assignments
Raw Writer (Detay Hafiza Karti)
- Ana amac:
calibration.ready.v1sonrasinda kalibre/pass-through olcumleri ham segment tablolara kalici yazmak. - Ne yapar:
- Redis
buffers.measurementsverisini segmentlere dagitir. - Voltage/current/power/energy + device/register/environment/water/location tablolarina yazar.
- Segment disi skalar alanlari generic
measurementstablosuna yazar. - Basarida
raw.persisted.v1, hatadaraw.failed.v1uretir.
- Redis
- Kritik kurallar:
- Yazim anahtari
stream_id(idempotent upsert). - Transaction modeli all-or-nothing (segment yazimlari toplu commit/rollback).
- Sentez katmani yalniz
raw.persisted.v1ile ilerler.
- Yazim anahtari
- Kritik bagimliliklar:
data-model/tables/telemetri-ve-olcum/measurements_*data-model/tables/telemetri-ve-olcum/measurements
Sentez / Synthesis (Detay Hafiza Karti)
- Ana amac:
raw.persisted.v1sonrasinda turetilmis metrikleri hesaplayip Redis + synthesis tablolara yazmak. - Ne yapar:
- Redis
device_bufferokur; eksikse DB fallback ile girdiyi tamamlar. - Sentez kural snapshot cozer (cihaz ozel -> global).
- Kurallari deterministic sirada calistirir.
buffers.synthesispatch yazar ve typed synthesis tablolarina upsert eder.- Basarida
synth.ready.v1, hatadasynth.failed.v1uretir.
- Redis
- Kritik kurallar:
stream_ididempotency anahtaridir.synth.ready.v1sadece tum hedef tablo yazimlari tamamlaninca uretilir.- Retry/DLQ ayrimi
retryablekararina gore yapilir.
- Kritik bagimliliklar:
data-model/tables/telemetri-ve-olcum/synthesis_voltage/current/power/energydata-model/tables/telemetri-ve-olcum/synthesis_rules,synthesis_assignments
Window / Windows (Detay Hafiza Karti)
- Ana amac:
synth.ready.v1sonrasinda zaman pencerelerini (1D/1W/1M) guncellemek ve finalize etmek. - Ne yapar:
- Redis
synthesisagirlikli girdi okur; eksikse DB fallback kullanir. windows_1dincremental yazar.- Donem kapanisinda
windows_1dfinalize eder,1W/1Mrollup yazar. - Basarida
window.ready.v1, hatadawindow.failed.v1uretir.
- Redis
- Kritik kurallar:
- Grid hizalama zorunlu (
WINDOW_GRID_MISALIGNEDreddi). - Saatlik pencere uretilmez; minimum granulerlik 1D.
finalized=truepencere normal worker tarafinda degistirilmez; replay akisinda kontrollu guncellenir.
- Grid hizalama zorunlu (
Rule (Detay Hafiza Karti)
- Ana amac:
window.ready.v1sonrasinda kural gruplarini degerlendirip trigger/reset ve aksiyon cikisi uretmek. - Ne yapar:
- Device buffer + Redis rule cache + DB fallback ile kural baglamini toplar.
- Grup ve kural priority'sine gore degerlendirme yapar.
multi_trigger,cooldown,notify_on_resetdavranislarini uygular.device_rule_stategunceller,rule_eventsappend eder.- Action Executor'a olay/aksiyon gonderir.
- Kritik kurallar:
- Match tipi:
all/any/not. - Duration counter Redis'te tutulur.
- Publish gating kaynagi
measurements_register.publishalanidir.
- Match tipi:
- Kritik bagimliliklar:
data-model/tables/kural-ve-aksiyon/*data-model/tables/telemetri-ve-olcum/measurements_register
Observer (Detay Hafiza Karti)
- Ana amac:
ingest.accepted.v1ile baslayan akisi disaridan izlemek; takilma/hata durumunda stage bazli kontrollu retry yapmak. - Ne yapar:
- Stage success/failed eventlerini dinler.
- Akisin kaldigi stage'i takip eder, basi degil kaldigi yerden retry ister.
- Basarili bitiste performans metriklerini kaydeder.
completedveyapermanent_faileddurumdadevice_buffertemizler.
- Kritik kurallar:
- Hardcoded max retry:
3. - Consumer group izolasyonu:
cg.qapu.observer. - Yeni stream geldiginde eski in-progress buffer stale ise replace edilebilir.
- Rule asamasinda no-trigger da basarili terminal durum kabul edilir.
- Hardcoded max retry:
- Kritik bagimliliklar:
data-model/tables/log/observer_pipeline_runs(onerilen performans tablosu)- Tum stage event kontratlari ve retry topicleri
Heartbeat
- Durum modeli:
online,degraded,offline. - Onerilen esikler:
heartbeat_period_ms = 60000degraded_rtt_ms = 1500offline_timeout_ms = 5000offline_consecutive_fail_count = 3
Ingest / MQTT (Backlog)
- MQTT cihazlari icin liveness takibi ping yerine broker tabanli sinyallerle yapilabilir:
- Keepalive
- LWT
- App heartbeat topic
- Olası mimari:
mqtt-ingest-> normalize -> Kafka (mevcut ingest event kontrati ile uyumlu).
Rule / Data Model Linkleri
- Rule servisinde data-model linkleri
/projects/qapu/data-model/...prefix'i ile kullanilir. measurement_registerkanonik yolu:telemetri-ve-olcum/measurements_register.
Acik Konular
sim.simsdokumanindastatic_ipkolonu resmi olarak eklenmeli mi?- Heartbeat alarm esikleri ortama gore farklilastirilacak mi?
sim_assignmentsfiltrelemesi heartbeat seciminde zorunlu olacak mi?
Sonraki Adimlar
project-qapu/data-model/tables/iot-altyapi/sims.mdxdosyasinastatic_ipkolonunu dokumante et.- Heartbeat event kontratlarini Observer ile capraz kontrol et.
- Gerekirse
mqtt-ingesticin ayri servis taslak sayfasi ac. - Data-model degisikligi yapildiginda
project-qapu/data-model/AI_MEMORY.mddosyasini da guncelle. - Variable-structure degisikligi yapildiginda
project-qapu/variable-structure/AI_MEMORY.mddosyasini da guncelle.
Guncelleme Protokolu
- Her yeni oturumda ilk adim: bu dosyanin tamamini oku.
- Her biten iste su 3 satiri ekle:
- Ne degisti?
- Neden degisti?
- Sonraki en dogru adim ne?
- Karar geri alinmissa ilgili satiri silme; ustune "geri alindi" notu dus.