stream_audit
stream_audit, streams tablosu uzerinde calisan kritik operasyonlarin (ilk asamada cihaz bazli tam silme) denetim izini tutar.
Bu tablo logs tablosunun yerine gecmez; operasyonel loglari destekleyen, daha sik sozlesmeli ve append-only audit kaydidir. Amac, kim-ne-zaman-neden-hangi kapsamda silme yapti sorusunu tek tablodan kesin olarak cevaplayabilmektir.
Kapsam
- Ilk faz:
ops.delete_device_streams_full(p_device_id, p_reason, p_actor)fonksiyon cagirilari. - Bu tablo yikici (
delete) stream operasyonlarina ozel append-only denetim katmanidir. - Stage veya ledger durum gecisleri bu tabloda tutulmaz; bunlar operasyonel loglarda veya ayrik event akisi ile izlenir.
Baglam Zorunlulugu
| Cagirici tipi | Zorunlu alanlar |
|---|---|
api | source_type, service_name, ip_address |
admin_ui | source_type, service_name, ip_address, reason |
job | source_type, service_name, source_note |
script | source_type, service_name, source_note |
Not: sim_id sadece islem mobil baglamla dogrudan iliskiliyse doldurulur.
FK Davranis Notlari
| FK | ON DELETE | ON UPDATE | Not |
|---|---|---|---|
stream_audit.device_id -> devices.id | SET NULL | CASCADE | Audit kaydi korunur, cihaz referansi opsiyonel kalir. |
stream_audit.actor_id -> users.id | SET NULL | CASCADE | Audit kaydi korunur, actor referansi opsiyonel kalir. |
Kolonlar
| Kolon | Tip | Null | Anlami |
|---|---|---|---|
id | bigint | hayir | Audit kaydi birincil anahtari |
operation_id | varchar(64) | hayir | Tek silme operasyonu kimligi (idempotency/izleme) |
action_type | varchar(40) | hayir | Islem tipi (or: delete_device_streams_full) |
device_id | varchar(21) | evet | Silme kapsamindaki cihaz |
actor_id | int | evet | Islemi yapan actor kullanici |
service_name | varchar(100) | hayir | Cagiriyi yapan servis adi |
source_type | varchar(40) | hayir | Kaynak tipi (api, admin_ui, job, script) |
source_note | varchar(255) | evet | Baglam notu (ticket no, run id vb.) |
ip_address | varchar(64) | evet | Cagri IP bilgisi (varsa) |
sim_id | varchar(64) | evet | Mobil baglamdaki iliskili SIM kimligi |
reason | varchar(255) | hayir | Operasyon gerekcesi |
deleted_stream_count | int | hayir | Silinen stream satir sayisi |
deleted_telemetry_count | int | hayir | Silinen bagli telemetri satirlarinin toplam sayisi |
deleted_breakdown | json | evet | Tablo bazli silme dagilimi (measurements_*, measurements, vb.) |
status | varchar(20) | hayir | Islem sonucu (started, succeeded, failed) |
error_message | text | evet | Hata varsa detay metni |
function_name | varchar(120) | hayir | Cagrilan DB fonksiyonu |
create_time | timestamp | hayir | Audit kaydinin yazildigi zaman |
Indeksler
| Indeks | Tip | Aciklama |
|---|---|---|
id | Primary Key | Tablo birincil anahtari |
operation_id | Unique | Ayni operasyon iki kez audit edilmez |
(device_id, create_time) | B-Tree | Cihaz bazli audit sorgulari |
(actor_id, create_time) | B-Tree | Actor bazli audit sorgulari |
(status, create_time) | B-Tree | Basarili/basarisiz operasyon izleme |
(source_type, create_time) | B-Tree | Kaynak tipine gore denetim taramasi |
Ornek Kayitlar
- Basarili Full Purge
- Basarisiz Deneme
{
"id": 1,
"operation_id": "op-2026-04-10-0001",
"action_type": "delete_device_streams_full",
"device_id": "46000000C47CA670",
"actor_id": 1,
"service_name": "stream-cleaner",
"source_type": "admin_ui",
"source_note": "INC-2026-4182",
"ip_address": "10.0.3.45",
"sim_id": null,
"reason": "Cihaz saha degisimi oncesi sifirlama",
"deleted_stream_count": 12482,
"deleted_telemetry_count": 286941,
"deleted_breakdown": {
"measurements": 35640,
"measurements_device": 12482,
"measurements_current": 12482,
"measurements_voltage": 12482,
"measurements_power": 12482,
"measurements_energy": 12482,
"measurements_water": 11620,
"measurements_environment": 9852,
"measurements_location": 10211,
"measurements_register": 12035,
"streams": 12482
},
"status": "succeeded",
"error_message": null,
"function_name": "ops.delete_device_streams_full",
"create_time": "2026-04-10 09:15:02"
}
Ozet: Cihaz yeniden atama oncesi tum stream ve bagli telemetri zinciri tek operasyonla silinmis, audit kaniti kaydedilmis.
{
"id": 2,
"operation_id": "op-2026-04-10-0002",
"action_type": "delete_device_streams_full",
"device_id": "46000000C47CA671",
"actor_id": 7,
"service_name": "reassign-worker",
"source_type": "job",
"source_note": "job-2026-04-10-03",
"ip_address": null,
"sim_id": "sim-4450",
"reason": "Yetkisiz temizleme denemesi",
"deleted_stream_count": 0,
"deleted_telemetry_count": 0,
"deleted_breakdown": null,
"status": "failed",
"error_message": "permission denied for function ops.delete_device_streams_full",
"function_name": "ops.delete_device_streams_full",
"create_time": "2026-04-10 09:20:18"
}
Ozet: Yetkisiz actor tarafindan yapilan silme denemesi engellenmis, deneme audit kaydina basarisiz olarak yazilmis.