Typo changes

This commit is contained in:
cbazza committed 2025-10-31 12:48:41 +01:00
1 parent a8324e764d
commit e833b46d36
2 files changed
+84 -86

No files matched your search

+1 -1
View File
@@ -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>