Files
fotospiel-app/docs/prp/tenant-app-specs/functional-specs.md
Codex Agent a949c8d3af - Wired the checkout wizard for Google “comfort login”: added Socialite controller + dependency, new Google env
hooks in config/services.php/.env.example, and updated wizard steps/controllers to store session payloads,
attach packages, and surface localized success/error states.
- Retooled payment handling for both Stripe and PayPal, adding richer status management in CheckoutController/
PayPalController, fallback flows in the wizard’s PaymentStep.tsx, and fresh feature tests for intent
creation, webhooks, and the wizard CTA.
- Introduced a consent-aware Matomo analytics stack: new consent context, cookie-banner UI, useAnalytics/
useCtaExperiment hooks, and MatomoTracker component, then instrumented marketing pages (Home, Packages,
Checkout) with localized copy and experiment tracking.
- Polished package presentation across marketing UIs by centralizing formatting in PresentsPackages, surfacing
localized description tables/placeholders, tuning badges/layouts, and syncing guest/marketing translations.
- Expanded docs & reference material (docs/prp/*, TODOs, public gallery overview) and added a Playwright smoke
test for the hero CTA while reconciling outstanding checklist items.
2025-10-19 11:41:03 +02:00

5.2 KiB
Raw Blame History

Funktionale Spezifikationen Tenant-Admin-App

Status

  • Version: 1.1.0 (Stand 2025-10-13)
  • Ersetzt: docs/prp/06-tenant-admin-pwa.md, docs/prp-addendum-2025-09-08-tenant-admin-pwa.md (Legacy-Referenz über Git History).

Deliverables

Die Admin-App muss folgende Kernfunktionen bereitstellen:

  • Geführtes Onboarding: Welcome Flow (Hero, How-It-Works, Paketwahl, Zusammenfassung, Erstes Event). Automatische Weiterleitung für Tenants ohne aktive Events.
  • Event-Management: Erstellen, Bearbeiten, Veröffentlichen, Archivieren; Join-Token-Verwaltung.
  • Galerie-Management: Upload, Moderation, Feature-Flags, Analytics.
  • Mitglieder-Verwaltung: Einladungen, Rollen, Zugriffskontrolle.
  • Tasks & Emotions: Bibliothek, Zuweisung, Fortschritts-Tracking.
  • Abrechnung: Paketübersicht, Stripe/PayPal Checkout, Ledger.
  • Einstellungen: Branding, Limits, Rechtstexte, Benachrichtigungen.
  • Offline-Support: App-Shell-Caching, Queueing von Mutationen, Sync bei Reconnect.
  • Compliance: Audit-Logging, GDPR-konforme Löschung, ETag-basierte Konfliktlösung.

Capabilities

Authentifizierung & Autorisierung

  • OAuth2 Authorization Code mit PKCE, Refresh-Tokens via Secure Storage (Web: IndexedDB, Capacitor: Preferences/Keychain).
  • Tenant-Scoped Tokens; Rollen tenant_admin (vollständig) & member (read-only, Upload).

Onboarding Journey

  • Routen /event-admin/welcome/* bilden den Flow.
  • Filament stellt einen korrespondierenden Onboarding-Wizard (QR/Join-Token, Layout-Download) bereit; Abschluss setzt onboarding_completed_at serverseitig.
  • useOnboardingProgress persistiert Fortschritt (localStorage) und synchronisiert mit Backend (onboarding_completed_at).
  • Paketwahl nutzt GET /tenant/packages; Stripe/PayPal-Fallbacks informieren bei fehlender Konfiguration.
  • Dashboard weist per CTA auf offenes Onboarding hin, bis ein erstes Event erstellt wurde.

Event Lifecycle

  • Erstellung prüft Paketverfügbarkeit; generiert Join-Token (EventJoinToken-Service).
  • QR-Layouts und Token-Rotation erfolgen über /event-admin/welcome bzw. das Filament-Panel; slug-basierte QR-Links wurden deaktiviert.
  • Bearbeiten erlaubt Statuswechsel, Aufgaben, Emotions, Join-Token-Verwaltung.
  • Veröffentlichen schaltet Guest-PWA frei; Archivieren respektiert Retention-Policy.

Medien & Moderation

  • Direktupload via signed URLs, Thumbnail-Generierung serverseitig.
  • Moderations-Grid mit Bulk-Aktionen, Filter (Neu, Genehmigt, Featured).
  • Analytics: Likes, Uploadzahlen, aktive Gäste.

Tasks & Emotions

  • Globale + Tenant-spezifische Bibliothek.
  • Drag-and-Drop Zuweisung, Fortschritt je Event, Emotion-Tagging.

Billing & Checkout

  • Pakete + Credit-Balance anzeigen.
  • Stripe PaymentIntent & PayPal Smart Buttons; Fallback-Meldung bei fehlender Konfiguration.
  • Ledger mit Historie (Paginierung, Filter).

Settings

  • Branding (Logo, Farben), Domain/Links, Legal Pages.
  • Notification Preferences, Paketlimits, Onboarding-Reset.

Offline & Sync

  • Service Worker public/admin-sw.js cached App-Shell /event-admin und statische Assets, liefert Offline-Fallback für Navigation.
  • Mutationen werden gequeued und nach Reconnect synchronisiert.
  • ETag / If-Match für konfliktfreie Updates, Optimistic UI mit Rollback.

Fehlerbehandlung & UX

  • Rate-Limit (429) → Retry-Hinweis.
  • Offline-Banner + Retry-Buttons an kritischen Stellen (Checkout, Upload).
  • i18n via react-i18next (de/en); Strings in public/lang/{locale}/admin.json.

API-Integration

Die App nutzt Endpunkte aus docs/prp/03-api.md.

Bereich Endpunkte
Auth POST /oauth/token, POST /oauth/token/refresh
Onboarding GET /tenant/me (Progress Flags), GET /tenant/packages, POST /tenant/events
Events GET/POST/PATCH/DELETE /tenant/events, POST /tenant/events/{event}/toggle, Join-Token Routen
Medien GET /tenant/events/{event}/photos, POST /tenant/events/{event}/photos, PATCH /tenant/photos/{id}
Tasks & Emotions GET /tenant/tasks, POST /tenant/events/{event}/tasks, GET /tenant/emotions
Settings GET/PATCH /tenant/settings, GET /tenant/credits/balance, POST /tenant/purchases/intent

Nicht-funktionale Anforderungen

  • Performance: Ladezeit < 2s; Code-Splitting der Onboarding-Screens.
  • Sicherheit: Keine sensiblen Logs; CSRF-mitigiert via PKCE/OAuth; Token-Refresh automatisiert.
  • Accessibility: Tastaturbedienung, Fokus-Indikatoren, prefers-reduced-motion.
  • Internationalisierung: Sprachumschaltung in Einstellungen; Standard de, Fallback en.

Teststrategie

  • PHPUnit: Feature-Tests für Auth-Guards (Tenant ohne Events → Welcome Flow).
  • React Testing Library: TenantWelcomeLayout, PackageSelection, OnboardingGuard, OrderSummary.
  • Playwright: tests/e2e/tenant-onboarding-flow.test.ts deckt Login, Welcome → Packages → Summary → Event Setup ab; Erweiterung um Stripe/PayPal Happy Paths und Offline/Retry geplant.
  • Smoke Tests: npm run test:e2e in CI mit optionalen Credentials (E2E_TENANT_EMAIL, E2E_TENANT_PASSWORD, Stripe/PayPal Keys).

Für UI-Details siehe docs/prp/tenant-app-specs/pages-ui.md. Einstellungen werden in docs/prp/tenant-app-specs/settings-config.md beschrieben.