Typo changes
This commit is contained in:
1 parent
a8324e764d
commit
e833b46d36
2 files changed
+84
-86
No files matched your search
@@ -76,7 +76,7 @@
|
||||
<p class="mt-2 text-2xl font-semibold text-indigo-100">{{ $formatNumber($averagePerAnalyst) }}</p>
|
||||
</div>
|
||||
<div class="rounded-2xl border border-rose-400/30 bg-rose-500/20 p-4 backdrop-blur-sm shadow-lg shadow-rose-900/30">
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-rose-50">Prior 1 Fälle/p>
|
||||
<p class="text-xs font-semibold uppercase tracking-wide text-rose-50">Prior 1 Fälle</p>
|
||||
<p class="mt-2 text-2xl font-semibold text-rose-100">{{ $formatNumber($highRiskAlerts->count()) }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -113,7 +113,7 @@ new #[Layout('components.layouts.app')] class extends Component {
|
||||
->selectRaw('status, COUNT(*) AS total, COALESCE(SUM(amount), 0) AS volume')
|
||||
->groupBy('status')
|
||||
->get()
|
||||
->mapWithKeys(fn ($row) => [
|
||||
->mapWithKeys(fn($row) => [
|
||||
$row->status => [
|
||||
'count' => (int) $row->total,
|
||||
'amount' => (float) $row->volume,
|
||||
@@ -148,7 +148,7 @@ new #[Layout('components.layouts.app')] class extends Component {
|
||||
$search = trim($this->search);
|
||||
|
||||
return Transaction::query()
|
||||
->when($this->status !== 'all', fn (Builder $query) => $query->where('status', $this->status))
|
||||
->when($this->status !== 'all', fn(Builder $query) => $query->where('status', $this->status))
|
||||
->when($search !== '', function (Builder $query) use ($search) {
|
||||
$like = '%' . $search . '%';
|
||||
|
||||
@@ -166,88 +166,88 @@ new #[Layout('components.layouts.app')] class extends Component {
|
||||
}; ?>
|
||||
|
||||
@php
|
||||
/** @var \Illuminate\Contracts\Pagination\LengthAwarePaginator $transactions */
|
||||
$transactions = $this->transactions;
|
||||
/** @var \App\Models\Transaction|null $selected */
|
||||
$selected = $this->selectedTransaction;
|
||||
$metrics = $this->metrics;
|
||||
$byStatus = collect($metrics['by_status']);
|
||||
$resolveMetrics = static fn (string $status): array => $byStatus->get($status, ['count' => 0, 'amount' => 0.0]);
|
||||
$formatAmount = static fn (float $value): string => number_format($value, 2, ',', '.') . ' €';
|
||||
/** @var \Illuminate\Contracts\Pagination\LengthAwarePaginator $transactions */
|
||||
$transactions = $this->transactions;
|
||||
/** @var \App\Models\Transaction|null $selected */
|
||||
$selected = $this->selectedTransaction;
|
||||
$metrics = $this->metrics;
|
||||
$byStatus = collect($metrics['by_status']);
|
||||
$resolveMetrics = static fn (string $status): array => $byStatus->get($status, ['count' => 0, 'amount' => 0.0]);
|
||||
$formatAmount = static fn (float $value): string => number_format($value, 2, ',', '.') . ' €';
|
||||
|
||||
$confirmed = $resolveMetrics(Transaction::STATUS_TRUE_POSITIVE);
|
||||
$falseAlarm = $resolveMetrics(Transaction::STATUS_FALSE_POSITIVE);
|
||||
$cleared = $resolveMetrics(Transaction::STATUS_CLEARED);
|
||||
$total = $metrics['total'];
|
||||
$confirmed = $resolveMetrics(Transaction::STATUS_TRUE_POSITIVE);
|
||||
$falseAlarm = $resolveMetrics(Transaction::STATUS_FALSE_POSITIVE);
|
||||
$cleared = $resolveMetrics(Transaction::STATUS_CLEARED);
|
||||
$total = $metrics['total'];
|
||||
|
||||
$statusStyles = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => 'bg-gradient-to-r from-rose-500/25 via-rose-500/10 to-rose-400/25 text-rose-700 dark:text-rose-200 border border-rose-500/30 shadow-[0_0_25px_-14px_rgba(244,63,94,0.85)]',
|
||||
Transaction::STATUS_FALSE_POSITIVE => 'bg-gradient-to-r from-amber-400/25 via-amber-400/10 to-amber-300/25 text-amber-700 dark:text-amber-200 border border-amber-400/30 shadow-[0_0_25px_-14px_rgba(251,191,36,0.85)]',
|
||||
Transaction::STATUS_CLEARED => 'bg-gradient-to-r from-emerald-400/25 via-emerald-400/10 to-emerald-300/25 text-emerald-700 dark:text-emerald-200 border border-emerald-400/30 shadow-[0_0_25px_-14px_rgba(52,211,153,0.85)]',
|
||||
];
|
||||
$statusStyles = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => 'bg-gradient-to-r from-rose-500/25 via-rose-500/10 to-rose-400/25 text-rose-700 dark:text-rose-200 border border-rose-500/30 shadow-[0_0_25px_-14px_rgba(244,63,94,0.85)]',
|
||||
Transaction::STATUS_FALSE_POSITIVE => 'bg-gradient-to-r from-amber-400/25 via-amber-400/10 to-amber-300/25 text-amber-700 dark:text-amber-200 border border-amber-400/30 shadow-[0_0_25px_-14px_rgba(251,191,36,0.85)]',
|
||||
Transaction::STATUS_CLEARED => 'bg-gradient-to-r from-emerald-400/25 via-emerald-400/10 to-emerald-300/25 text-emerald-700 dark:text-emerald-200 border border-emerald-400/30 shadow-[0_0_25px_-14px_rgba(52,211,153,0.85)]',
|
||||
];
|
||||
|
||||
$statusCopy = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => 'Sofortige Sonderprüfung einleiten und Ermittlungsakte anlegen.',
|
||||
Transaction::STATUS_FALSE_POSITIVE => 'Anomalie begründen, Dokumentation ergänzen und Alarm schließen.',
|
||||
Transaction::STATUS_CLEARED => 'Review-Ergebnis dokumentieren und Kontrollnachweis archivieren.',
|
||||
];
|
||||
$statusSummaryPhrases = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => [
|
||||
'Verdachtsindikatoren bestätigen Treffer.',
|
||||
'Risikotreiber stehen weiter auf Rot.',
|
||||
'Sofortmaßnahmen priorisieren und dokumentieren.',
|
||||
'Ermittlungsteam unverzüglich koordinieren.',
|
||||
'Audit-Trail aktuell halten und teilen.',
|
||||
],
|
||||
Transaction::STATUS_FALSE_POSITIVE => [
|
||||
'Alarm widerlegt, Dokumentation abschließen.',
|
||||
'Risikoschwelle fällt unter interne Limits.',
|
||||
'Regelwerk für Fehlalarm analysieren.',
|
||||
'Stakeholder über Entwarnung informieren.',
|
||||
'Kontrollnachweis im Archiv sichern.',
|
||||
],
|
||||
Transaction::STATUS_CLEARED => [
|
||||
'Keine Auffälligkeiten, Vorgang freigegeben.',
|
||||
'Monitoringdaten bestätigen Referenzverhalten.',
|
||||
'Freigabe mit Vier-Augen-Prinzip dokumentieren.',
|
||||
'Compliance-Team über Abschluss informieren.',
|
||||
'Revisionsunterlagen vollständig archivieren.',
|
||||
],
|
||||
];
|
||||
$statusSummary = array_map(
|
||||
static fn (array $phrases): string => $phrases[0] ?? 'Status gemäß aktuellem Prüfpfad.',
|
||||
$statusSummaryPhrases
|
||||
);
|
||||
$statusSummaryBanner = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => [
|
||||
'classes' => 'border border-rose-400/60 bg-gradient-to-r from-rose-500/20 via-rose-500/10 to-rose-400/20 text-rose-900 shadow-[0_30px_70px_-50px_rgba(244,63,94,0.75)] dark:border-rose-500/50 dark:from-rose-500/20 dark:via-rose-500/10 dark:to-rose-400/20 dark:text-rose-100',
|
||||
],
|
||||
Transaction::STATUS_FALSE_POSITIVE => [
|
||||
'classes' => 'border border-amber-400/60 bg-gradient-to-r from-amber-400/20 via-amber-400/10 to-amber-300/20 text-amber-900 shadow-[0_30px_70px_-50px_rgba(245,158,11,0.65)] dark:border-amber-400/50 dark:from-amber-400/20 dark:via-amber-400/10 dark:to-amber-300/20 dark:text-amber-100',
|
||||
],
|
||||
Transaction::STATUS_CLEARED => [
|
||||
'classes' => 'border border-emerald-400/60 bg-gradient-to-r from-emerald-400/20 via-emerald-400/10 to-emerald-300/20 text-emerald-900 shadow-[0_30px_70px_-50px_rgba(16,185,129,0.65)] dark:border-emerald-400/50 dark:from-emerald-400/20 dark:via-emerald-400/10 dark:to-emerald-300/20 dark:text-emerald-100',
|
||||
],
|
||||
];
|
||||
$statusCopy = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => 'Sofortige Sonderprüfung einleiten und Ermittlungsakte anlegen.',
|
||||
Transaction::STATUS_FALSE_POSITIVE => 'Anomalie begründen, Dokumentation ergänzen und Alarm schließen.',
|
||||
Transaction::STATUS_CLEARED => 'Review-Ergebnis dokumentieren und Kontrollnachweis archivieren.',
|
||||
];
|
||||
$statusSummaryPhrases = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => [
|
||||
'Verdachtsindikatoren bestätigen Treffer.',
|
||||
'Risikotreiber stehen weiter auf Rot.',
|
||||
'Sofortmaßnahmen priorisieren und dokumentieren.',
|
||||
'Ermittlungsteam unverzüglich koordinieren.',
|
||||
'Audit-Trail aktuell halten und teilen.',
|
||||
],
|
||||
Transaction::STATUS_FALSE_POSITIVE => [
|
||||
'Alarm widerlegt, Dokumentation abschließen.',
|
||||
'Risikoschwelle fällt unter interne Limits.',
|
||||
'Regelwerk für Fehlalarm analysieren.',
|
||||
'Stakeholder über Entwarnung informieren.',
|
||||
'Kontrollnachweis im Archiv sichern.',
|
||||
],
|
||||
Transaction::STATUS_CLEARED => [
|
||||
'Keine Auffälligkeiten, Vorgang freigegeben.',
|
||||
'Monitoringdaten bestätigen Referenzverhalten.',
|
||||
'Freigabe mit Vier-Augen-Prinzip dokumentieren.',
|
||||
'Compliance-Team über Abschluss informieren.',
|
||||
'Revisionsunterlagen vollständig archivieren.',
|
||||
],
|
||||
];
|
||||
$statusSummary = array_map(
|
||||
static fn (array $phrases): string => $phrases[0] ?? 'Status gemäß aktuellem Prüfpfad.',
|
||||
$statusSummaryPhrases
|
||||
);
|
||||
$statusSummaryBanner = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => [
|
||||
'classes' => 'border border-rose-400/60 bg-gradient-to-r from-rose-500/20 via-rose-500/10 to-rose-400/20 text-rose-900 shadow-[0_30px_70px_-50px_rgba(244,63,94,0.75)] dark:border-rose-500/50 dark:from-rose-500/20 dark:via-rose-500/10 dark:to-rose-400/20 dark:text-rose-100',
|
||||
],
|
||||
Transaction::STATUS_FALSE_POSITIVE => [
|
||||
'classes' => 'border border-amber-400/60 bg-gradient-to-r from-amber-400/20 via-amber-400/10 to-amber-300/20 text-amber-900 shadow-[0_30px_70px_-50px_rgba(245,158,11,0.65)] dark:border-amber-400/50 dark:from-amber-400/20 dark:via-amber-400/10 dark:to-amber-300/20 dark:text-amber-100',
|
||||
],
|
||||
Transaction::STATUS_CLEARED => [
|
||||
'classes' => 'border border-emerald-400/60 bg-gradient-to-r from-emerald-400/20 via-emerald-400/10 to-emerald-300/20 text-emerald-900 shadow-[0_30px_70px_-50px_rgba(16,185,129,0.65)] dark:border-emerald-400/50 dark:from-emerald-400/20 dark:via-emerald-400/10 dark:to-emerald-300/20 dark:text-emerald-100',
|
||||
],
|
||||
];
|
||||
|
||||
$statusLegend = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => [
|
||||
'title' => 'Bestätigter Treffer',
|
||||
'description' => 'Ermittlungsindikatoren bestätigen einen hinreichenden Verdacht. Fallverantwortliche Person informieren, Belege sichern und Maßnahmenplan starten.',
|
||||
'accent' => 'text-rose-500 dark:text-rose-300',
|
||||
],
|
||||
Transaction::STATUS_FALSE_POSITIVE => [
|
||||
'title' => 'Fehlalarm',
|
||||
'description' => 'Auslösung plausibel widerlegt (z. B. KYC-Daten, Geschäftslogik). Entscheidungsgrund dokumentieren und Regeloptimierung anstoßen.',
|
||||
'accent' => 'text-amber-500 dark:text-amber-200',
|
||||
],
|
||||
Transaction::STATUS_CLEARED => [
|
||||
'title' => 'Freigegeben',
|
||||
'description' => 'Keine verdächtigen Auffälligkeiten. Abschluss mit Vier-Augen-Freigabe und revisionssicherer Ablage des Prüfpfads.',
|
||||
'accent' => 'text-emerald-500 dark:text-emerald-300',
|
||||
],
|
||||
];
|
||||
$riskExplanation = 'Der Risikowert (0–100) fasst Monitoring-Regeln, KYC-Risiken, Negativmeldungen sowie Verhaltens- und Geodaten zu einer Priorität zusammen. Werte über 80 kennzeichnen Sofortmaßnahmen, 50–79 markieren erhöhte Aufmerksamkeit, alles darunter gilt als Routineprüfung.';
|
||||
$statusLegend = [
|
||||
Transaction::STATUS_TRUE_POSITIVE => [
|
||||
'title' => 'Bestätigter Treffer',
|
||||
'description' => 'Ermittlungsindikatoren bestätigen einen hinreichenden Verdacht. Fallverantwortliche Person informieren, Belege sichern und Maßnahmenplan starten.',
|
||||
'accent' => 'text-rose-500 dark:text-rose-300',
|
||||
],
|
||||
Transaction::STATUS_FALSE_POSITIVE => [
|
||||
'title' => 'Fehlalarm',
|
||||
'description' => 'Auslösung plausibel widerlegt (z. B. KYC-Daten, Geschäftslogik). Entscheidungsgrund dokumentieren und Regeloptimierung anstoßen.',
|
||||
'accent' => 'text-amber-500 dark:text-amber-200',
|
||||
],
|
||||
Transaction::STATUS_CLEARED => [
|
||||
'title' => 'Freigegeben',
|
||||
'description' => 'Keine verdächtigen Auffälligkeiten. Abschluss mit Vier-Augen-Freigabe und revisionssicherer Ablage des Prüfpfads.',
|
||||
'accent' => 'text-emerald-500 dark:text-emerald-300',
|
||||
],
|
||||
];
|
||||
$riskExplanation = 'Der Risikowert (0–100) fasst Monitoring-Regeln, KYC-Risiken, Negativmeldungen sowie Verhaltens- und Geodaten zu einer Priorität zusammen. Werte über 80 kennzeichnen Sofortmaßnahmen, 50–79 markieren erhöhte Aufmerksamkeit, alles darunter gilt als Routineprüfung.';
|
||||
@endphp
|
||||
|
||||
<div class="flex flex-col gap-6">
|
||||
@@ -259,7 +259,7 @@ new #[Layout('components.layouts.app')] class extends Component {
|
||||
<p class="inline-flex items-center gap-2 rounded-full border border-white/25 bg-white/10 px-3 py-1 text-xs font-semibold uppercase tracking-[0.18em] text-slate-200 shadow-sm">
|
||||
AFC-Kontrollzentrum
|
||||
</p>
|
||||
<h1 class="text-2xl font-semibold tracking-tight sm:text-3xl">Finanzkriminalitäts-Workbench</h1>
|
||||
<h1 class="text-2xl font-semibold tracking-tight sm:text-3xl">Verdachtsfall-Qualifizierungs-Workbench</h1>
|
||||
<p class="text-sm leading-relaxed text-slate-300 sm:text-base">
|
||||
Überwachen Sie verdächtige Transaktionen im DAX-Portfolio, priorisieren Sie Alarme und orchestrieren Sie das manuelle Review im Vier-Augen-Prozess.
|
||||
</p>
|
||||
@@ -356,8 +356,7 @@ new #[Layout('components.layouts.app')] class extends Component {
|
||||
wire:click="selectTransaction({{ $transaction->id }})"
|
||||
type="button"
|
||||
class="{{ implode(' ', $buttonClasses) }}"
|
||||
aria-pressed="{{ $selectedState ? 'true' : 'false' }}"
|
||||
>
|
||||
aria-pressed="{{ $selectedState ? 'true' : 'false' }}">
|
||||
<div class="space-y-2">
|
||||
<div class="flex items-start justify-between gap-3">
|
||||
<div>
|
||||
@@ -532,8 +531,7 @@ new #[Layout('components.layouts.app')] class extends Component {
|
||||
<flux:link
|
||||
:href="route('company.transactions', ['company' => $selected->company_id, 'transaction' => $selected->id])"
|
||||
wire:navigate
|
||||
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 text-indigo-600 transition hover:bg-indigo-500/20 dark:border-indigo-500/40 dark:bg-indigo-500/10 dark:text-indigo-200"
|
||||
>
|
||||
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 text-indigo-600 transition hover:bg-indigo-500/20 dark:border-indigo-500/40 dark:bg-indigo-500/10 dark:text-indigo-200">
|
||||
{{ __('Fallansicht maximieren') }}
|
||||
<flux:icon name="arrow-top-right-on-square" class="h-4 w-4" />
|
||||
</flux:link>
|
||||
|
||||
Reference in new issue
Block a user