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.
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 minWidth ↔ maxWidth 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
