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
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Models;
|
||||
|
||||
use App\Enums\AiTextDeclaration;
|
||||
use App\Enums\Portal;
|
||||
use App\Enums\PressReleaseClassification;
|
||||
use App\Enums\PressReleaseContentTier;
|
||||
|
|
@ -71,6 +72,8 @@ class PressRelease extends Model
|
|||
'placeholder_variant',
|
||||
'backlink_url',
|
||||
'keywords',
|
||||
'ai_text_declaration',
|
||||
'ai_declaration_confirmed_at',
|
||||
'status',
|
||||
'classification',
|
||||
'classified_at',
|
||||
|
|
@ -95,6 +98,8 @@ class PressRelease extends Model
|
|||
return [
|
||||
'portal' => Portal::class,
|
||||
'placeholder_variant' => PressReleasePlaceholder::class,
|
||||
'ai_text_declaration' => AiTextDeclaration::class,
|
||||
'ai_declaration_confirmed_at' => 'datetime',
|
||||
'status' => PressReleaseStatus::class,
|
||||
'classification' => PressReleaseClassification::class,
|
||||
'classified_at' => 'datetime',
|
||||
|
|
@ -166,6 +171,25 @@ class PressRelease extends Model
|
|||
return $this->hasMany(PressReleaseStatusLog::class)->orderByDesc('created_at');
|
||||
}
|
||||
|
||||
/**
|
||||
* Versionierter Audit-Trail der KI-Deklarationen (Art. 50 KI-VO) —
|
||||
* jeder Submit erzeugt einen neuen, unveränderlichen Eintrag.
|
||||
*/
|
||||
public function aiDeclarations(): HasMany
|
||||
{
|
||||
return $this->hasMany(PressReleaseAiDeclaration::class)->orderByDesc('created_at');
|
||||
}
|
||||
|
||||
/**
|
||||
* Öffentliches KI-Label in Einreicher-Stimme — null, wenn nach dem
|
||||
* deklarierten KI-Grad kein Pflicht-Label fällig ist (ohne KI /
|
||||
* Formulierungshilfe) oder noch keine Deklaration vorliegt.
|
||||
*/
|
||||
public function aiTextPublicLabel(): ?string
|
||||
{
|
||||
return $this->ai_text_declaration?->publicLabel();
|
||||
}
|
||||
|
||||
/**
|
||||
* Öffentliche Detailseiten je Portal, auf dem die PM erscheint
|
||||
* (bei Portal::Both beide Spokes). Zentrale Quelle für Mail,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue