Kural ve Aksiyon Tablolari
Bu sayfa, Qapu backend icinde kural motoru, alarm uretimi, durum takibi ve reaksiyon aksiyonlari icin kullanilan veri modelini detayli bicimde aciklar.
Amac, alarm davranisini uygulama kodu icinde daginik if-else bloklarindan cikarip veri modeliyle yonetilebilir hale getirmektir.
Tablo Iliski Ozeti
Rules & Alerts katmani, alarm mekanizmasini 7 tabloya boler: kural tanimi, cihaz atamasi, anlik durum, tarihsel kayit ve reaksiyon aksiyon. Her tablo iliskileri su semada gosterilmektedir:
Tablo Katmanlari
| Katman | Tablolar | Amaci |
|---|---|---|
| Tanim | rule_groups, rules | Hangi kosullar alarm uretir |
| Atama | device_rule_assignments | Kurallar hangi cihazlarda aktif |
| Durum | device_rule_state | Trigger/reset durumu, sayaclar, cache |
| Tarihce | rule_events | Tum alarm olaylari (audit trail) |
| Reaksiyon | rule_actions, rule_group_actions | Aksiyonlari tanimla ve grupla bagla |
Genel Kural Akisi
Bu bolum, bir cihazdan veri paketi geldigi andan aksiyon uretilmesine kadar olan surecin tum adimlarini gosterir. Her karar noktasi bir tablo operasyonuna karsilik gelir.
Bu akista temel roller sunlardir:
device_rule_assignments: hangi grubun bu cihazda aktif oldugunu belirlerrule_groups + rules: kural tanimi ve eslesme mantigini (all/any) tasirdevice_rule_state: anlik trigger/reset durumunu ve sayaclari saklarrule_events: her kritik olayi tarihsel olarak kaydederrule_group_actions + rule_actions: tetikleme ve reset aninda hangi aksiyonun calisacagini belirler
Uctan uca tek senaryo dogrulama seti icin:
Eksik veya Belirsiz Alanlar
Asagidaki sorular kural motoru implementasyonunda yanitsiz kalmis olabilir:
| Alan | Soru |
|---|---|
| duration kurallari | Sure sayaci Redis'te mi tutuluyor, yoksa device_rule_state icinde ek bir alan mi gerekiyor? |
| multi_trigger mantigi | multi_trigger=true olan grupta trigger_count her yeni paket icin mi artiyor, yoksa sadece state gecislerinde mi? |
| valid_from / valid_to | Gecerlilik penceresi disinda kalan kural grubu atlanirken bir event kaydi olusturulacak mi? |
| register_transition | old_register_value dogrulamasi icin onceki stream degeri nereden geliyor - device_rule_state icinde tutulacak mi? |
| command_sent sonrasi | Cihaz komutu gonderildikten sonra cevap bekleniyor mu; timeout varsa yeni event uretilecek mi? |
| rule_actions.device_command_id | Bu FK hangi tabloya baglaniyor - device_commands tablosu henuz modellendi mi? |
Tablolar
- rule_groups: Kural grubu kayitlari.
- rules: Kural tanimlari.
- rule_actions: Kural aksiyon tanimlari.
- rule_group_actions: Kural grubu-aksiyon eslemeleri.
- device_rule_assignments: Cihaz-kural atama kayitlari.
- device_rule_state: Cihaz kural durum kayitlari.
- rule_events: Kural olay gecmisi.