﻿# Faz 1: İskelet + ComfyUI İstemci + Müzik Stüdyosu — Implementasyon Planı

> **For agentic workers:** REQUIRED SUB-SKILL: superpowers:executing-plans (inline). Adımlar checkbox ile takip edilir.

**Goal:** Flutter Windows uygulaması ayağa kalkar; ComfyUI'ye bağlanır; ACE-Step ile sihirbaz destekli müzik üretir; kuyruk + galeri çalışır.

**Architecture:** Tek Flutter Windows uygulaması. Riverpod state, Isar kalıcılık, dio+web_socket_channel ile ComfyUI (127.0.0.1:8188), media_kit ses çalar. Workflow'lar Dart'ta API-format graph builder ile üretilir (UI JSON'a bağımlılık yok).

**Tech Stack:** Flutter 3.41 / Dart 3.11, flutter_riverpod, isar v3, media_kit, dio, web_socket_channel, file_picker, window_manager

**Proje yolu:** `D:\__sistem__\Masaustu\FikoYT.Yeni.Cag\video-uretim-1\fikoyt_studyo`

---

## Dosya Yapısı

```
lib/
  main.dart                          # giriş, ProviderScope, window ayarı
  app/
    tema.dart                        # dark+light ColorScheme, neon token'lar
    rotalar.dart                     # ekran navigasyonu (IndexedStack shell)
    kabuk.dart                       # sidebar + içerik kabuğu
  cekirdek/
    sabitler.dart                    # yollar, varsayılanlar
    yardimcilar.dart                 # ortak util (dosya, format)
  veri/
    isar_servisi.dart                # Isar açılış, koleksiyon kaydı
    modeller/
      uretim_kaydi.dart              # ÜretimKaydı koleksiyonu
      muzik_sablonu.dart             # Müzik şablonu koleksiyonu
      ayarlar.dart                   # uygulama ayarları (tek kayıt)
  comfy/
    comfy_istemci.dart               # HTTP: /prompt /history /view /object_info /interrupt
    comfy_ws.dart                    # WebSocket: progress/executing/executed event akışı
    comfy_durum.dart                 # bağlantı durumu provider'ı (rozet)
    workflow/
      workflow_graf.dart             # API-format graph builder (node ekle, bağla, JSON)
      muzik_workflow.dart            # ACE-Step müzik grafiği (parametrik)
    uretim_kuyrugu.dart              # kuyruk servisi: sırala, izle, kaydet
  muzik/
    muzik_ekrani.dart                # ana ekran: form + sihirbaz + söz + kuyruk paneli
    muzik_form_state.dart            # Riverpod form state (tüm parametreler)
    muzik_kataloglari.dart           # kültür/tür/mood/vokal/enstrüman katalogları (eski projeden)
    muzik_sihirbazi.dart             # çip bazlı sihirbaz paneli → prompt derleme
    soz_editoru.dart                 # [Verse]/[Chorus] yapılı söz editörü
  galeri/
    galeri_ekrani.dart               # üretim arşivi grid + ses çalar
    ses_calar.dart                   # media_kit çalar widget'ı
  ayarlar/
    ayarlar_ekrani.dart              # ComfyUI URL, çıktı klasörü, tema
test/
  workflow_graf_test.dart            # graph builder doğruluğu
  muzik_workflow_test.dart           # müzik grafiği parametre enjeksiyonu
  prompt_derleme_test.dart           # sihirbaz → tags string derleme
```

## ACE-Step API-Format Graf (referans — muzik_workflow.dart bunu üretir)

```
97 CheckpointLoaderSimple  {ckpt_name}
94 TextEncodeAceStepAudio1.5 {clip:[97,1], tags, lyrics, seed, bpm, duration,
   timesignature:"4", language, keyscale, generate_audio_codes:true,
   cfg_scale, temperature, top_p, top_k, min_p}
78 ModelSamplingAuraFlow   {model:[97,0], shift:3}
98 EmptyAceStep1.5LatentAudio {seconds, batch_size}
47 ConditioningZeroOut     {conditioning:[94,0]}
3  KSampler {model:[78,0], positive:[94,0], negative:[47,0], latent_image:[98,0],
   seed, steps, cfg, sampler_name:"euler", scheduler:"simple", denoise:1}
18 VAEDecodeAudio {samples:[3,0], vae:[97,2]}
104 SaveAudioMP3 {audio:[18,0], filename_prefix:"fikoyt/muzik", quality:"V0"}
```

## Görevler

### Görev 1: Proje iskeleti
- [ ] `flutter create fikoyt_studyo` (org: com.fikoyt, platform: windows)
- [ ] pubspec bağımlılıkları + `flutter pub get`
- [ ] Klasör yapısı + boş dosyalar, `main.dart` ProviderScope + kabuk
- [ ] Doğrula: `flutter analyze` temiz

### Görev 2: Tema + kabuk
- [ ] `tema.dart`: dark (varsayılan) + light, neon vurgu renkleri, CardTheme, animasyon süreleri
- [ ] `kabuk.dart`: sol sidebar (Müzik, Resim*, Video*, Direktör*, Karakterler*, Editör*, Galeri, Ayarlar — * rozeti "yakında"), hover animasyonları
- [ ] Doğrula: `flutter run -d windows` açılır, tema geçişi çalışır

### Görev 3: Isar + modeller
- [ ] `uretim_kaydi.dart`: id, tip(enum), baslik, parametrelerJson, workflowJson, promptId, durum(enum), ciktiDosyalari, hataMesaji, olusturmaZamani, bitisZamani, süre
- [ ] `muzik_sablonu.dart`: ad, aciklama, formSnapshotJson, olusturma
- [ ] `ayarlar.dart`: comfyUrl, ciktiKlasoru, temaModu
- [ ] build_runner codegen, `isar_servisi.dart` açılış
- [ ] Doğrula: analyze + uygulama açılışta Isar açıyor

### Görev 4: ComfyUI istemcisi
- [ ] `comfy_istemci.dart`: GET /object_info, /history/{id}, /view (dosya indir), POST /prompt, /interrupt; clientId üretimi
- [ ] `comfy_ws.dart`: ws://host/ws?clientId=, event stream (status/progress/executing/executed/execution_error), otomatik yeniden bağlanma (exponential backoff)
- [ ] `comfy_durum.dart`: bağlı/bağlanıyor/kopuk rozeti + "ComfyUI başlat" kısayolu (run_nvidia_gpu.bat)
- [ ] Doğrula: uygulama canlı ComfyUI'ye bağlanıp model listesini logluyor

### Görev 5: Workflow motoru (TDD)
- [ ] Test: `workflow_graf_test.dart` — node ekleme, bağlantı, JSON çıkışı `{"3":{"class_type":...,"inputs":{...}}}` formatı
- [ ] `workflow_graf.dart` implementasyonu
- [ ] Test: `muzik_workflow_test.dart` — MuzikParametreleri → graf; seed/tags/lyrics/duration/bpm/cfg/steps doğru node input'larına düşüyor
- [ ] `muzik_workflow.dart` implementasyonu (yukarıdaki referans graf)
- [ ] Doğrula: `flutter test` yeşil

### Görev 6: Üretim kuyruğu
- [ ] `uretim_kuyrugu.dart`: işi Isar'a yaz → POST /prompt → promptId eşle → WS event'lerinden ilerleme/durum güncelle → bitince /history'den çıktı dosya adlarını al → /view ile çıktı klasörüne indir
- [ ] Kuyruk UI paneli: iş kartları (başlık, ilerleme çubuğu, node adı, iptal, yeniden dene)
- [ ] Doğrula: gerçek üretimle uçtan uca (küçük 10sn müzik)

### Görev 7: Müzik katalogları + sihirbaz
- [ ] `muzik_kataloglari.dart`: eski `flutter-video-uret/.../muzik_kataloglari.dart`ten taşı/uyarla (20 kültür, 55 tür, 19 mood, 31 vokal, 150+ enstrüman)
- [ ] Test: `prompt_derleme_test.dart` — seçimler → İngilizce tags string + LM temp/CFG türetme (yaratıcılık 0-1.5→temp 0.4-1.6, enerji 0-100→cfg 3.0-9.5)
- [ ] `muzik_sihirbazi.dart`: kategori sekmeli çip seçimi, slider'lar, canlı prompt önizleme
- [ ] Doğrula: test yeşil + UI'da prompt canlı derleniyor

### Görev 8: Müzik Stüdyosu ekranı
- [ ] `muzik_form_state.dart`: tüm parametreler (model, tags, lyrics, seed/rastgele, bpm, süre, dil, keyscale, cfg_scale, temperature, top_p, steps, cfg, shift, batch)
- [ ] `muzik_ekrani.dart`: sol form + sihirbaz, sağ söz editörü, alt kuyruk; Basit/Gelişmiş görünüm; "Üret" → kuyruk
- [ ] `soz_editoru.dart`: yapı blokları ([Verse]/[Chorus]/[Bridge]/[Intro]/[Outro] ekleme), satır editörü
- [ ] Şablon kaydet/yükle (Isar)
- [ ] Doğrula: uçtan uca üretim + şablon round-trip

### Görev 9: Galeri + çalar
- [ ] `galeri_ekrani.dart`: ÜretimKaydı grid (tip filtresi), kart: başlık, süre, tarih, parametre rozetleri
- [ ] `ses_calar.dart`: media_kit ile çal/durdur, seek, A/B karşılaştırma (iki kayıt seç → hızlı geçiş)
- [ ] "Aynı parametrelerle yeniden üret" / "Varyasyon (yeni seed)" butonları
- [ ] Doğrula: üretilen mp3 galeriden çalınıyor

### Görev 10: Ayarlar + son doğrulama
- [ ] `ayarlar_ekrani.dart`: ComfyUI URL, çıktı klasörü, tema toggle, bağlantı testi
- [ ] `flutter analyze` temiz + `flutter test` yeşil + `flutter build windows` başarılı
- [ ] Gerçek uçtan uca: sihirbazdan prompt → üretim → galeri → çalma

## Faz 1 sonrası (sıradaki fazlar spec'te)
Faz 2: Resim Stüdyosu + Karakter Stüdyosu; Faz 2.5: ACE LoRA eğitimi + sihirbazlar; Faz 3: Video + Direktör; Faz 4a-d: Editör; Faz 5: cila.

