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>
This commit is contained in:
parent
1822dcbcd1
commit
c387048d7e
16 changed files with 833 additions and 3 deletions
66
app/Enums/AiImageDeclaration.php
Normal file
66
app/Enums/AiImageDeclaration.php
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
<?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');
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue