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:
psqlkullanilir. - 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:
raw_data: ingress journal (accepted olmayanlar dahil)streams: accepted telemetry omurgasi (stream_iduretimi)measurements_*: typed segment tablolari (voltage/current/power/energy/device/register/environment/water/location)measurements: generic scalar fallbackstate: son canli cihaz projeksiyonu (runtime state)ledger_transactions: best-effort integrity trail
Iliski Omurgasi (Nasil Bagli)
raw_data -> streams:streams.raw_idreferansi, 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 icinRESTRICT.
Partition ve Retention Politikalari
streamstablosustream_timebazli aylik partition modelinde calisir (yyyy_mm) ve bu kural migration ile zorunludur.streamsretention penceresi 24 aydir.raw_dataretention,streamsretention 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_datakaydi kalir,streamsolusmaz. - Accepted transaction boundary:
streams + measurements + state + raw_data.stream_idbirlikte 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_hashtransaction_hash
- Payload kaydi zorunlu: ingest sonrasi CPS normalize snapshot tabloda
payloadalaninda saklanir. - Payload genisletmesi: base (calibrated) + synthesis + window bloklari ayni snapshotta bulunabilir.
- Ledger yazimi
window.ready.v1sonrasi asenkron/eszamanli adim olarak konumlanir.
PSQL Operasyon Notlari
- Gunluk migration/inceleme komutlari
psqlile yurur. - Uretimde degisiklik oncesi: lock/checksum/fingerprint dogrulamasi zorunludur.
- FK migrationlarinda
ON DELETEveON UPDATEacik yazilmak zorundadir.
Bugun Alinan Kararlar
2026-04-14
- Data model icin ayri AI memory dosyasi acildi.
- PostgreSQL +
psqlkullanim karari bu dosyada sabitlendi. - Telemetri omurgasi ve partition prensipleri tek yerde toplandi.
- Ledger karar seti sabitlendi:
ledger_transactionsauthoritative source + CPS snapshot payload + per-device chain.
2026-04-15
- Egress domaini icin
iot-iletisimaltinda 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.
statekatmaninin 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?