2.9 KiB
2.9 KiB
Design-Spec — Panel-Verbesserungen (Phase C)
Datum: 2026-07-25 · Art: Feature-Batch (Admin + Kundenportal)
Nach A (Host-Onboarding) + B (Kunden-Provisionierung): UX-/Feature-Lücken aus Nutzer-Review.
Entscheidungen (fix)
- Kauf-Flow: volle Kaufoberfläche + Kauf-Intent (Order), Stripe-Redirect + Fulfillment (Resize) gemockt — läuft ohne Keys, später scharf.
- Impersonation: volle Session-Impersonation als Kunden-User + Rückkehr-Banner. Dafür Customer↔User verknüpfen.
1. Rechenzentren (anlegen + Select)
datacenters(uuid,codeunique z. B.fsn,name,location?,active). Model. Seedfsn=Falkenstein,hel=Helsinki.- Admin
/admin/datacenters(Livewire: Liste + Anlegen), Nav-Eintrag. HostCreate+ kundenseitige DC-Wahl: Select ausDatacenter::where('active').hosts.datacenterbleibt der Code-String (Placement/placeableInunverändert) —datacentersliefert die gültigen Codes + Namen.
2. Sidebars fixieren + Speicher-Banner-Shimmer
- Admin- + Portal-Layout: Sidebar auf
lgfix (nurmainscrollt). Shell: Flex-Containerlg:h-dvh lg:overflow-hidden,asidevolle Höhe,mainlg:overflow-y-auto. - Dashboard-Speicher-Banner: Shimmer (Gradient-Flash links→rechts) als Overlay-Keyframe (
@verbatim/Token-Farben), respektiertprefers-reduced-motion.
3. /admin/provisioning rechte Spalte
- Aktuell: alle 15 Steps mit repetitivem „Fertig" → unübersichtlich. Neu (frontend-design): kompakt — Fortschrittsbalken +
X/15, aktueller Schritt hervorgehoben, letzte/nächste Schritte knapp; keine Wiederholung.
4. Kunden-Commerce
- Aktuelles Paket (aus aktiver
instance/order), Upgrade-Optionen (andereplans), Zusatzspeicher (+100 GB / 10 €), Addons (Kachel-Katalog). - Kauf →
orders-Row (type= upgrade|storage|addon,status=pending) als Intent; Stripe-Redirect + Fulfillment gemockt (Toast „Kauf vorgemerkt"). frontend-design UI (neue Portal-Route/billing+ Verknüpfung vom Dashboard-Upsell). ordersbekommttype(defaultnew) +addon_key?.
5. Admin-Impersonation
customers.user_id(nullable FK). Beim Order-Eingang/Seed: User je Customer finden/anlegen (E-Mail-Match) + verknüpfen.- Admin
/admin/impersonate/{customer}(admin-gated) → Original-Admin-ID in Session,Auth::login($customer->user), Redirect/dashboard./impersonate/leave→ zurück als Admin. - Portal-Layout: Banner „Als :name verbunden — zurück zum Admin" wenn
session('impersonator_id'). Admin\Customersan echte Kunden binden + „Verbinden"-Button.
6. Verifikation
- Pest grün · DE+EN identische Keys · R12 (0 Konsolenfehler, neue Seiten) · R15 Codex clean · Dev migrate/seed · Push.
Regeln
R1–R17 gelten (klassenbasierte Livewire, nur Token-Utilities, keine Emoji, UUID-URLs, DE+EN, R12/R15). frontend-design für die UI-Teile.