Skip to main content

Automation Servisi

Automation Servisi, kullanıcı veya sistem tarafından tanımlanan otomasyon kayıtlarını izleyerek belirli bir zamanda ya da periyodik aralıklarla cihazlara standart komut gönderimini yöneten scheduler/orchestrator katmanıdır.

Kullanıcı, UI üzerinden bir otomasyon programladığında (örneğin "şu saatte şu cihaza şu komutu gönder") bu kayıt automations tablosuna yazılır. Automation Servisi bu kaydı izler, tetiklenme zamanı geldiğinde device_command_id referansını ve yürütme bağlamını event olarak üretir. Cihazla doğrudan yalnızca Communication Servisi konuşur.

Sorumluluk

  • automations tablosundaki zamanı gelen (next_run_at <= now) aktif kayıtları tespit etmek
  • automations.device_command_id referansını Communication Servisi'ne taşımak
  • automation_runs tablosuna yürütme kaydı açmak
  • automations.status ve son çalışma bilgilerini güncellemek
  • Periyodik otomasyonlarda bir sonraki next_run_at değerini hesaplamak
  • repeat_count limitine ulaşan otomasyonları completed olarak kapatmak
  • Yürütme sonucunu (result_code, result_message) kayıt etmek
  • Hata durumunda failed sonucunu tabloya yazmak

Tetikleyici Kaynaklar

KaynakAçıklama
APIKullanıcı UI üzerinden otomasyon oluşturur; kayıt doğrudan automations tablosuna yazılır
SistemSistem dahili işlemler user_id=0 (rezerv sistem kullanıcısı) ile otomasyon kaydı açar
FOTAYazılım güncelleme servisi, güncelleme komutunu otomasyon üzerinden planlayabilir
İlgili Veri Modeli
  • automations: otomasyon tanımı, planlama alanları ve yaşam döngüsü durumu
  • automation_runs: her yürütme denemesinin tarihsel kaydı
  • device_commands: Automation'ın referans verdiği standart komut sözlüğü

Çalışma Kuralları

  • date tipi otomasyon belirli bir tarih/saatte tek sefer çalışır ve tamamlandığında kapanır.
  • interval tipi otomasyon interval_seconds aralığıyla tekrar eder; repeat_count dolduğunda veya kayıt devre dışı bırakıldığında durur.
  • Her tetikleme için automation_runs tarafında ayrı bir yürütme izi oluşur.
  • Automation yalnızca device_command_id referansını ve yürütme bağlamını taşır; komut çözümleme Communication tarafında yapılır.
Önbellek Stratejisi

automations ve automation_runs kayıtları Redis cache + DB fallback modeli ile okunur. Servis önce Redis'e bakar; cache miss durumunda DB'den okuyup cache'e yazar. Yazma işlemleri (status güncellemeleri, yeni run kaydı) doğrudan DB'ye yapılır ve ilgili cache girdisi geçersiz kılınır (invalidate) ya da güncellenir.

Akış Diyagramı

Adım adım detaylar için Automation Servisi Akış Diyagramı sayfasına bakınız.

Veri Katmanları Yazım Sırası

DB ve event yazım sırasını sequence diyagramında görmek için Veri Katmanları Arası Yazım Sırası sayfasına bakınız.

Automation Event Envelopeları

automation.command.requested.v1, automation.job.completed.v1 ve automation.job.failed.v1 event payload sözleşmeleri merkezi standart belgesinde tanımlanmıştır. Detaylar için Automation Event Envelopeları sayfasına bakınız.

SSS

Tetikleyici kaynaklar, interval hesabı ve repeat_count davranışı için Automation Servisi SSS sayfasına bakınız.

Güvenlik ve Operasyon

  • Otomasyon oluşturma/güncelleme yalnızca yetkili roller tarafından yapılabilir.
  • device_command_id referansı whitelist görevi görür; tanımsız komut gönderilemez.
  • Tüm otomasyon değişiklikleri audit kaydına yazılır.
  • user_id=0 değeri sistem kaynaklı işlemler için ayrılmıştır; kullanıcı panelinde son kullanıcı hesabı olarak gösterilmez.

SLO

SLO (Service Level Objective), Automation Servisinin operasyonel olarak hangi performans seviyesinde calismasinin beklendigini tanimlar. Asagidaki hedefler izleme ve alarm mekanizmalarinin referansidir; sapma durumunda scheduler gecikmesi, kuyruk birikimi ve bagimli servis gecikmeleri acisindan inceleme yapilmalidir.

MetrikHedef
Scheduler drift< 5s
Komut iletim başarısı> 99%
p95 dispatch gecikmesi< 200ms