Skip to main content

Qapu Data Model AI Memory

Bu dosya, Qapu data model kararlarini kalici tutmak icin kullanilir. Amac: AI'nin ertesi gun iliski yapisini, migration politikasini ve operasyon kurallarini kaybetmeden devam etmesi.

Hizli Kural Seti

  • Bu dosya, data-model degisikliginden once okunur.
  • Data-model degisikligi bittiginde bu dosya guncellenir.
  • Karar satirlari kisa, teknik ve dogrulanabilir yazilir.
  • Eski karar silinmez; gerekirse "geri alindi" notu dusulur.
  • Genel dokumantasyon stili icin merkez referans: project-qapu/AI_MEMORY.md -> Dokumantasyon Stili (Merkezi Kurallar).

Teknoloji ve Arac Kararlari

  • Veritabani: PostgreSQL (ana kaynak dogru veri kati).
  • Komut satiri istemcisi: psql kullanilir.
  • Migration kosumlari deterministic sirayla calisir; immutable migration + checksum + global lock zorunludur.
  • Schema fingerprint kontrolu release dogrulamasi icin kullanilir.

Migration Omurgasi (Kilit Kurallar)

  • Dosya formati: VYYYYMMDDHHMMSS__kisa-aciklama.sql
  • Faz sirasi: TYPES -> REF -> CORE -> REL -> CONSTRAINT -> INDEX -> BACKFILL -> VIEW_TRG_JOB -> GRANT
  • Meta tablolar: schema_migrations, migration_lock
  • CI gate: replay + checksum + fingerprint pass olmadan merge yok

Data Model Domain Haritasi

  • 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

Telemetri Omurgasi (Ne Nerede)

Temel akis:

  1. raw_data: ingress journal (accepted olmayanlar dahil)
  2. streams: accepted telemetry omurgasi (stream_id uretimi)
  3. measurements_*: typed segment tablolari (voltage/current/power/energy/device/register/environment/water/location)
  4. measurements: generic scalar fallback
  5. state: son canli cihaz projeksiyonu (runtime state)
  6. ledger_transactions: best-effort integrity trail

Iliski Omurgasi (Nasil Bagli)

  • raw_data -> streams: streams.raw_id referansi, raw temizlense stream tarihcesi korunur (SET NULL).
  • streams -> measurements*: stream silinirse olcum cocuklari birlikte temizlenir (CASCADE).
  • streams -> rule_events/logs: olay/log tarihcesi korunur, stream referansi bosalabilir (SET NULL).
  • streams.device_id -> devices.id: fiziksel cihaz silmeyi korumak icin RESTRICT.

Partition ve Retention Politikalari

  • streams tablosu stream_time bazli aylik partition modelinde calisir (yyyy_mm) ve bu kural migration ile zorunludur.
  • streams retention penceresi 24 aydir.
  • raw_data retention, streams retention penceresiyle uyumlu planlanir.
  • Telemetri katmani buyudukce partition-first yaklasim korunur; zaman bazli yuksek hacimli tablolar icin partition kararini migration oncesi netlestirmek zorunludur.

Ingest Kabul Kontrati (DB Perspektifi)

  • Duplicate identity: device_id + device_time + canonical_payload_hash
  • Duplicate durumunda raw_data kaydi kalir, streams olusmaz.
  • Accepted transaction boundary: streams + measurements + state + raw_data.stream_id birlikte degerlendirilir.
  • Ledger yazimi best-effort oldugu icin accepted akisi geri almaz.

Ledger Kontrati (DB Perspektifi)

  • Servis adi: ledger (eski blockchain adlandirmasi kaldirildi).
  • Truth source tablo: ledger_transactions.
  • Zincir modeli: cihaz bazli (device_id) hash-zinciri.
  • Tekillik kurallari korunur:
    • (device_id, stream_id)
    • payload_hash
    • transaction_hash
  • Payload kaydi zorunlu: ingest sonrasi CPS normalize snapshot tabloda payload alaninda saklanir.
  • Payload genisletmesi: base (calibrated) + synthesis + window bloklari ayni snapshotta bulunabilir.
  • Ledger yazimi window.ready.v1 sonrasi asenkron/eszamanli adim olarak konumlanir.

PSQL Operasyon Notlari

  • Gunluk migration/inceleme komutlari psql ile yurur.
  • Uretimde degisiklik oncesi: lock/checksum/fingerprint dogrulamasi zorunludur.
  • FK migrationlarinda ON DELETE ve ON UPDATE acik yazilmak zorundadir.

Bugun Alinan Kararlar

2026-04-14

  • Data model icin ayri AI memory dosyasi acildi.
  • PostgreSQL + psql kullanim karari bu dosyada sabitlendi.
  • Telemetri omurgasi ve partition prensipleri tek yerde toplandi.
  • Ledger karar seti sabitlendi: ledger_transactions authoritative source + CPS snapshot payload + per-device chain.

2026-04-15

  • Egress domaini icin iot-iletisim altinda iki operasyonel tablo karari sabitlendi: egress_policies (kural/policy), egress_deliveries (gonderim deneme-sonuc izi).

Acik Konular

  • Telemetri segment tablolarinda (measurement ailesi) uzun vadeli partition plani tablo bazli netlestirilecek.
  • state katmaninin fiziksel tablo/servis siniri implementation notlariyla birlestirilecek.

Sonraki Adim

  • Her tablo degisikliginde bu dosyaya 3 satir ekle:
    • Ne degisti?
    • Neden degisti?
    • Etkilenen iliski/retention ne?