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:
Kevin Adametz 2026-07-09 13:54:43 +00:00
parent 1822dcbcd1
commit c387048d7e
16 changed files with 833 additions and 3 deletions

View file

@ -2,6 +2,7 @@
namespace Database\Factories;
use App\Enums\AiTextDeclaration;
use App\Enums\Portal;
use App\Enums\PressReleaseStatus;
use App\Models\Category;
@ -35,9 +36,25 @@ class PressReleaseFactory extends Factory
'status' => PressReleaseStatus::Draft->value,
'hits' => 0,
'no_export' => false,
// KI-Kennzeichnung (Art. 50 KI-VO): Standard „ohne KI", bestätigt —
// damit erfüllen Test-PMs den Submit-Guard. Gate-Tests setzen die
// Felder explizit auf null (siehe aiUndeclared()).
'ai_text_declaration' => AiTextDeclaration::None->value,
'ai_declaration_confirmed_at' => now(),
];
}
/**
* PM ohne KI-Deklaration — zum Testen des Submit-Gates (Art. 50 KI-VO).
*/
public function aiUndeclared(): static
{
return $this->state([
'ai_text_declaration' => null,
'ai_declaration_confirmed_at' => null,
]);
}
public function published(): static
{
return $this->state([