fix: anpassungen lt. Besprechung Frontend/ Powerpoint 10-11-2025

This commit is contained in:
2025-11-10 21:35:52 +01:00
parent 08faf9fb86
commit 64b8ff48da
2 changed files with 133 additions and 121 deletions
+24 -12
View File
@@ -34,13 +34,23 @@
$formatNumber = static fn ($value): string => number_format($value, 0, ',', '.'); $formatNumber = static fn ($value): string => number_format($value, 0, ',', '.');
$riskSegments = collect([ $riskSegments = collect([
'Kritisch (≥80)' => $transactions->filter(fn ($trx) => $trx->risk_score >= 80), 'Kritisch (≥80)' => [
'Hoch (65-79)' => $transactions->filter(fn ($trx) => $trx->risk_score >= 65 && $trx->risk_score < 80), 'transactions' => $transactions->filter(fn ($trx) => $trx->risk_score >= 80),
'Beobachtung (40-64)' => $transactions->filter(fn ($trx) => $trx->risk_score >= 40 && $trx->risk_score < 65), 'status' => \App\Models\Transaction::STATUS_TRUE_POSITIVE,
])->map(fn ($group, $label) => [ ],
'Hoch (65-79)' => [
'transactions' => $transactions->filter(fn ($trx) => $trx->risk_score >= 65 && $trx->risk_score < 80),
'status' => \App\Models\Transaction::STATUS_FALSE_POSITIVE,
],
'Gering (40-64)' => [
'transactions' => $transactions->filter(fn ($trx) => $trx->risk_score >= 40 && $trx->risk_score < 65),
'status' => \App\Models\Transaction::STATUS_CLEARED,
],
])->map(fn ($data, $label) => [
'label' => $label, 'label' => $label,
'count' => $group->count(), 'count' => $data['transactions']->count(),
'volume' => $group->sum('amount'), 'volume' => $data['transactions']->sum('amount'),
'status' => $data['status'],
]); ]);
$topCompanies = $activeAlerts $topCompanies = $activeAlerts
@@ -94,22 +104,24 @@
<div class="rounded-3xl border border-zinc-200/70 bg-white/95 p-6 shadow-sm backdrop-blur dark:border-zinc-700/70 dark:bg-zinc-900/90"> <div class="rounded-3xl border border-zinc-200/70 bg-white/95 p-6 shadow-sm backdrop-blur dark:border-zinc-700/70 dark:bg-zinc-900/90">
<div class="flex flex-wrap items-end justify-between gap-4"> <div class="flex flex-wrap items-end justify-between gap-4">
<div> <div>
<h2 class="text-xl font-semibold text-zinc-900 dark:text-zinc-100">Risikolassen und Automatisierungsscore</h2> <h2 class="text-xl font-semibold text-zinc-900 dark:text-zinc-100">Risikoklassen und Automatisierungsscore</h2>
</div> </div>
<div class="inline-flex items-center gap-2 rounded-full border border-indigo-200/70 bg-indigo-500/10 px-4 py-1.5 text-xs font-semibold uppercase tracking-wide text-indigo-700 dark:border-indigo-500/30 dark:text-indigo-200"> <div class="inline-flex items-center gap-2 rounded-full border border-indigo-200/70 bg-indigo-500/10 px-4 py-1.5 text-xs font-semibold uppercase tracking-wide text-indigo-700 dark:border-indigo-500/30 dark:text-indigo-200">
Automationspräzision {{ $precisionRate }}% Automatisierungsscore {{ $precisionRate }}%
</div> </div>
</div> </div>
<div class="mt-6 grid gap-3"> <div class="mt-6 grid gap-3">
@foreach ($riskSegments as $segment) @foreach ($riskSegments as $segment)
<div class="flex items-center justify-between gap-4 rounded-2xl border border-zinc-200/70 bg-zinc-50/80 p-4 transition hover:-translate-y-0.5 hover:shadow-md dark:border-zinc-700/60 dark:bg-zinc-800/70"> <a
href="{{ route('transaction-review', ['status' => $segment['status']]) }}"
class="flex items-center justify-between gap-4 rounded-2xl border border-zinc-200/70 bg-zinc-50/80 p-4 transition hover:-translate-y-0.5 hover:shadow-md hover:border-indigo-300/70 hover:bg-indigo-50/50 dark:border-zinc-700/60 dark:bg-zinc-800/70 dark:hover:border-indigo-500/50 dark:hover:bg-indigo-900/20 cursor-pointer group">
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">
<span class="inline-flex h-10 w-10 items-center justify-center rounded-full bg-gradient-to-br from-indigo-500 to-emerald-500 text-sm font-semibold text-white"> <span class="inline-flex h-10 w-10 items-center justify-center rounded-full bg-gradient-to-br from-indigo-500 to-emerald-500 text-sm font-semibold text-white group-hover:scale-110 transition-transform">
{{ $loop->iteration }} {{ $loop->iteration }}
</span> </span>
<div> <div>
<p class="text-sm font-semibold text-zinc-900 dark:text-zinc-100">{{ $segment['label'] }}</p> <p class="text-sm font-semibold text-zinc-900 dark:text-zinc-100 group-hover:text-indigo-700 dark:group-hover:text-indigo-300">{{ $segment['label'] }}</p>
<p class="text-xs text-zinc-500 dark:text-zinc-400">{{ $formatNumber($segment['count']) }} Beobachtungen</p> <p class="text-xs text-zinc-500 dark:text-zinc-400">{{ $formatNumber($segment['count']) }} Beobachtungen</p>
</div> </div>
</div> </div>
@@ -117,7 +129,7 @@
<p class="text-xs uppercase tracking-wide text-zinc-400">Volumen</p> <p class="text-xs uppercase tracking-wide text-zinc-400">Volumen</p>
<p class="text-sm font-semibold text-zinc-900 dark:text-zinc-100">{{ $formatCurrencyCompact($segment['volume']) }}</p> <p class="text-sm font-semibold text-zinc-900 dark:text-zinc-100">{{ $formatCurrencyCompact($segment['volume']) }}</p>
</div> </div>
</div> </a>
@endforeach @endforeach
</div> </div>
</div> </div>
@@ -80,9 +80,9 @@ new #[Layout('components.layouts.app'), Title('Transaktionsprüfung')] class ext
{ {
return [ return [
'all' => 'Alle Prüfaufträge', 'all' => 'Alle Prüfaufträge',
Transaction::STATUS_TRUE_POSITIVE => 'Bestätigte Treffer', Transaction::STATUS_TRUE_POSITIVE => 'Kritisches Risiko',
Transaction::STATUS_FALSE_POSITIVE => 'Fehlalarme', Transaction::STATUS_FALSE_POSITIVE => 'Hohes Risiko',
Transaction::STATUS_CLEARED => 'Freigegebene Vorgänge', Transaction::STATUS_CLEARED => 'Geringes Risiko',
]; ];
} }
@@ -261,17 +261,17 @@ Transaction::STATUS_CLEARED => [
<p class="mt-1 text-xs text-slate-300">Volumen: {{ $formatAmount($total['amount']) }}</p> <p class="mt-1 text-xs text-slate-300">Volumen: {{ $formatAmount($total['amount']) }}</p>
</div> </div>
<div class="rounded-2xl border border-rose-400/40 bg-rose-500/15 p-4 text-center backdrop-blur-sm shadow-lg shadow-rose-900/40"> <div class="rounded-2xl border border-rose-400/40 bg-rose-500/15 p-4 text-center backdrop-blur-sm shadow-lg shadow-rose-900/40">
<p class="text-xs font-medium uppercase tracking-wide text-rose-50">Bestätigte Treffer</p> <p class="text-xs font-medium uppercase tracking-wide text-rose-50">Kritisches Risiko</p>
<p class="text-2xl font-semibold text-rose-100">{{ $confirmed['count'] }}</p> <p class="text-2xl font-semibold text-rose-100">{{ $confirmed['count'] }}</p>
<p class="mt-1 text-xs text-rose-100/80">Volumen: {{ $formatAmount($confirmed['amount']) }}</p> <p class="mt-1 text-xs text-rose-100/80">Volumen: {{ $formatAmount($confirmed['amount']) }}</p>
</div> </div>
<div class="rounded-2xl border border-amber-400/40 bg-amber-400/15 p-4 text-center backdrop-blur-sm shadow-lg shadow-amber-900/30"> <div class="rounded-2xl border border-amber-400/40 bg-amber-400/15 p-4 text-center backdrop-blur-sm shadow-lg shadow-amber-900/30">
<p class="text-xs font-medium uppercase tracking-wide text-amber-50">Fehlalarme</p> <p class="text-xs font-medium uppercase tracking-wide text-amber-50">Hohes Risiko</p>
<p class="text-2xl font-semibold text-amber-100">{{ $falseAlarm['count'] }}</p> <p class="text-2xl font-semibold text-amber-100">{{ $falseAlarm['count'] }}</p>
<p class="mt-1 text-xs text-amber-100/80">Volumen: {{ $formatAmount($falseAlarm['amount']) }}</p> <p class="mt-1 text-xs text-amber-100/80">Volumen: {{ $formatAmount($falseAlarm['amount']) }}</p>
</div> </div>
<div class="rounded-2xl border border-emerald-400/40 bg-emerald-400/15 p-4 text-center backdrop-blur-sm shadow-lg shadow-emerald-900/30"> <div class="rounded-2xl border border-emerald-400/40 bg-emerald-400/15 p-4 text-center backdrop-blur-sm shadow-lg shadow-emerald-900/30">
<p class="text-xs font-medium uppercase tracking-wide text-emerald-50">Freigegeben</p> <p class="text-xs font-medium uppercase tracking-wide text-emerald-50">Geringes Risiko</p>
<p class="text-2xl font-semibold text-emerald-100">{{ $cleared['count'] }}</p> <p class="text-2xl font-semibold text-emerald-100">{{ $cleared['count'] }}</p>
<p class="mt-1 text-xs text-emerald-100/80">Volumen: {{ $formatAmount($cleared['amount']) }}</p> <p class="mt-1 text-xs text-emerald-100/80">Volumen: {{ $formatAmount($cleared['amount']) }}</p>
</div> </div>