78 lines
2.7 KiB
Markdown
78 lines
2.7 KiB
Markdown
# Phase 4G — Customer Portal (Mein Bereich)
|
||
|
||
> Sechstes Päckchen aus Phase 4. Folgt auf 4E
|
||
> (Profile/Settings).
|
||
|
||
**Status**: ✅ abgeschlossen · **Aufwand**: ~½ Tag · **Risiko**: niedrig–mittel
|
||
|
||
---
|
||
|
||
## Scope
|
||
|
||
**Liste / Detail / Helper**:
|
||
|
||
- `resources/views/livewire/customer/invoices.blade.php` (194 Z.)
|
||
- `resources/views/livewire/customer/tokens.blade.php` (212 Z.)
|
||
- `resources/views/livewire/customer/bookings.blade.php` (52 Z.)
|
||
- `resources/views/livewire/customer/company-switcher.blade.php`
|
||
(91 Z., sitzt in der Sidebar)
|
||
- `resources/views/livewire/customer/press-kits/index.blade.php`
|
||
(119 Z.)
|
||
- `resources/views/livewire/customer/press-kits/show.blade.php`
|
||
(734 Z., großes Detail-Cockpit)
|
||
|
||
NICHT in diesem Päckchen:
|
||
|
||
- `customer/press-releases/*` — schon in 4A/4B/4C.
|
||
- `customer/dashboard.blade.php` — schon in Phase 2.
|
||
- `customer/profile.blade.php`, `customer/security.blade.php` —
|
||
schon in 4E.
|
||
- Admin-Bereich (Päckchen 4F).
|
||
|
||
## Ziel
|
||
|
||
Alle Customer-Pages im Hub-Vokabular:
|
||
|
||
- **Page-Header** „User Backend"-Pille + Eyebrow
|
||
„Mein Bereich · …" + H1 + Subtitle.
|
||
- **KPI/Summary-Reihe** wo Stats existieren
|
||
(`<x-portal.stat-card>`).
|
||
- **Tabellen, Listen, Forms** in `.panel` mit `.panel-head`.
|
||
- **Flash-Boxen** (success/info/warn/error) auf Hub-Token.
|
||
- **Hub-Badges** statt `flux:badge` (außer dort wo speziell
|
||
begründet).
|
||
- **Empty-States** als Hub-Icon-Box.
|
||
- **Company-Switcher**: bleibt funktional, optisch Hub-Akzent.
|
||
|
||
## Was explizit NICHT angefasst wird
|
||
|
||
- Volt-Logik in allen Dateien.
|
||
- `<flux:select variant="combobox">`, `<flux:input>` usw.
|
||
- Konfirm-/Edit-Modals in `press-kits/show.blade.php` (falls
|
||
vorhanden).
|
||
- Bestimmte Strings, die Tests assertieren:
|
||
- **tokens**: „API-Tokens" (Heading),
|
||
„API-Tokens werden erst freigeschaltet" (Hinweis).
|
||
- **invoices**: „Hinweis zu Rechnungen",
|
||
„Rechnungsadresse im Profil pflegen", „Öffnen".
|
||
- **company-switcher**: „Firma öffnen",
|
||
`route('me.press-kits.show', …)`.
|
||
- **press-kits.show**: „Abrechnung", „Statistik" (Tab-Labels
|
||
bzw. Section-Headings).
|
||
|
||
## Akzeptanzkriterien
|
||
|
||
- [x] Plan
|
||
- [x] `customer/invoices`
|
||
- [x] `customer/tokens`
|
||
- [x] `customer/bookings` (Coming-Soon-Stub)
|
||
- [x] `customer/company-switcher` (Sidebar-Komponente)
|
||
- [x] `customer/press-kits/index`
|
||
- [x] `customer/press-kits/show` (Stammdaten/Kontakte/PMs/
|
||
Abrechnung/Statistik im Hub-Stil; Forms inline behalten)
|
||
- [x] `CustomerPortalTest`, `CustomerCompanyContextTest`,
|
||
`PanelConsolidationTest` grün (29 Tests, 131 Assertions).
|
||
- [x] Volle Suite: 230 passed, 3 skipped, 1 pre-existing fail
|
||
(`ApiDocumentationTest`, fehlende `docs/api/v1.yml`).
|
||
- [x] Build (portal: 418 kB CSS, 44 kB JS) + Pint clean +
|
||
PROGRESS.
|