SuperSeller3000/docs/superpowers/plans/2026-05-19-08-photo-management.md
Simon Kuehn fc18958e0e
Some checks are pending
CI / test (push) Waiting to run
feat: article photo management + eBay image URLs
- Public photo endpoint at /photos/{filename} (no auth, UUID-based filenames)
- Admin photo management page per article: upload multiple, delete, set main, drag-reorder
- "Fotos verwalten" action button on article index + detail pages
- EbayAdapter.publishListing() now includes imageUrls (main photo first, max 24)
- APP_PUBLIC_URL env var for absolute URL generation in Messenger workers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 10:51:03 +00:00

1.8 KiB

SuperSeller3000 — Plan 8: Artikel-Fotoverwaltung + eBay-Bildintegration

Goal: Fotos können für einen Artikel nachträglich verwaltet werden (hinzufügen, löschen, Hauptfoto setzen). Beim eBay-Listing werden die Fotos als imageUrls übergeben. Dafür gibt es einen öffentlichen (nicht auth-geschützten) Foto-Endpoint, den eBay direkt abrufen kann.


Schritte

1. Öffentlicher Foto-Endpoint

  • PublicPhotoController — Route /photos/{filename} ohne @IsGranted
  • Dateiname ist UUID-basiert (ausreichend opak, kein HMAC-Signing nötig)
  • APP_PUBLIC_URL env var (z. B. https://ss3k.schaunwama.de) für absolute URL-Generierung

2. Fotoverwaltungs-Seite im Admin

  • PhotoManagementController/admin/articles/{id}/photos
  • Zeigt alle Fotos mit Hauptfoto-Markierung
  • Aktionen: Upload (neue Fotos), Löschen, Hauptfoto setzen
  • "Fotos verwalten" Button in ArticleCrudController (Index + Detail)
  • Twig-Template im EasyAdmin-Layout

3. imageUrls in eBay-Listings

  • EbayAdapter bekommt $publicBaseUrl injiziert
  • publishListing(): Fotos des Artikels als imageUrls in upsertInventoryItem (max. 24, Hauptfoto zuerst)

Dateien

src/Infrastructure/Http/Controller/PublicPhotoController.php     ← NEU
src/Infrastructure/Http/Controller/Admin/PhotoManagementController.php  ← NEU
templates/admin/photo_management.html.twig                      ← NEU
src/Infrastructure/Channel/Ebay/EbayAdapter.php                 ← imageUrls
src/Infrastructure/Http/Controller/Admin/ArticleCrudController.php  ← Button
config/services.yaml                                            ← publicBaseUrl
.env                                                            ← APP_PUBLIC_URL
translations/admin.de.yaml + admin.en.yaml                      ← neue Keys