import 'package:freezed_annotation/freezed_annotation.dart'; part 'video_sihirbaz_sablon.freezed.dart'; part 'video_sihirbaz_sablon.g.dart'; /// WanGP video sihirbazında yapılan kullanıcı seçimleri + LoRA stack. /// Şablon olarak kaydedilir, geri yüklendiğinde tüm seçimler /// (chip set'leri, slider'lar) sihirbazda yeniden işaretlenir. @freezed class VideoSihirbazSablon with _$VideoSihirbazSablon { const factory VideoSihirbazSablon({ required String id, required String ad, @Default('') String aciklama, // ── Profil/Hedef ── @Default('sys_4090_serin') String hedefProfilId, @Default('720p_h') String cozunurlukKod, // ── Sahne / Kamera ── @Default({}) Set sahneTipleri, @Default({}) Set kameraHareketleri, // ── Karakter ── @Default({}) Set karakterTipleri, @Default({}) Set ifadeler, @Default({}) Set aksiyonlar, @Default({}) Set giyimler, // ── Ortam / Atmosfer ── @Default({}) Set ortamlar, @Default({}) Set isiklandirmalar, @Default({}) Set gorselStiller, @Default({}) Set atmosferler, // ── Slider / Numerik ── @Default(60) int yogunluk, // 0-100, atmosfer şiddeti @Default(50) int detaySeviyesi, // 0-100, prompt detay zenginliği @Default(1.0) double yaraticilik, // 0.5-1.5, varyasyon // ── LoRA Stack ── @Default([]) List loraDosyalari, @Default([]) List loraMultipliers, // ── Ekstra ── @Default('') String serbestNot, // ek prompt detayı @Default('') String negatifEk, // ek negatif prompt int? seedSabit, // null = rastgele DateTime? olusturma, DateTime? guncelleme, }) = _VideoSihirbazSablon; factory VideoSihirbazSablon.fromJson(Map j) => _$VideoSihirbazSablonFromJson(j); }