KI-Bildkennzeichnung 1/6: Custom Field Set "media" (ai_status/ai_type) + CustomFieldsInstaller-Generalisierung #4
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Rechtlicher Hintergrund
Ab 02.08.2026 verlangt Art. 50 Abs. 4 KI-VO eine sichtbare Kennzeichnung von KI-generierten/-veränderten Produktbildern im Shop. Dies ist Teil 1 von 6 der Serie "KI-Bildkennzeichnung" (siehe verlinkte Issues für die weiteren Teile).
Ziel
src/Service/CustomFieldsInstaller.phpgeneralisieren, sodass sie über eine Liste von Custom-Field-Set-Definitionen iteriert (bestehendesproduct-Set + neuesmedia-Set), statt Set-Name/Entity-Name fest zu verdrahten. Die bestehende Upsert-Logik (upsertCustomField(), Typ-Änderung → delete+create, Set/Feld getrennt upserten) bleibt unverändert und wird für beide Sets wiederverwendet.Neues Custom Field Set
wsc_ai_seo_media_ai(Label "KI-Bildkennzeichnung"),entityName = 'media'Neue Felder (Konstanten-Namen NIEMALS umbenennen)
FIELD_MEDIA_AI_STATUS(wsc_ai_seo_media_ai_status), TypBOOL/switch— wird automatisch vom Upload-Scan (Issue 2) gesetzt (true bei erkanntem C2PA-digitalSourceType). Bleibt im Admin editierbar (Shopware Custom Fields kennen kein echtes Read-Only), dient primär als Auto-Flag.FIELD_MEDIA_AI_TYPE(wsc_ai_seo_media_ai_type), TypSELECT, manuell vom Admin gepflegt:fully_generated— "Vollständig KI-generiert"ai_modified— "KI-verändert"not_ai_confirmed— "Kein KI-Inhalt (manuell bestätigt)" — erlaubt dem Admin, einen False-Positive des automatischen Scans gezielt zu korrigieren.Weitere Anpassungen
addRelations(): zusätzliche RelationentityName = 'media'uninstall(): zusätzlicherJSON_REMOVE-Block gegenmedia_translation.custom_fields(gleiches Muster wie bestehenderproduct_translation-Cleanup)src/Resources/config/services.xml: bestehendeCustomFieldsInstaller-Service-Definition hat nur 3 Argumente, Klasse braucht aber 4 (Connectionfehlt) — bei dieser Gelegenheit mit fixentests/Unit/Service/CustomFieldsInstallerTest.php(Konstruktor-Argument-Mismatch, veraltete Assertions gegen alte Upsert-Logik) wird hier mit repariertAkzeptanzkriterien
plugin:updateCustomFieldsInstallerTest.phpgrünmedia_translation.custom_fieldssauber