KI-Kennzeichnung: 2 Optionen im Submit-Modal + Labels auf Detailseite
Submit-Modal auf zwei Auswahloptionen reduziert (kein Label vs.
"Ganz oder ueberwiegend mit generativer KI erstellt"); alle vier
Enum-Werte bleiben fuer API/Bestand gueltig und mappen per formOption()
auf die zwei Gruppen. Oeffentliche Detailseite rendert jetzt Text-Label
("KI-generiert: Nach Angaben ...") und Bild-Badge (KI-generiert/
KI-bearbeitet, abgedunkelter Hintergrund) — fehlte dort bisher komplett.
Bildnachweis-Vorschlag ohne "Foto:"-Praefix (stand sonst doppelt).
Einreich-Toast + FAQ: automatische Pruefung in Minuten statt 24 h.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
c8836564e9
commit
dc2a3443c1
13 changed files with 172 additions and 50 deletions
|
|
@ -5,10 +5,15 @@ namespace App\Enums;
|
|||
/**
|
||||
* Selbst-Deklaration des KI-Einsatzes beim PM-Text (Art. 50 Abs. 4 KI-VO).
|
||||
*
|
||||
* Pflichtauswahl im Submit-Flow (Decision-Update KI-Kennzeichnung, 08.07.2026):
|
||||
* gelabelt wird allein nach dem deklarierten KI-Grad, nicht nach der
|
||||
* Public-Interest-Frage — bewusste Über-Erfüllung. Das öffentliche Label
|
||||
* spricht in Einreicher-Stimme, nie in Portalstimme.
|
||||
* Pflichtauswahl im Submit-Flow (Decision-Update KI-Kennzeichnung, 08.07.2026;
|
||||
* vereinfacht auf zwei Auswahloptionen, 10.07.2026): gelabelt wird allein nach
|
||||
* dem deklarierten KI-Grad, nicht nach der Public-Interest-Frage — bewusste
|
||||
* Über-Erfüllung. Das öffentliche Label spricht in Einreicher-Stimme, nie in
|
||||
* Portalstimme.
|
||||
*
|
||||
* Alle vier Werte bleiben gültig (API-Vertrag v1 + Bestandsdaten); UI und
|
||||
* Label-Logik fassen sie zu zwei Gruppen zusammen: None/Assisted = kein Label,
|
||||
* MostlyAi/FullyAi = KI-Label.
|
||||
*/
|
||||
enum AiTextDeclaration: string
|
||||
{
|
||||
|
|
@ -18,15 +23,13 @@ enum AiTextDeclaration: string
|
|||
case FullyAi = 'fully_ai';
|
||||
|
||||
/**
|
||||
* Wortlaut der Auswahloption im Submit-Flow.
|
||||
* Wortlaut der Auswahloption im Submit-Flow (zwei Gruppen).
|
||||
*/
|
||||
public function label(): string
|
||||
{
|
||||
return match ($this) {
|
||||
self::None => __('Ohne generative KI erstellt'),
|
||||
self::Assisted => __('Mit KI als Formulierungshilfe erstellt und redaktionell überarbeitet'),
|
||||
self::MostlyAi => __('Überwiegend mit generativer KI erstellt und anschließend geprüft'),
|
||||
self::FullyAi => __('Vollständig KI-generiert (ohne wesentliche menschliche Bearbeitung)'),
|
||||
self::None, self::Assisted => __('Ohne generative KI erstellt – oder KI nur als Formulierungshilfe, mit anschließender menschlicher Überarbeitung und Verantwortung.'),
|
||||
self::MostlyAi, self::FullyAi => __('Ganz oder überwiegend mit generativer KI erstellt.'),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -39,11 +42,32 @@ enum AiTextDeclaration: string
|
|||
{
|
||||
return match ($this) {
|
||||
self::None, self::Assisted => null,
|
||||
self::MostlyAi => __('Nach Angaben des einreichenden Unternehmens wurde diese Pressemitteilung überwiegend mit generativer KI erstellt.'),
|
||||
self::FullyAi => __('Nach Angaben des einreichenden Unternehmens wurde diese Pressemitteilung vollständig mit generativer KI erstellt.'),
|
||||
self::MostlyAi, self::FullyAi => __('KI-generiert: Nach Angaben des einreichenden Unternehmens wurde diese Pressemitteilung ganz oder überwiegend mit generativer KI erstellt.'),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Kanonische Formular-Option der Gruppe — mappt Alt-/API-Werte
|
||||
* (assisted, fully_ai) auf die zwei im Modal angebotenen Radios.
|
||||
*/
|
||||
public function formOption(): self
|
||||
{
|
||||
return match ($this) {
|
||||
self::None, self::Assisted => self::None,
|
||||
self::MostlyAi, self::FullyAi => self::MostlyAi,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Die zwei im Submit-Modal angebotenen Auswahloptionen.
|
||||
*
|
||||
* @return list<self>
|
||||
*/
|
||||
public static function formCases(): array
|
||||
{
|
||||
return [self::None, self::MostlyAi];
|
||||
}
|
||||
|
||||
/**
|
||||
* Optionsliste für Radios/Selects: value => label.
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue