diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index 86da9ed..a54d83c 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -1,208 +1,206 @@ @php - $transactions = \App\Models\Transaction::with('company')->get(); - $totalVolume = $transactions->sum('amount'); - $activeAlerts = $transactions->where('requires_review', true); - $highRiskAlerts = $activeAlerts->filter(fn ($trx) => $trx->risk_score >= 80); + $transactions = \App\Models\Transaction::with('company')->get(); + $totalVolume = $transactions->sum('amount'); + $activeAlerts = $transactions->where('requires_review', true); + $highRiskAlerts = $activeAlerts->filter(fn ($trx) => $trx->risk_score >= 80); - $registeredUsers = \App\Models\User::count(); - $activeAnalysts = max($registeredUsers, 18); + $registeredUsers = \App\Models\User::count(); + $activeAnalysts = max($registeredUsers, 18); - $alertsToday = $activeAlerts->filter(function ($trx) { - return optional($trx->executed_at)->isToday(); - })->count(); - if ($alertsToday === 0) { - $alertsToday = random_int(48, 72); - } - $averagePerAnalyst = max(1, round($alertsToday / max($activeAnalysts, 1))); + $alertsToday = $activeAlerts->filter(function ($trx) { + return optional($trx->executed_at)->isToday(); + })->count(); + if ($alertsToday === 0) { + $alertsToday = random_int(48, 72); + } + $averagePerAnalyst = max(1, round($alertsToday / max($activeAnalysts, 1))); - $precisionRate = 100 - round( - $transactions->where('status', \App\Models\Transaction::STATUS_FALSE_POSITIVE)->count() - / max($transactions->count(), 1) * 42 - ); - if ($precisionRate < 72) { - $precisionRate = random_int(78, 89); + $precisionRate = 100 - round( + $transactions->where('status', \App\Models\Transaction::STATUS_FALSE_POSITIVE)->count() + / max($transactions->count(), 1) * 42 + ); + if ($precisionRate < 72) { + $precisionRate=random_int(78, 89); } - $formatCurrency = static fn (float $value): string => number_format($value, 2, ',', '.') . ' €'; + $formatCurrency=static fn (float $value): string=> number_format($value, 2, ',', '.') . ' €'; $formatNumber = static fn ($value): string => number_format($value, 0, ',', '.'); $riskSegments = collect([ - 'Kritisch (≥80)' => $transactions->filter(fn ($trx) => $trx->risk_score >= 80), - 'Hoch (65-79)' => $transactions->filter(fn ($trx) => $trx->risk_score >= 65 && $trx->risk_score < 80), - 'Beobachtung (40-64)' => $transactions->filter(fn ($trx) => $trx->risk_score >= 40 && $trx->risk_score < 65), - 'Routine (<40)' => $transactions->filter(fn ($trx) => $trx->risk_score < 40), - ])->map(fn ($group, $label) => [ - 'label' => $label, - 'count' => $group->count(), - 'volume' => $group->sum('amount'), - ]); + 'Kritisch (≥80)' => $transactions->filter(fn ($trx) => $trx->risk_score >= 80), + 'Hoch (65-79)' => $transactions->filter(fn ($trx) => $trx->risk_score >= 65 && $trx->risk_score < 80), 'Beobachtung (40-64)'=> $transactions->filter(fn ($trx) => $trx->risk_score >= 40 && $trx->risk_score < 65), 'Routine (<40)'=> $transactions->filter(fn ($trx) => $trx->risk_score < 40), + ])->map(fn ($group, $label) => [ + 'label' => $label, + 'count' => $group->count(), + 'volume' => $group->sum('amount'), + ]); - $topCompanies = $activeAlerts - ->groupBy('company_id') - ->map(fn ($group) => [ - 'company' => optional($group->first()->company)->legal_name ?? optional($group->first()->company)->name ?? 'Unbekanntes Unternehmen', - 'alerts' => $group->count(), - 'volume' => $group->sum('amount'), - 'avg_risk' => (int) round($group->avg('risk_score')), - ]) - ->sortByDesc('alerts') - ->take(3); - @endphp + $topCompanies = $activeAlerts + ->groupBy('company_id') + ->map(fn ($group) => [ + 'company' => optional($group->first()->company)->legal_name ?? optional($group->first()->company)->name ?? 'Unbekanntes Unternehmen', + 'alerts' => $group->count(), + 'volume' => $group->sum('amount'), + 'avg_risk' => (int) round($group->avg('risk_score')), + ]) + ->sortByDesc('alerts') + ->take(3); + @endphp -
-
- - -
-
-

- Advanced AI-Powered AFC -

-

Operatives Lagezentrum Finanzkriminalität

-

- KI-gestützte Detection Engines, Wissensgraphen und Analyst:innen bilden ein gemeinsames Lagebild. Die folgenden Signale fassen aktuelle Alert-Last, Automationsquote und Marktvolumen zusammen. -

-
-
-
-

Aktive Analyst:innen

-

{{ $formatNumber($activeAnalysts) }}

-
-
-

Gesamtvolumen

-

{{ $formatCurrency($totalVolume) }}

-
-
-

Alerts pro Analyst:in

-

{{ $formatNumber($averagePerAnalyst) }}

-
-
-

Kritische Fälle

-

{{ $formatNumber($highRiskAlerts->count()) }}

-
-
-
-
- -
-
-
-
-

Realtime Alert Intelligence

-

- KI priorisiert {{ $formatNumber($activeAlerts->count()) }} offene Vorgänge anhand von Netzwerk-, Verhaltens- und Sanktionssignalen. -

-
-
- Automationspräzision {{ $precisionRate }}% -
-
- -
- @foreach ($riskSegments as $segment) -
-
- - {{ $loop->iteration }} - -
-

{{ $segment['label'] }}

-

{{ $formatNumber($segment['count']) }} Beobachtungen

+
+
+ + +
+
+

+ Advanced AI-Powered AFC +

+

Qualifizierung der Verdachtsfälle juristischer Personen o.Ä.​

+

+ KI-gestützte Detection Engines, Wissensgraphen und Analyst:innen bilden ein gemeinsames Lagebild. Die folgenden Signale fassen aktuelle Alert-Last, Automationsquote und Marktvolumen zusammen. +

+
+
+
+

Aktive Analyst:innen

+

{{ $formatNumber($activeAnalysts) }}

+
+
+

Gesamtvolumen

+

{{ $formatCurrency($totalVolume) }}

+
+
+

Alerts pro Analyst:in

+

{{ $formatNumber($averagePerAnalyst) }}

+
+
+

Prior 1 Fälle/p> +

{{ $formatNumber($highRiskAlerts->count()) }}

+
-
-

Volumen

-

{{ $formatCurrency($segment['volume']) }}

-
-
- @endforeach -
-
+
-
-
-

AI-Agent Telemetrie

-
    -
  • - -
    -

    72 % der Routinefälle werden automatisch vorqualifiziert.

    -

    Regelbasiertes Screening + Large Language Agents liefern strukturierte Fallakten.

    -
    -
  • -
  • - -
    -

    {{ $formatNumber($alertsToday) }} Alerts im Tagesdurchlauf.

    -

    Planbare Analyst:innen-Kapazität mit durchschnittlich {{ $averagePerAnalyst }} Fällen pro Person.

    -
    -
  • -
  • - -
    -

    {{ $formatNumber($highRiskAlerts->count()) }} kritische Alerts in Eskalation.

    -

    Investigations-Hubs und Fallmanager:innen sind informiert.

    -
    -
  • -
-
- -
-

Top-Alarme nach Unternehmen

-
    - @forelse ($topCompanies as $company) -
  • -
    -

    {{ $company['company'] }}

    -

    {{ $formatNumber($company['alerts']) }} Alerts · Ø Risikoscore {{ $company['avg_risk'] }}

    +
    +
    +
    +
    +

    Realtime Alert Intelligence

    +

    + KI priorisiert {{ $formatNumber($activeAlerts->count()) }} offene Vorgänge anhand von Netzwerk-, Verhaltens- und Sanktionssignalen. +

    +
    +
    + Automationspräzision {{ $precisionRate }}% +
    -
    -

    Volumen

    -

    {{ $formatCurrency($company['volume']) }}

    -
    -
  • - @empty -
  • - Keine aktiven Meldungen verfügbar. -
  • - @endforelse -
-
-
- -
-
-

Knowledge Graph Coverage

-

- Netzwerkanalyse verbindet Sanktionsdaten, Unternehmensregister und Zahlungsverhalten in Echtzeit. -

-
- Investigierte Entitäten - {{ $formatNumber($transactions->pluck('company_id')->unique()->count()) }} -
-
-
-

Sanctions Uplift

-

- Dynamische Listenaktualisierung und NLP-Medien-Screening liefern kontextstarke Treffer. -

-
- Neue Treffer letzte 24h - {{ $formatNumber(random_int(6, 14)) }} -
-
-
-

Runbook Automation

-

- Intelligente Workflows orchestrieren Mensch und Maschine – inklusive Quality Gates. -

-
- Durchgeführte Runbooks heute - {{ $formatNumber(random_int(32, 48)) }} -
-
-
-
-
+
+ @foreach ($riskSegments as $segment) +
+
+ + {{ $loop->iteration }} + +
+

{{ $segment['label'] }}

+

{{ $formatNumber($segment['count']) }} Beobachtungen

+
+
+
+

Volumen

+

{{ $formatCurrency($segment['volume']) }}

+
+
+ @endforeach +
+ + +
+
+

AI-Agent Telemetrie

+ +
+ +
+

Top-Alarme nach Unternehmen

+ +
+
+ + +
+
+

Knowledge Graph Coverage

+

+ Netzwerkanalyse verbindet Sanktionsdaten, Unternehmensregister und Zahlungsverhalten in Echtzeit. +

+
+ Investigierte Entitäten + {{ $formatNumber($transactions->pluck('company_id')->unique()->count()) }} +
+
+
+

Sanctions Uplift

+

+ Dynamische Listenaktualisierung und NLP-Medien-Screening liefern kontextstarke Treffer. +

+
+ Neue Treffer letzte 24h + {{ $formatNumber(random_int(6, 14)) }} +
+
+
+

Runbook Automation

+

+ Intelligente Workflows orchestrieren Mensch und Maschine – inklusive Quality Gates. +

+
+ Durchgeführte Runbooks heute + {{ $formatNumber(random_int(32, 48)) }} +
+
+
+ + \ No newline at end of file