- Provider-Status/Uptime: Stripe-Kachel aktiviert; payment:check-uptime prüft zusätzlich api.stripe.com/v1/ (401 ohne Key = erreichbar) inkl. Auto-Incident - Zahlungen: Anbieter-Filter, Provider-Badges, Umsatz je Provider, Stripe-Dashboard-Deep-Links (ShoppingPayment/PaymentTransaction:: stripeDashboardUrl, pi_-Guard, testmodus-bewusst) - Rohe Transaktionen: Anbieter-Filter/-Spalte, Erfolgsraten je Anbieter; Bugfix: Stringable-Vergleich ließ den txaction-Filter immer mit leerem Wert greifen — Liste war dauerhaft leer - Neue Kachel „Abos je Anbieter" (Index + GF-Ansicht) mit Fehlerzählern und Stripe-Anteil-Fortschrittsbalken (Auslaufmodell PAYONE → Stripe ablesbar) - Incident-Kachel weist Stripe/PAYONE getrennt aus; Log-Viewer mit Kanal-Umschalter stripe/payone - Plan-Doku: S7.4-Umsetzungsstatus, Abo-Go-Live 2026-07-10 vermerkt Tests: PaymentDashboardProviderTest (9 neu), Dashboard-Suite 49 grün. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
67 lines
3 KiB
PHP
67 lines
3 KiB
PHP
<div class="row mb-4">
|
|
<div class="col-sm-6 col-xl-2">
|
|
<div class="card {{ $stats['critical_open'] > 0 ? 'border-danger' : '' }}">
|
|
<div class="card-body text-center">
|
|
<div class="text-muted small">Offene Incidents</div>
|
|
<div class="display-4 font-weight-bold {{ $stats['open_incidents'] > 0 ? 'text-danger' : 'text-success' }}">
|
|
{{ $stats['open_incidents'] }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-xl-2">
|
|
<div class="card">
|
|
<div class="card-body text-center">
|
|
<div class="text-muted small">In Bearbeitung</div>
|
|
<div class="display-4 font-weight-bold {{ $stats['in_progress'] > 0 ? 'text-warning' : 'text-muted' }}">
|
|
{{ $stats['in_progress'] }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-xl-2">
|
|
<div class="card">
|
|
<div class="card-body text-center">
|
|
<div class="text-muted small">Incidents (30 Tage)</div>
|
|
<div class="display-4 font-weight-bold text-info">
|
|
{{ $stats['stripe_incidents_30d'] + $stats['payone_incidents_30d'] }}
|
|
</div>
|
|
<div class="text-muted" style="font-size:0.7rem">
|
|
Stripe {{ $stats['stripe_incidents_30d'] }} · PAYONE {{ $stats['payone_incidents_30d'] }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-xl-2">
|
|
<div class="card">
|
|
<div class="card-body text-center">
|
|
<div class="text-muted small">Gelöst (Monat)</div>
|
|
<div class="display-4 font-weight-bold text-success">
|
|
{{ $stats['resolved_this_month'] }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-xl-2">
|
|
<div class="card">
|
|
<div class="card-body text-center">
|
|
<div class="text-muted small">Erfolgsrate Zahlung</div>
|
|
<div class="display-4 font-weight-bold {{ $transactionStats['success_rate'] < 90 ? 'text-warning' : 'text-success' }}">
|
|
{{ $transactionStats['success_rate'] }}%
|
|
</div>
|
|
<div class="text-muted" style="font-size:0.7rem">letzte {{ $transactionStats['days'] }} Tage</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-sm-6 col-xl-2">
|
|
<div class="card {{ $transactionStats['failed'] > 0 ? 'border-warning' : '' }}">
|
|
<div class="card-body text-center">
|
|
<div class="text-muted small">Fehlgeschlagen</div>
|
|
<div class="display-4 font-weight-bold {{ $transactionStats['failed'] > 0 ? 'text-danger' : 'text-success' }}">
|
|
{{ $transactionStats['failed'] }}
|
|
</div>
|
|
<div class="text-muted" style="font-size:0.7rem">letzte {{ $transactionStats['days'] }} Tage</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|