(int) env('IMAGE_MAX_BYTES', 16 * 1024 * 1024), 'max_pixels_per_side' => (int) env('IMAGE_MAX_PIXELS_PER_SIDE', 8000), /* |-------------------------------------------------------------------------- | Formular v2 (Bildkennzeichnung, Decision-Update 22.09.2026) |-------------------------------------------------------------------------- | | rights_v2: Deploy-Sicherung. Bei false verhält sich alles wie vor der | Umstellung (altes Formular, alte API-Pflichtfelder). Wartet nicht auf | den Anwalt (Decision-Update E14). | | rules_version: Marker an jedem Bild, das über den neuen Uploader kam. | NULL = Bestand vor der Umstellung (Legacy-Import oder altes Formular). | */ 'rights_v2' => (bool) env('IMAGE_RIGHTS_V2', false), 'rules_version' => '2026-10', /* |-------------------------------------------------------------------------- | Herkunftsprüfung (A.5) |-------------------------------------------------------------------------- | | provenance_timeout_seconds: Zeitbudget der Metadatenprüfung. Wird es | überschritten oder wirft die Prüfung, gilt der Status `error` — das | Formular zeigt dann „konnte nicht geprüft werden", nicht „keine | Herkunftsdaten" (Feedback F10). | */ 'provenance_timeout_seconds' => (int) env('IMAGE_PROVENANCE_TIMEOUT', 10), /* |-------------------------------------------------------------------------- | Bestätigungsprotokoll (A.2) |-------------------------------------------------------------------------- | | confirmation_ip_key: eigener Schlüssel für die HMAC-Ableitung der | IP-Adresse im Bestätigungsprotokoll. Pseudonymisiert, nicht anonym: Mit | dem Schlüssel lässt sich prüfen, ob eine Adresse passt, ohne ihn nicht. | Fällt auf APP_KEY zurück, solange kein eigener gesetzt ist. | | confirmation_ip_hash_version: Präfix im gespeicherten Wert, damit ein | Schlüsselwechsel alte Einträge nicht unbrauchbar macht. | */ 'confirmation_ip_key' => env('CONFIRMATION_IP_KEY') ?: env('APP_KEY'), 'confirmation_ip_hash_version' => 'v1', /* |-------------------------------------------------------------------------- | Ablage (A.6, E.2) |-------------------------------------------------------------------------- | | Beweisoriginal und Snapshot der veröffentlichten Fassung liegen auf der | privaten Disk, getrennt vom Derivat-Ordner. Sie sind nie über die | Medienroute erreichbar (E.4). | */ 'originals_disk' => env('IMAGE_ORIGINALS_DISK', 'local'), 'originals_directory' => 'press-release-originals', 'published_snapshot_directory' => 'press-release-published', /* |-------------------------------------------------------------------------- | KI-Vorab-Check für Bilder (Bildkennzeichnung Block K, DU Abschnitt 12) |-------------------------------------------------------------------------- | | Sichtung jedes neuen Titelbilds auf offensichtliche Probleme durch ein | Vision-Modell. Keine Rechteprüfung; öffentlich bleibt es „automatisierte | Prüfung". Drei Regeln: jeder Befund hat einen definierten Ausgang, der | Check setzt nie die KI-Kennzeichnung, Fehler lassen durch. | | enabled: Standard aus. Einschalten erst nach AVV mit dem Anbieter und | DSE-Absatz (K.6). | stage: 1 = nur Stock-Wasserzeichen wird ausgewertet (alle Kategorien | werden abgefragt und protokolliert), 2 = alle Kategorien. | provider/model/timeout: wie die Text-Prüfstrecke (services.openai). | reject_threshold / queue_threshold: Konfidenz, ab der die Kategorie | ihren Ausgang auslöst (DU 12.4: 0,85 / 0,6). | downgrade_to_queue: Ablehnungskategorien, die bei gehäuften Fehlurteilen | nur noch in die Queue gehen (DU 12.8), kommagetrennt. | */ 'precheck' => [ 'enabled' => (bool) env('IMAGE_PRECHECK', false), 'stage' => (int) env('IMAGE_PRECHECK_STAGE', 1), 'provider' => env('IMAGE_PRECHECK_PROVIDER', 'openai'), 'model' => env('IMAGE_PRECHECK_MODEL'), 'timeout' => (int) env('IMAGE_PRECHECK_TIMEOUT', 20), 'reject_threshold' => (float) env('IMAGE_PRECHECK_REJECT_THRESHOLD', 0.85), 'queue_threshold' => (float) env('IMAGE_PRECHECK_QUEUE_THRESHOLD', 0.6), 'downgrade_to_queue' => array_values(array_filter(array_map('trim', explode(',', (string) env('IMAGE_PRECHECK_DOWNGRADE', ''))))), 'max_edge' => 1024, 'jpeg_quality' => 82, 'prompt_version' => 'img-precheck-2026-09', ], ];