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
74e82eb643
commit
807fbc1b80
16 changed files with 833 additions and 3 deletions
|
|
@ -62,7 +62,7 @@
|
|||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="space-y-5" x-data="{ agb: false, images: false, contact: false, waiver: false }">
|
||||
<div class="space-y-5" x-data="{ agb: false, images: false, contact: false, waiver: false, ai: false }">
|
||||
<div>
|
||||
<flux:text class="eyebrow muted">{{ __('Veröffentlichung') }}</flux:text>
|
||||
<flux:heading size="lg">{{ __('Pressemitteilung zur Prüfung einreichen') }}</flux:heading>
|
||||
|
|
@ -104,13 +104,40 @@
|
|||
</article>
|
||||
@endif
|
||||
|
||||
{{-- KI-Kennzeichnung (Art. 50 KI-VO, Decision-Update 08.07.2026):
|
||||
Pflicht-Selbstdeklaration in jedem Veröffentlichungsprozess.
|
||||
Die Eltern-Komponente stellt die Properties über den Trait
|
||||
App\Livewire\Concerns\InteractsWithAiDeclaration bereit. --}}
|
||||
<article class="panel overflow-hidden">
|
||||
<div class="panel-head" style="padding:10px 16px;">
|
||||
<span class="section-eyebrow">
|
||||
{{ __('KI-Kennzeichnung') }}
|
||||
<span class="text-[color:var(--color-err)]">*</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="p-4 space-y-3">
|
||||
<p class="m-0 text-[12.5px] leading-[1.6] text-[color:var(--color-ink-2)]">
|
||||
{{ __('Wie wurde der Text dieser Pressemitteilung erstellt? Diese Angabe ist gesetzlich verpflichtend (Art. 50 KI-VO).') }}
|
||||
</p>
|
||||
<flux:radio.group wire:model="aiTextDeclaration">
|
||||
@foreach (\App\Enums\AiTextDeclaration::cases() as $aiOption)
|
||||
<flux:radio :value="$aiOption->value" :label="$aiOption->label()" />
|
||||
@endforeach
|
||||
</flux:radio.group>
|
||||
<flux:error name="aiTextDeclaration" />
|
||||
<p class="m-0 pt-2 border-t border-[color:var(--color-bg-rule)] text-[11.5px] leading-[1.5] text-[color:var(--color-ink-3)]">
|
||||
{{ __('Bei überwiegend oder vollständig KI-generierten Texten erscheint an der Veröffentlichung ein neutraler Hinweis in Ihrer Stimme („Nach Angaben des einreichenden Unternehmens …"). KI-generierte oder KI-bearbeitete Bilder kennzeichnen Sie direkt beim Bild-Upload.') }}
|
||||
</p>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{{-- Bestätigungen — Flux-Switches (Einheitlichkeit, 12.06.2026);
|
||||
der Alpine-State steuert weiterhin den Bestätigen-Button. --}}
|
||||
<article class="panel overflow-hidden">
|
||||
<div class="panel-head" style="padding:10px 16px;">
|
||||
<span class="section-eyebrow">{{ __('Ihre Bestätigungen') }}</span>
|
||||
<span class="shrink-0 whitespace-nowrap text-[11.5px] tabular-nums text-[color:var(--color-ink-3)]"
|
||||
x-text="[agb, images, contact, waiver].filter(Boolean).length + ' / 4'"></span>
|
||||
x-text="[agb, images, contact, waiver, ai].filter(Boolean).length + ' / 5'"></span>
|
||||
</div>
|
||||
<div class="divide-y divide-[color:var(--color-bg-rule)]">
|
||||
<div class="px-4 py-3">
|
||||
|
|
@ -145,6 +172,18 @@
|
|||
:label="__('Mir ist bekannt, dass veröffentlichte Pressemitteilungen dauerhaft archiviert werden; eine spätere Entfernung ist nur als kostenpflichtige Serviceleistung möglich (gesetzliche Ansprüche bleiben unberührt).')"
|
||||
/>
|
||||
</div>
|
||||
{{-- Verbindliche KI-Bestätigung (Art. 50 KI-VO): wire-gebunden,
|
||||
weil der Bestätigungszeitpunkt zur Nachweisbarkeit im
|
||||
Audit-Trail persistiert wird. --}}
|
||||
<div class="px-4 py-3">
|
||||
<flux:switch
|
||||
align="left"
|
||||
wire:model="aiDeclarationConfirmed"
|
||||
x-on:change="ai = $event.target.checked"
|
||||
:label="__('Ich bestätige, dass meine Angaben zum Einsatz generativer KI vollständig und wahrheitsgemäß sind.')"
|
||||
/>
|
||||
<flux:error name="aiDeclarationConfirmed" />
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
|
|
@ -154,7 +193,7 @@
|
|||
</flux:modal.close>
|
||||
<flux:button variant="primary" wire:click="{{ $action }}"
|
||||
wire:loading.attr="disabled"
|
||||
x-bind:disabled="! (agb && images && contact && waiver)">
|
||||
x-bind:disabled="! (agb && images && contact && waiver && ai)">
|
||||
{{ $confirmLabel ?? __('Veröffentlichung anfordern') }}
|
||||
</flux:button>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue