📋 Planlama 🎵 Muzibu

HLS + AI Görsel İşleme Planı

28,211 şarkı için HLS dönüşümü ve AI görsel üretimi stratejisi

📅 9 Ocak 2026 🏢 Tenant 1001 (muzibu.com) ⏱️ ~3-5 gün tahmini süre

📊 Mevcut Durum Analizi

Toplam Şarkı
28,211
Aktif şarkı sayısı
HLS Tamamlanan
2,089
7.4%
AI Görsel Tamamlanan
1,947
6.9%

🚨 Tespit Edilen Sorunlar

  • 29,216 Failed Job: Leonardo AI rate limit nedeniyle toplu işleme sırasında joblar fail oldu
  • Queue Boş: Tüm joblar işlendi (başarılı/başarısız), yeni job yok
  • Kalan İş: ~26,122 HLS + 26,264 AI görsel eksik
  • Leonardo API Çalışıyor: Manuel test başarılı, API erişilebilir durumda

📝 Basit Anlatım (Herkes İçin)

Ne Yapılacak?
Muzibu platformundaki 28,211 şarkının tamamı için iki işlem yapılacak:

  1. HLS Dönüşümü: Şarkılar akış müzik formatına çevrilecek (YouTube gibi kesintisiz dinleme için)
  2. AI Görsel: Her şarkı için yapay zeka ile otomatik kapak fotoğrafı üretilecek

Neden Önemli?
HLS formatı sayesinde kullanıcılar şarkıları daha hızlı ve kesintisiz dinleyecek. AI görseller sayesinde her şarkının çekici bir kapak fotoğrafı olacak.

Sorun Neydi?
Dün toplu işleme yapıldı ama Leonardo AI (görsel üretim servisi) çok fazla istek gelince "yavaşla" dedi ve 29,000 işlem başarısız oldu. HLS dönüşümü sorunsuz çalışıyor.

Çözüm:
Bu sefer daha yavaş ve kontrollü ilerleyeceğiz. Günde 500-1,000 görsel, HLS için limit yok. Böylece sistem yorulmadan 3-5 gün içinde tüm şarkılar tamamlanacak.

🔧 Teknik Detaylar (Geliştiriciler İçin)

HLS Sistemi:
  • ConvertToHLSJob - FFmpeg ile AAC encoding
  • Queue: muzibu_tenant_1001_hls
  • Output: storage/tenant1001/app/public/muzibu/hls/{song_id}/playlist.m3u8
  • DB Field: muzibu_songs.hls_path
  • İşlem süresi: ~4-9 saniye/şarkı
AI Görsel Sistemi:
  • GenerateSongCover job → MuzibuLeonardoAIService
  • Provider: Leonardo AI (Lucid Origin model)
  • Queue: muzibu_my_playlist
  • Prompt: GPT-4 ile müzik odaklı zenginleştirme (11 altın kural)
  • Storage: Spatie Media Library, collection='hero'
  • İşlem süresi: ~13 saniye/görsel
Horizon Configuration:
  • muzibu-supervisor: minProcesses=6, maxProcesses=20
  • Queue monitoring: Laravel Horizon dashboard
  • Failed jobs: Central DB (failed_jobs table)

🎯 İşleme Stratejisi

📼 HLS Dönüşümü

Sorunsuz Çalışıyor: HLS conversion için rate limit yok, FFmpeg lokal çalışıyor
Hızlı İşlem: Horizon 20 worker ile paralel işleyebilir (4-9 saniye/şarkı)
Yöntem: Büyük batch'lerle (2,000-3,000 şarkı) hızlı işleyebiliriz
Plan: 14 batch × 2,000 şarkı = ~28,000 HLS
Tahmini Süre: 12-16 saat (kesintisiz çalışırsa 1 gün içinde biter)

🎨 AI Görsel Üretimi

Rate Limit Var: Leonardo API saatlik/günlük limit koruyor (dün 29,000 job fail oldu)
Yavaş İlerle: Küçük batch'ler (500-1,000 görsel/gün) ile kontrollü ilerlemeliyiz
API Durumu: Leonardo API çalışıyor (test ettik), kredi var
Plan: Günde 1,000 görsel × 26 gün = ~26,000 görsel
Tahmini Süre: 3-4 hafta (kontrollü + güvenli)
⚡ Hızlı Alternatif:
Failed jobs'ları retry edersek (29,216 job) hepsini bir gecede işleyebilir.
RİSK: Rate limit tekrar yerse yine fail olur, kredi tükenebilir.

📋 Adım Adım Uygulama Planı

Faz 1: HLS Toplu İşleme (Öncelikli)

~1-2 gün
  1. 1.1
    Bulk Process Başlat: bash /tmp/bulk-all-songs.sh 14 batch × 2,000 şarkı işleyecek
  2. 1.2
    Horizon İzle: https://muzibu.com/horizon Queue durumunu ve worker'ları izle
  3. 1.3
    İlerleme Kontrolü: php artisan tinker Her 4-6 saatte HLS tamamlanan sayısını kontrol et
  4. 1.4
    Beklenen Sonuç: 28,211 şarkının tamamı HLS'e dönüştürülmüş olacak

Faz 2A: AI Görsel (Güvenli Yöntem)

~3-4 hafta
  1. 2.1
    Günlük Batch İşleme: php artisan muzibu:bulk-process 1000 Her gün 1,000 şarkı için AI görsel üret (rate limit friendly)
  2. 2.2
    Cron Ayarla: Sabah 08:00'de otomatik çalışsın (kullanıcı trafiği az) 0 8 * * * cd /var/www/.../httpdocs && php artisan muzibu:bulk-process 1000
  3. 2.3
    Failed Jobs İzle: Günlük failed job sayısını kontrol et, 100'den fazlaysa batch size'ı düşür
  4. 2.4
    İlerleme: ~26 gün sonra tüm şarkılar tamamlanmış olacak
✅ Avantaj: Güvenli, rate limit riski yok, kredi korunur

Faz 2B: AI Görsel (Hızlı Yöntem - RİSKLİ)

~1-2 gün
  1. 2.1
    Failed Jobs Retry: php artisan queue:retry all 29,216 job'u yeniden kuyruğa ekle
  2. 2.2
    Horizon İzle: Sürekli izle, rate limit hatası çoğalırsa işlemi durdur
  3. 2.3
    Sonuç: Leonardo API kaldırırsa 1-2 günde tamamlanır
⚠️ Riskler:
  • Rate limit tekrar tetiklenirse yine 29,000 fail olur
  • API kredi hızla tükenir (para kaybı riski)
  • Leonardo hesabı bloklanabilir (kötü practice)

Faz 3: İzleme ve Raporlama

Sürekli
  1. 3.1
    Günlük Rapor: Her gün saat 18:00'de HLS ve AI görsel istatistiklerini kontrol et
  2. 3.2
    Failed Jobs Temizliği: Başarısız jobları analiz et, gerekirse yeniden işle
  3. 3.3
    Horizon Optimizasyon: İşler bitince worker sayısını düşür (CPU tasarrufu)

💻 Kullanılacak Komutlar

HLS Toplu İşleme Tüm batch'ler
bash /tmp/bulk-all-songs.sh
AI Görsel (Günlük Batch) 1,000 şarkı
php artisan muzibu:bulk-process 1000
Failed Jobs Retry (RİSKLİ) 29,216 job
php artisan queue:retry all
Durum Kontrolü İstatistikler
php artisan tinker tenancy()->initialize(1001); $total = DB::connection('tenant')->table('muzibu_songs')->where('is_active', true)->count(); $hls = DB::connection('tenant')->table('muzibu_songs')->whereNotNull('hls_path')->count(); $ai = DB::connection('tenant')->table('media')->where('model_type', 'LIKE', '%Song%')->count(); echo "Total: $total | HLS: $hls | AI: $ai\n";
Horizon Durum Queue izleme
php artisan horizon:status ps aux | grep horizon | wc -l

⏱️ Tahmini Süreler ve Maliyetler

HLS Dönüşümü

Kalan Şarkı: ~26,122
Süre/Şarkı: 4-9 saniye
Paralel Worker: 20 worker
Toplam Süre: 12-16 saat
Maliyet: $0 (Local FFmpeg)

AI Görsel Üretimi

Kalan Şarkı: ~26,264
Süre/Görsel: ~13 saniye
Günlük Batch: 1,000 görsel
Toplam Süre: ~26 gün
API Maliyet: ~$XX (Leonardo credit)

💡 Optimizasyon İpuçları

  • • HLS ve AI görseller paralel çalışabilir (aynı anda ikisi de işleyebilir)
  • • HLS öncelikli (daha kritik, kullanıcı deneyimi için gerekli)
  • • AI görsel yavaş ilerletilmeli (rate limit, maliyet kontrolü)
  • • Gece saatlerinde bulk process çalıştır (sunucu yükü az)
  • • Hafta sonları daha agresif batch kullanılabilir (kullanıcı trafiği az)

🎲 Karar Matrisi: Hangi Yöntemi Seçmeliyiz?

Kriter Güvenli Yöntem (2A) Hızlı Yöntem (2B)
Tamamlanma Süresi 3-4 hafta 1-2 gün
Rate Limit Riski Çok Düşük ✓ Yüksek ✗
API Maliyet Kontrollü ✓ Hızla Tükenir
Failed Job Riski Minimal ✓ Yüksek ✗
Sistem Yükü Düşük ✓ Yüksek ✗
Önerilen ÖNERİLEN ✓ RİSKLİ ✗

Önerilen Strateji

FAZ 1: HLS'i toplu işle (1-2 gün, risk yok)
FAZ 2A: AI görselleri günlük 1,000 batch ile işle (3-4 hafta, güvenli)

Bu yöntem Leonardo API'yi zorlamaz, kredi kontrollü harcanır, sistem stabil kalır. Kullanıcılar 1-2 gün içinde HLS ile kesintisiz müzik dinleyebilir, görseller zamanla tamamlanır.

🚀 Hemen Yapılacaklar

1️⃣
HLS Bulk Process Başlat

Şimdi başlatılabilir, 1-2 günde tamamlanır

2️⃣
AI Görsel Stratejisi Seç

Güvenli yöntem (2A) veya hızlı yöntem (2B)? Kullanıcı onayı gerekli

3️⃣
Horizon İzleme

Dashboard'u sürekli aç, queue ve worker durumunu izle

4️⃣
Günlük Rapor Sistemi

Her gün saat 18:00'de ilerleme raporu al