Ana içeriğe geç

CaptainAI #Extension

CaptainAI (kod tabanında KaptanAi, Türkçe arayüzde Kaptan AI), Horizon board'unun canlı görünümünü ve içerdiği widget verilerini Langflow API'ye göndererek doğal dil sohbete olanak tanıyan bir asistan modülüdür. Operatör soruları (örn. "vardiya 2'de duruşların nedeni nedir?", "son 24 saatte hangi parametre eşik aştı?") doğrudan board içinden sorulabilir.

Backend Bağımlılığı

CaptainAI çalışması için pirivision-langflow-api servisinin (port 7870) ayakta olması gerekir. Servis erişilemiyorsa sohbet başlamaz veya yanıt boş döner.

Yalnızca Horizon

CaptainAI sadece Horizon board ekranlarında bulunur; Atlas dashboard'larında bu özellik bulunmaz. Atlas board için XLSX/PNG export ve embed gibi başka mekanizmalar kullanılır.


1. Captain Butonu

Horizon board'unun sağ alt köşesinde captain ikonlu yüzen yuvarlak buton görünür. Tıkladığınızda CaptainAI sohbet diyaloğu açılır.

CaptainAI yüzen butonu — board sağ alt köşe

Diyalog resize edilebilir ve drag edilebilir bir overlay olarak açılır:

Etkileşim Davranış
Sürükleme tutamağı Diyalogu yatay olarak hareket ettirir
Resize tutamağı Genişliği minWidthmaxWidth arasında ayarlar
Snap min/max Tek tıkla en dar veya en geniş boyuta yapışır
Kapat butonu Diyaloğu gizler; oturum geçmişi korunur

2. Sohbet Diyaloğu

Diyalog şu bölümlerden oluşur:

Bölüm Açıklama
Sidebar Önceki oturumlar listesi (tarihe göre); yeni oturum başlatma
Mesaj geçmişi Aktif oturumun mesajları (Markdown + LaTeX render)
Bağlam görüntüsü Son board snapshot'ı (oturum başına stabil kalır)
Input alanı Sorgunuzu yazdığınız metin kutusu
Send / Stop Mesajı gönderir veya askıda olan isteği iptal eder

Sidebar açılıp kapatılabilir; geniş ekranda her zaman görünür kalır, dar ekranda gizlenebilir.


3. Mesaj Gönderildiğinde Ne Olur?

Send butonuna bastığınızda CaptainAI şu paketi Langflow API'ye gönderir:

Paket Bileşeni Açıklama
Soru metni Yazdığınız mesaj
Board PNG snapshot RepaintBoundary + toImage() ile alınmış board görüntüsü, base64 encoded
Board XLSX Tüm widget'ların KpiExportable arayüzü üzerinden ürettiği veri, syncfusion_flutter_xlsio ile XLSX'e dönüştürülmüş, base64 encoded
Session ID Captain oturumu kalıcılığı için
Board ID boardId ve currentBoardId (history image hangi board'a aitti?)
flowchart LR
    A[Kullanıcı sorusu] --> B[Board snapshot al]
    A --> C[Widget'lardan XLSX üret]
    B --> D[Langflow API]
    C --> D
    A --> D
    D --> E[Yanıt]
    E --> F[Sohbet diyaloğunda göster]

4. XLSX Export Detayı

CaptainAI mesaj göndermeden önce her widget'tan veri toplar. Widget'ın KpiExportable arayüzünü implement etmesi gerekir; çoğu Cartography chart tipi bunu sağlar.

Widget Tipi XLSX'e Eklenir mi?
Cartesian (Line, Area, Column, Bar, vb.)
Circular (Pie, Doughnut, Radial Bar)
DataGrid (Table) ✓ (tüm satırlar)
Two-Column List
Gauge ✓ (tek değer)
Dynamic Text ✓ (tek değer)
Static Text ✗ (veri yok)

XLSX dosya adı: Board_<BoardName>_<yyyyMMdd_HHmmss>.xlsx


5. Oturum Kalıcılığı

Her board için ayrı KaptanSessionItem tutulur. Diyaloğu kapatıp yeniden açtığınızda son sohbet geçmişi yüklenir. Tarayıcı session'ı temizlenirse geçmiş kaybolur.

Özellik Davranış
Yeni Oturum Sidebar'dan başlatılır; mesaj geçmişi sıfırlanır
Oturuma Geri Dön Sidebar'daki oturum kartına tıklayarak
History Image Eski oturumda gönderilmiş board snapshot'ı sidebar'da küçük önizleme olarak görünür
Stable Context Aktif oturumun mesajları arasında snapshot referansı sabit kalır (mesaj başına yeniden render edilmez)

6. Yanıt Render

CaptainAI yanıtları Markdown + LaTeX olarak render edilir (flutter_markdown_latex paketi):

Format Render
**kalın**, _italik_ Standart Markdown
# H1, ## H2 Başlıklar
```sql ... ``` Kod bloğu (kopya butonu ile)
$x = a + b$ LaTeX inline matematik
Tablo (| col |) HTML tablo

7. Doğru Soru Yazma İpuçları

Soru Tipi Örnek
Trend açıklama "Üretim adedi son 4 saatte neden düştü?"
Anomali tespit "Hangi parametrede son 24 saatte tepe değer var?"
Karşılaştırma "Hat 1 ve Hat 3 OEE değerlerini karşılaştır"
Özet rapor "Bu vardiya için kısa bir özet hazırla"
Görsel referans "Üstteki gauge'da neden kırmızı uyarı var?"

Bağlam Veren Sorular

Captain board snapshot'ını gördüğü için "bu chart", "üstteki gauge" gibi referanslar verebilirsiniz. Hangi widget'tan bahsettiğinizi yorumlayabilir.


8. Sınırlamalar

  • Sohbet tek board bazlıdır; başka board verilerine erişmez.
  • Yanıt kalitesi Langflow flow yapılandırmasına bağlıdır.
  • Yanıt süresi büyük board'larda (10+ widget) artabilir; XLSX hazırlanması zaman alır.
  • Servis yanıt vermezse hata sessizce işlenir; mesaj sürekli "yükleniyor" görünebilir.
  • Atlas dashboard'larında bulunmaz.

Hassas Veri

CaptainAI, board verilerini Langflow servisine gönderir. Hassas veri içeren board'larda hangi parametrelerin dışarı gönderildiğine dikkat edin. Gerekiyorsa hassas widget'ları board dışında tutun.


9. Sorun Giderme

Belirti Olası Neden Çözüm
Yüzen buton görünmüyor Board ekranı henüz tam yüklenmedi veya feature flag kapalı Sayfayı yenile, pirivision-langflow-api çalıştığını teyit et
Mesaj typing... durumunda kalıyor Langflow yanıtı geç dönüyor veya servis hatası Stop ile iptal et; sorun devam ederse sistem yöneticinizle iletişime geçin
Yanıtta widget verisi eksik Widget KpiExportable implement etmiyor İlgili chart tipini kontrol edin (Static Text gibi data'sız widget'lar normaldir)
Snapshot bozuk geliyor RepaintBoundary resmi alınmadan board layout değişti Sayfa stabilize olduktan sonra tekrar deneyin
Geçmiş oturumlar boş DB'de sohbet kaydı yok İlk mesajı gönderene kadar oturum kaydı oluşmaz

10. Sonraki Adım

Horizon — Export — Board'u dosya olarak indirme
Makinist — Compass SQL AsistanıAI Ekosistemi — Genel BakışEkosistem