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
93d7f6d480
commit
0cda19458d
13 changed files with 172 additions and 50 deletions
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
use App\Enums\AiImageDeclaration;
|
||||
use App\Enums\AiTextDeclaration;
|
||||
use App\Enums\CompanyType;
|
||||
use App\Enums\Portal;
|
||||
use App\Enums\PressReleasePlaceholder;
|
||||
|
|
@ -216,6 +218,59 @@ test('release detail attributes the company itself without a distribution agency
|
|||
->assertDontSeeText('übermittelt von');
|
||||
});
|
||||
|
||||
test('release detail shows the ai label only for ai-generated declarations', function () {
|
||||
/** @var TestCase $this */
|
||||
// Art. 50 KI-VO: Option 2 (ganz/überwiegend KI) trägt das Label
|
||||
// „KI-generiert" am Anfang des Inhalts, Option 1 bleibt ohne Label.
|
||||
// KI-deklarierte Bilder tragen das Badge „KI-generiert" direkt am Bild.
|
||||
[$category, $company] = detailCategoryAndCompany(Portal::Businessportal24);
|
||||
|
||||
$aiRelease = PressRelease::factory()
|
||||
->published()
|
||||
->forPortal(Portal::Businessportal24)
|
||||
->for($category)
|
||||
->for($company)
|
||||
->create([
|
||||
'slug' => 'ki-generierte-meldung',
|
||||
'ai_text_declaration' => AiTextDeclaration::MostlyAi->value,
|
||||
'published_at' => now()->subDay(),
|
||||
]);
|
||||
|
||||
$aiRelease->images()->create([
|
||||
'disk' => 'public',
|
||||
'path' => 'press-releases/'.$aiRelease->id.'/images/title.jpg',
|
||||
'author' => 'Beispiel GmbH',
|
||||
'license_type' => 'ai_generated',
|
||||
'rights_confirmed_at' => now(),
|
||||
'is_ai_generated' => true,
|
||||
'ai_declaration' => AiImageDeclaration::AiGenerated->value,
|
||||
'is_preview' => true,
|
||||
'sort_order' => 1,
|
||||
]);
|
||||
|
||||
$this->get('https://businessportal24.test/de/press-release/'.$aiRelease->slug)
|
||||
->assertSuccessful()
|
||||
->assertSeeText('KI-generiert: Nach Angaben des einreichenden Unternehmens wurde diese Pressemitteilung ganz oder überwiegend mit generativer KI erstellt.')
|
||||
// Badge am Bild — Kurzform, nicht mehr „KI-generierte Illustration".
|
||||
->assertSeeText('KI-generiert')
|
||||
->assertDontSeeText('KI-generierte Illustration');
|
||||
|
||||
$plainRelease = PressRelease::factory()
|
||||
->published()
|
||||
->forPortal(Portal::Businessportal24)
|
||||
->for($category)
|
||||
->for($company)
|
||||
->create([
|
||||
'slug' => 'meldung-ohne-ki',
|
||||
'ai_text_declaration' => AiTextDeclaration::None->value,
|
||||
'published_at' => now()->subDay(),
|
||||
]);
|
||||
|
||||
$this->get('https://businessportal24.test/de/press-release/'.$plainRelease->slug)
|
||||
->assertSuccessful()
|
||||
->assertDontSeeText('KI-generiert');
|
||||
});
|
||||
|
||||
test('release detail counts a hit', function () {
|
||||
/** @var TestCase $this */
|
||||
[$category, $company] = detailCategoryAndCompany(Portal::Businessportal24);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue