presseportale/app/Enums/AiImageDeclaration.php
Kevin Adametz 807fbc1b80 KI-Kennzeichnung (Art. 50 KI-VO): Pflicht-Deklaration für Text & Bilder
Selbstdeklaration des KI-Einsatzes je PM (Text) und je Bild inkl.
Submit-Gate im PressReleaseService, versioniertem Audit-Trail
(press_release_ai_declarations) und öffentlichem KI-Label in
Einreicher-Stimme. Bestätigung im Submit-Modal ist Pflicht.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-09 13:54:43 +00:00

66 lines
1.7 KiB
PHP

<?php
namespace App\Enums;
/**
* Selbst-Deklaration des KI-Einsatzes je PM-Bild (Art. 50 Abs. 4 KI-VO).
*
* Pflichtauswahl beim Bild-Upload (Decision-Update KI-Kennzeichnung,
* 08.07.2026). Bewusste Über-Erfüllung: gelabelt wird jedes deklarierte
* KI-Bild — auch stilisiert/abstrakt, nicht nur fotorealistische Deepfakes.
*/
enum AiImageDeclaration: string
{
case Original = 'original';
case AiGenerated = 'ai_generated';
case AiEdited = 'ai_edited';
/**
* Wortlaut der Auswahloption im Upload-Formular.
*/
public function label(): string
{
return match ($this) {
self::Original => __('Originalfoto'),
self::AiGenerated => __('KI-generiertes Bild'),
self::AiEdited => __('KI-bearbeitetes Bild'),
};
}
/**
* Öffentlicher Bildhinweis direkt am Bild — null bei Originalfotos
* (keine Nicht-KI-Zertifizierung in Portalstimme).
*/
public function publicLabel(): ?string
{
return match ($this) {
self::Original => null,
self::AiGenerated => __('Bildhinweis: KI-generierte Illustration.'),
self::AiEdited => __('Bildhinweis: KI-bearbeitetes Bild.'),
};
}
/**
* Optionsliste für Radios/Selects: value => label.
*
* @return array<string, string>
*/
public static function options(): array
{
$options = [];
foreach (self::cases() as $case) {
$options[$case->value] = $case->label();
}
return $options;
}
/**
* @return list<string>
*/
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}