import 'package:freezed_annotation/freezed_annotation.dart'; import 'enums.dart'; import 'karakter_kilidi.dart'; import 'karakter_referans.dart'; import 'kiyafet_preset.dart'; import 'prompt_parcalari.dart'; import 'sahne_preset.dart'; import 'ses_kimligi.dart'; import 'uretim_ayari.dart'; part 'karakter.freezed.dart'; part 'karakter.g.dart'; /// Karakter — fiko_film_studyo'nun aggregate root'u. Yüz seti + persona prompt /// + LoRA + ses kimliği + tutarlılık (kilit) tek nesnede toplanır. @freezed class Karakter with _$Karakter { const factory Karakter({ required String id, required String isim, @Default('') String rumuz, String? aciklama, @Default(Cinsiyet.belirsiz) Cinsiyet cinsiyet, @Default('tr-TR') String dil, @Default([]) List referanslar, String? birincilYuzDosyaYolu, @Default(PromptParcalari()) PromptParcalari prompt, @Default('') String negativePrompt, @Default([]) List stilEtiketleri, @Default(KarakterKilidi()) KarakterKilidi kilit, @Default([]) List kiyafetler, @Default([]) List sahneler, @Default([]) List sesler, @Default(UretimAyari()) UretimAyari varsayilanAyar, required DateTime olusturma, required DateTime guncelleme, String? sahip, // kullanici id (opsiyonel) }) = _Karakter; factory Karakter.fromJson(Map j) => _$KarakterFromJson(j); /// Boş varsayılan karakter (id ve tarih çağrı yerinde set edilir). factory Karakter.bos({required String id}) => Karakter( id: id, isim: '', olusturma: DateTime.now(), guncelleme: DateTime.now(), ); }