import 'package:freezed_annotation/freezed_annotation.dart'; import 'enums.dart'; import 'lora_secimi.dart'; part 'uretim_ayari.freezed.dart'; part 'uretim_ayari.g.dart'; /// WanGP üretim parametreleri — sahne ve karakter seviyesinde override edilebilir. /// 80+ alan, bilinmeyen WanGP key'leri için `ozelAlanlar` escape hatch. @freezed class UretimAyari with _$UretimAyari { const factory UretimAyari({ // ─── Model & temel ─────────────────────────────────────────────────── @Default('i2v') String modelTipi, @Default('1280x704') String cozunurluk, @Default(Hizalama.yatay) Hizalama enBoy, @Default(81) int videoLength, // frame @Default(16) int forceFps, @Default('') String prompt, @Default('') String negativePrompt, // ─── Sampler / CFG ─────────────────────────────────────────────────── @Default(20) int numInferenceSteps, @Default(5.0) double guidanceScale, @Default(5.0) double flowShift, @Default('unipc') String sampleSolver, @Default(-1) int seed, // -1 = rastgele // ─── Image / Audio guide ───────────────────────────────────────────── String? imageStart, String? audioGuide, String? audioGuide2, // ─── LoRA ──────────────────────────────────────────────────────────── @Default([]) List activatedLoras, @Default('') String lorasMultipliers, // ─── Sliding Window ────────────────────────────────────────────────── @Default(81) int slidingWindowSize, @Default(13) int slidingWindowOverlap, // ─── Hızlandırma / quantization ────────────────────────────────────── @Default('sdpa') String attentionMode, // sage2 / sdpa / flash @Default(false) bool compileEnabled, @Default('yok') String quantization, // q8 / q6 / q4 / yok // ─── İleri ayarlar ─────────────────────────────────────────────────── @Default(false) bool riflexEnabled, @Default(false) bool nag, @Default(false) bool apg, @Default(false) bool perturbation, @Default(0) int cfgSkip, @Default('') String audioPromptType, // 'AVN', 'A', ... @Default(1) int repeatGeneration, String? cameraMotion, String? kameraMaskerleme, // ─── Post-process ──────────────────────────────────────────────────── @Default(false) bool postProcessRife, // frame interpolation String? postProcessUpscale, // "lanczos", "esrgan", null // ─── Escape hatch ──────────────────────────────────────────────────── @Default({}) Map ozelAlanlar, }) = _UretimAyari; factory UretimAyari.fromJson(Map j) => _$UretimAyariFromJson(j); /// Boş/varsayılan üretim ayarı. factory UretimAyari.bos() => const UretimAyari(); }