Skip to main content

rule_events

rule_events, alarm olaylarının tarihsel kaydını tutar. device_rule_state yalnız son durumu gösterir; ne zaman trigger oldu, ne zaman reset oldu, ne zaman bildirim üretildi gibi zaman çizgisi bu tabloda yaşar. Her olay bir rule_event.type ile sınıflandırılır ve tetikleyen stream ile üretilen mesaja referans verir.

Yapilacaklar (Append-Only Audit)

  • rule_events tablosu icin UPDATE/DELETE yasagini DB trigger ile zorunlu hale getir.
  • Olay degisikligi yerine yalniz yeni event yazma (event-sourcing) modelini migration ile kilitle.
  • create_time ve actor baglami (device_id, rule_group_id) denetim raporunda zorunlu alan olsun.
  • Olay icerigi (details) icin schema-version bilgisini zorunlu tut.

FK Davranis Notlari

FKON DELETEON UPDATENot
rule_events.measurement_stream_id -> streams.idSET NULLCASCADEOlay kaydi korunur, tetikleyici stream referansi bosaltilir.
rule_events.message_id -> inbox.idSET NULLCASCADEOlay kaydi korunur, mesaj referansi opsiyonel kalir.

Stream silme sonrasi ornek davranis:

  • measurement_stream_id = 901 olan bir rule_events kaydi varken streams.id = 901 kontrollu prosedurle silinirse, ilgili event satiri korunur ve measurement_stream_id alani NULL olur.
  • Bu davranis olay zaman cizgisini bozmadan stream baglantisini guvenli bicimde dusurur.

rule_event.type Enum Değerleri

DeğerAnlamı
triggeredKural koşulları sağlandı, alarm tetiklendi
resetAlarm koşulları ortadan kalktı, reset edildi
notifiedBildirim üretildi (push, inbox vb.)
command_sentCihaza komut gönderildi

Kolonlar

KolonTipNullAnlamı
idbiginthayırEvent birincil anahtarı (auto increment)
device_idvarchar(21)hayırİlgili cihaz; devices.id ile ilişkili
rule_group_idinthayırİlgili kural grubu; rule_groups.id ile ilişkili
event_typerule_event.typehayırOlay tipi
measurement_stream_idintevetOlayı tetikleyen accepted stream; streams.id ile ilişkili
message_idbigintevetÜretilen inbox mesajı varsa referans; inbox.id ile ilişkili
detailsjsonevetOlayla ilgili açıklayıcı payload
create_timetimestamphayırOlay zamanı

Örnek Kayıtlar

{
"id": 1,
"device_id": "46000000C47CA670",
"rule_group_id": 1,
"event_type": "triggered",
"measurement_stream_id": 1,
"message_id": 2,
"details": {
"reason": "IFUND_R, IFUND_S, IFUND_T 45A üstünde 300 sn kaldı",
"max_current_a": 46.8
},
"create_time": "2026-04-03T10:30:00Z"
}

Özet: Grup 1 yüksek akım kuralı stream 1 tarafından tetiklenmiş. Üç faz akımı 45A üstünde 300 saniye kalmış, inbox mesajı 2 üretilmiş.