Sentez Rule Engine
Sentez katmanı ham segment verilerinden Cınga skorlarını üretir. Bu katmanda kritik kararlar: rule versioning, deterministic sıralama, cihaz özel + global fallback ve stream bazlı snapshot tutarlılığıdır.
Rule Tablosu: synthesis_variable_rules
| Kolon | Tip | Not |
|---|---|---|
id | bigint PK | Kural kimliği |
device_id | varchar(21) FK | 0 ise global kural |
variable_id | varchar(30) FK | Üretilecek hedef değişken |
priority | integer | Çalıştırma sırası |
required_variables | jsonb | Girdi listesi |
conditions | jsonb | Koşullar |
calculation | jsonb | Formül / işlem tanımı |
min_value, max_value | double precision | Clamp sınırı |
status | boolean | Aktif/Pasif |
rule_version | integer | Sürüm |
rule_hash | varchar(64) | Snapshot hash |
create_time, update_time | timestamptz | İzleme |
Kural Önceliği
- Cihaza özel (
device_id = gerçek cihaz) - Global (
device_id = '0')
Aynı stream içinde tek rule snapshot kullanılmalıdır.
V1 Basic Synth Kolonları (energy_measurements_synth)
vur, vsr, iu, load_ratio, pf_calc, tsi, distribution_drift_i, distribution_drift_v, score_grid, score_load, score_stress, score_trend, grid_score, health_score, severity_level, health_label.
Pencere-Dışı Sınır
Aşağıdaki metrikler synth tablosunda tutulmaz, energy_windows katmanında tutulur:
p10/p50/p90(window bazlı),skewness,kurtosis,- rolling trend/maruziyet serileri.
Örnek Kural Kayıtları
| Alan | VUR | LOAD_RATIO |
|---|---|---|
device_id | 96000000C49BB670 | 96000000C49BB670 |
variable_id | VUR | LOAD_RATIO |
priority | 10 | 20 |
required_variables | VA_RMS,VB_RMS,VC_RMS | WATT_T,P_NOM |
conditions | all_not_null=true | P_NOM > 0 |
expr | max(abs(...))/avg(...) | WATT_T/P_NOM |
min/max | 0 / 1 | 0 / 2 |
Rule Validation Checklist
- cycle kontrolü (A→B→C→A engeli)
min_value <= max_value- parse edilebilir güvenli formül
- aktif kural çakışma kontrolü
- deterministic sıra:
priority ASC, id ASC