diff --git a/dev/2026-07-22/deploy-2026-09-22-e1.md b/dev/2026-07-22/deploy-2026-09-22-e1.md new file mode 100644 index 00000000..0231a99a --- /dev/null +++ b/dev/2026-07-22/deploy-2026-09-22-e1.md @@ -0,0 +1,104 @@ +# Deploy 22.09.2026 — E1 Recruiting Challenge (vorbereitet, noch nicht live) + +Paket aus dem [Entwicklungsplan E1](../_tickets/entwicklungsplan-protokoll-september-2026.md), Inhalte in +[2026-09-18-recruiting-challenge-inhalte.md](../_tickets/2026-09-18-recruiting-challenge-inhalte.md). +Letzter Deploy-Stand auf Produktion: `203999a` (14.09., Team-Statistik). + +## Commits + +| Commit | Inhalt | +| --- | --- | +| `b28f51b` | Geldprämie, Umsatzpunkte-Schalter, Auszahlungs-Export, mehrere aktive Incentives | +| `0894733`, `b091dd9` | Inhaltsvorlage, Texte als Seeder | +| `9879e67` | „Nur für VIP sichtbar“, Teilnahme-Block oben | +| `186398a`, `99370b3` | Bilder je Incentive, Prämie je Teampartner statt Punkte | +| `a1d8902`, `10b7494`, `5204444` | Eine Incentive-Seite (Teaser + Rangliste), Layout | +| `9b6717c`, `fb4313f` | VIP-Badge in der Navigation, Titelbild, Dashboard mit einem Button | + +Das Paket ist unabhängig vom noch offenen Abo-/Audit-Paket (`c0535be`, `ec3ecad`, `66c6ae0`, `4899e3a`, +74 Dateien); die einzige gemeinsame Datei ist der Entwicklungsplan. Beide Pakete können getrennt oder +zusammen live gehen. + +## Achtung: drei Dateien nicht aus dem Arbeitsverzeichnis hochladen + +`app/Http/Controllers/HomeController.php`, `routes/domains/crm.php` und +`resources/views/layouts/includes/layout-sidenav.blade.php` enthalten im Arbeitsverzeichnis zusätzlich +uncommittete Arbeit (Newsletter-Listen, Berater-Übertragung, Payline). Deshalb liegt das komplette Paket als +Archiv aus dem Commit-Stand bereit: + +``` +storage/app/deploy/e1-recruiting-challenge-2026-09-22.tar.gz +``` + +Erzeugt mit `git archive HEAD …` über alle geänderten Dateien ohne `tests/` und `dev/`. Das Archiv auf dem +Server im Projektverzeichnis entpacken (`tar -xzf … -C /pfad/zum/projekt`), es enthält die Pfade relativ +zur Projektwurzel. + +## Dateien im Paket + +``` +app/Http/Controllers/Admin/IncentiveController.php +app/Http/Controllers/HomeController.php +app/Http/Controllers/User/IncentiveController.php +app/Models/Incentive.php +app/Models/IncentiveParticipant.php +app/Services/Incentive/IncentivePayoutService.php (neu) +app/Services/Incentive/IncentivePointsLogRepairService.php +app/Services/Incentive/IncentiveTracker.php +database/migrations/2026_09_18_130000_add_payout_fields_to_incentives_table.php (neu) +database/migrations/2026_09_22_100000_add_vip_only_to_incentives_table.php (neu) +database/seeders/RecruitingChallenge2026Seeder.php (neu) +public/img/incentive/montenegro-incentive-2026/nikki-beach*.jpg (8 Dateien, verschoben) +public/img/incentive/recruiting-challenge-2026-27/incentive-recruiting-2026.jpg (neu) +resources/lang/de/incentive.php, en, es, fr +resources/views/admin/incentive/_form.blade.php +resources/views/admin/incentive/show.blade.php +resources/views/dashboard/_incentive.blade.php +resources/views/layouts/includes/layout-sidenav.blade.php +resources/views/user/incentive/_how_it_works.blade.php (neu) +resources/views/user/incentive/_payout_bullets.blade.php (neu) +resources/views/user/incentive/_payout_tile.blade.php (neu) +resources/views/user/incentive/details.blade.php +resources/views/user/incentive/teaser.blade.php +routes/domains/crm.php +``` + +Auf dem Server löschen: + +``` +resources/views/user/incentive/show.blade.php +public/img/incentive/nikki-beach.jpg … nikki-beach7.jpg (liegen jetzt im Unterordner) +``` + +## Terminal + +```bash +composer dump-autoload # neuer Seeder +php artisan migrate # incentives: amount_per_partner, bonus_rank_1..3, include_sales_points, vip_only +php artisan db:seed --class=RecruitingChallenge2026Seeder # Challenge als Entwurf, nur VIP, mit Texten und Bild +php artisan view:clear && php artisan route:clear && php artisan config:clear +``` + +Die Migrationen fügen nur Spalten mit Standardwerten hinzu, Montenegro bleibt unverändert (Umsatzpunkte +an, keine Prämie, für alle sichtbar). Kein Snapshot-Neuaufbau, keine Datenänderung. + +## Danach im Admin + +1. Incentives → „Recruiting Challenge 2026/27“ öffnen, Texte und Werte prüfen (50 € / 500 / 300 / 200, Umsatzpunkte aus, nur VIP). +2. Status auf „Aktiv“ stellen. Sichtbar ist die Challenge dann nur für VIP-Konten (Sidenav mit Badge „VIP“, Dashboard-Karte, Seite `/incentive/recruiting-challenge-2026-27`). +3. Nach Freigabe durch Dani/Alois: Haken „Nur für VIP sichtbar“ entfernen. Ab dann sehen alle Berater die Challenge. + +Gezählt wird ab 01.10. automatisch, unabhängig vom Zeitpunkt der Freischaltung (`incentive:calculate` +läuft täglich 05:00 für alle aktiven Incentives). + +## Woran man merkt, dass etwas nicht stimmt + +- Montenegro-Seite: Galerie zeigt weiterhin die acht Strandfotos (Unterordner wurde hochgeladen). +- Challenge-Seite als VIP: Teilnahme-Block oben, Titelbild, drei Kacheln, „So funktioniert die Challenge“ über die volle Breite, Live-Ranking unten, keine Impressionen. +- Als normaler Berater: Challenge nirgends sichtbar, `/incentive/recruiting-challenge-2026-27` liefert 404. +- Admin-Detailseite: Button „Auszahlungs-Export (XLSX)“ und Badge „nur VIP“. + +## Offen (nicht in diesem Paket) + +Gleichstandsregel „zuerst erreicht“, Storno entfernt Wertung, Export nur bestätigte Teilnehmer, Übersetzungen +EN/ES/FR — siehe Abschnitte 9 und 10 der Inhaltsvorlage. Vor dem 01.10. nur die Gleichstandsregel nötig.