Anerkennungen: firmenweite Monats-Ranglisten im Salescenter

- Neue Seite Anerkennungen (/user/recognitions, Menue unter News Archiv) fuer
  alle Berater mit aktivem Konto: oben die Anerkennungen des Vormonats in den
  fuenf Kategorien der Monatsmail, Filter zurueck bis Januar 2026; darunter
  Live-Ranglisten (Top 10 je Kategorie) des laufenden Monats, 15 Min. Cache.
- Kategorien: Top-Recruiter (ab 2 Neupartnern), neue Kunden-Abos,
  Kundenabo-Punkte, Kunden-Abos gesamt, Gesamtpunkte (1.000-Punkte-Shop,
  mit Platz 4). Regeln wie TopResultsService/VIP-Statistik, nur firmenweit.
- Firmenkonto (6) und Grosskundin (3) nie aufgefuehrt:
  config mivita.recognition_excluded_user_ids.
- Abgeschlossene Monate sind bis zum 3. des Folgemonats vorlaeufig und werden
  dann eingefroren: neue Tabelle recognition_snapshots, Command
  recognitions:freeze (taeglich 06:15, idempotent, holt offene Monate nach).
- September-Anerkennungen firmenweit geprueft und korrigiert.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-10-09 13:13:22 +00:00
parent 9ad69a3218
commit 7bc551ca1f
22 changed files with 1595 additions and 0 deletions

View file

@ -55,6 +55,12 @@
<div>{{ __('navigation.news_archive') }}</div>
</a>
</li>
<li class="sidenav-item{{ Request::is('user/recognitions') ? ' active' : '' }}">
<a href="{{ route('user_recognitions') }}" class="sidenav-link"><i
class="sidenav-icon ion ion-md-trophy"></i>
<div>{{ __('navigation.recognitions') }}</div>
</a>
</li>
@if (Auth::user()->isVIP())
<li class="sidenav-item @if (Request::is('user/backoffice/statistics*')) open @endif">
<a href="javascript:void(0)" class="sidenav-link sidenav-toggle">