SuperSeller3000/docs/superpowers/plans/2026-05-19-08-photo-management.md

42 lines
1.8 KiB
Markdown
Raw Normal View History

# 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
```