*/ use HasFactory; public $timestamps = false; public const TYPE_CLASSIFICATION = 'classification'; public const TYPE_CONTENT_SCORE = 'content_score'; /** KI-Vorab-Check eines Bildes (Bildkennzeichnung Block K); `raw_response.image_id` ist null bei Ablehnung vor dem Speichern. */ public const TYPE_IMAGE_PRECHECK = 'image_precheck'; /** Menschliche Entscheidung zur Bild-Sichtung (approved|rejected) mit Vermerk in `reason`. */ public const TYPE_IMAGE_PRECHECK_REVIEW = 'image_precheck_review'; protected $fillable = [ 'press_release_id', 'type', 'provider', 'model', 'result', 'reason', 'raw_response', 'content_hash', 'discarded_at', 'created_at', ]; protected function casts(): array { return [ 'raw_response' => 'array', 'created_at' => 'datetime', 'discarded_at' => 'datetime', ]; } /** * @return BelongsTo */ public function pressRelease(): BelongsTo { return $this->belongsTo(PressRelease::class); } }