Envelope: Rule Servisi
Topic: qapu.rule
DLQ: qapu.dlq.rule
Producer: rule-service
Rule servisi, pencere verisi üzerinde kullanıcı tanımlı kuralları değerlendirir. Bir kural eşiği aşıldığında rule.triggered.v1, koşul tekrar sağlandığında rule.reset.v1, kural konfigürasyonu değiştiğinde rule.completed.v1 üretilir.
Event Envanteri
| Event | Ne zaman üretilir? | Consumer | Amaç |
|---|---|---|---|
rule.triggered.v1 | Kural eşiği aşıldığında | Action Servisi | Aksiyonu tetiklemek |
rule.reset.v1 | Tetiklenen kural koşulu artık geçerli olmadığında | Action Servisi, Ledger | Aksiyon akışını kapatmak |
rule.completed.v1 | Kural konfigürasyonu değiştirildiğinde veya devre dışı bırakıldığında | Action Servisi | Açık aksiyon akışlarını sonlandırmak |
rule.triggered.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.rule |
| Producer | rule-service |
| Consumer | Action Servisi |
| Tetikleyici | window.ready.v1 tüketimi — kural koşulları değerlendirildiğinde |
| Kritiklik | Yüksek — aksiyon zincirine girer |
Payload
{
"event": "rule.triggered.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i0",
"producer_service": "rule-service",
"produced_at": "2026-03-11T15:22:13.100Z",
"process_ms": 85
},
"context": {
"device_id": "400000011D081B70",
"raw_id": 12345,
"stream_id": 9823412,
"device_time": "2026-03-11T15:22:06Z",
"stream_time": "2026-03-11T15:22:13.100Z",
"iccid": null,
"imei": null,
"firmware": "2.3.0"
},
"data": {
"rule_id": "rule_voltage_high_001",
"rule_name": "Yüksek Gerilim Alarmı",
"rule_version": 3,
"metric": "voltage_rms_l1",
"threshold_value": 253.0,
"measured_value": 257.4,
"window_slot": "2026-03-11T15:15:00Z",
"severity": "warning"
},
"error": null
}
Alan Açıklamaları
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
data.rule_id | string | Evet | Kural tanımlayıcısı |
data.rule_version | integer | Evet | Kural konfigürasyon versiyonu; reset/complete ile eşleşmek için kullanılır |
data.metric | string | Evet | Eşiği aşan metrik adı |
data.threshold_value | number | Evet | Tanımlanan eşik değeri |
data.measured_value | number | Evet | Hesaplanan pencere değeri |
data.severity | string | Evet | info | warning | critical |
rule.reset.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.rule |
| Producer | rule-service |
| Consumer | Action Servisi, Ledger Servisi |
| Tetikleyici | Daha önce tetiklenmiş bir kural koşulunun artık sağlanmaması |
| Kritiklik | Orta — açık aksiyon akışını kapatır |
Payload
{
"event": "rule.reset.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i1",
"producer_service": "rule-service",
"produced_at": "2026-03-11T15:37:13.050Z",
"process_ms": 40
},
"context": {
"device_id": "400000011D081B70",
"raw_id": 12345,
"stream_id": 9825100,
"device_time": "2026-03-11T15:37:06Z",
"stream_time": "2026-03-11T15:37:13.050Z",
"iccid": null,
"imei": null,
"firmware": "2.3.0"
},
"data": {
"rule_id": "rule_voltage_high_001",
"rule_version": 3,
"metric": "voltage_rms_l1",
"measured_value": 241.3,
"window_slot": "2026-03-11T15:30:00Z"
},
"error": null
}
rule.completed.v1
Özet
| Başlık | Değer |
|---|---|
| Topic | qapu.rule |
| Producer | rule-service |
| Consumer | Action Servisi |
| Tetikleyici | Kural konfigürasyonu güncellenmesi veya kural devre dışı bırakılması |
| Kritiklik | Düşük/Orta — açık aksiyon akışlarını sonlandırır |
Payload
{
"event": "rule.completed.v1",
"meta": {
"trace_id": "01a2b3c4d5e6f7g8h9i2",
"producer_service": "rule-service",
"produced_at": "2026-03-11T16:00:00.000Z",
"process_ms": 5
},
"context": {
"device_id": "400000011D081B70",
"raw_id": null,
"stream_id": null,
"device_time": null,
"stream_time": "2026-03-11T16:00:00.000Z",
"iccid": null,
"imei": null,
"firmware": null
},
"data": {
"rule_id": "rule_voltage_high_001",
"rule_version": 4,
"reason": "config_updated"
},
"error": null
}
Alan Açıklamaları
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
data.reason | string | Evet | config_updated | rule_disabled | rule_deleted |
context.stream_id | integer|null | Hayır | Cihaz verisiyle tetiklenmediği için null olabilir |