mivita/dev/2026-01-28/HOTFIX-activate-return.md
2026-02-20 17:55:06 +01:00

5.8 KiB
Raw Permalink Blame History

HOTFIX: Return-Statement aktivieren - 28.01.2026

🚨 KRITISCH: Auf Live-Server ausführen!

Problem

Der BusinessStoreOptimized Command läuft jeden Tag statt nur am 1. des Monats:

[2026-01-08 03:00:02] NOT RUN Command BusinessStoreOptimized is not present Day: 8
[2026-01-08 03:00:02] RUN Command BusinessStoreOptimized Business Structure Storage  ← LÄUFT TROTZDEM!

Ursache: return 0; ist in Zeile 84 auskommentiert


Sofort-Fix

Schritt 1: Code auf Live-Server aktualisieren

Via Git (empfohlen):

# SSH auf Live-Server
ssh ploi@your-server-ip

# Zum Projekt wechseln
cd /home/ploi/mivita.care

# Aktuellen Branch prüfen
git status
git branch

# Code pullen
git pull origin main

# Optional: Nur die spezifische Datei prüfen
git diff HEAD~1 HEAD app/Console/Commands/BusinessStoreOptimized.php

Manuelle Änderung (falls Git nicht möglich):

# Backup erstellen
cp app/Console/Commands/BusinessStoreOptimized.php app/Console/Commands/BusinessStoreOptimized.php.backup

# Datei bearbeiten
nano app/Console/Commands/BusinessStoreOptimized.php

Zeile 84 ändern von:

//  return 0;

Zu:

return 0;

Speichern: Ctrl+O, Enter, Ctrl+X

Schritt 2: Validierung

# Prüfe ob Änderung korrekt
grep -n "return 0;" app/Console/Commands/BusinessStoreOptimized.php | grep -A 2 -B 2 "84"

# Sollte zeigen:
# 84:                return 0;

Schritt 3: Test (WICHTIG!)

Test mit falschem Tag (heute ist 28. Januar):

# Command sollte NICHT laufen
php8.4 artisan business:store-optimized 0 0

# Erwartete Ausgabe:
# "NOT RUN Command BusinessStoreOptimized is not present Day: 28"
# Command sollte SOFORT beenden (keine weiteren Logs)

Logs prüfen:

# Logs live anzeigen
tail -f storage/logs/laravel.log

# Oder nur BusinessStoreOptimized
tail -f storage/logs/laravel.log | grep BusinessStoreOptimized

# Erwartung am 28. Januar:
# [2026-01-28 XX:XX:XX] NOT RUN Command BusinessStoreOptimized is not present Day: 28
# (keine weiteren Logs wie "Business Structure Storage")

Schritt 4: Cache leeren (falls nötig)

php8.4 artisan config:clear
php8.4 artisan cache:clear

Validierung am 1. Februar 2026

Am 1. Februar um 03:05 Uhr prüfen:

# Logs prüfen
tail -100 storage/logs/laravel.log | grep BusinessStoreOptimized

# Erwartete Ausgabe:
# [2026-02-01 03:00:XX] RUN Command BusinessStoreOptimized on Day: 1
# [2026-02-01 03:00:XX] RUN Command BusinessStoreOptimized present Day: 1
# [2026-02-01 03:00:XX] RUN Command BusinessStoreOptimized Business Structure Storage
# [2026-02-01 03:00:XX] RUN Command BusinessStoreOptimized Commission Calculation
# [2026-02-01 03:00:XX] COMMAND COMPLETED SUCCESSFULLY

# UserBusiness für Januar prüfen
php8.4 artisan tinker --execute="
\$count = \App\Models\UserBusiness::where('month', 1)->where('year', 2026)->count();
echo \"UserBusiness-Einträge für 01/2026: \$count\n\";

\$sample = \App\Models\UserBusiness::where('month', 1)->where('year', 2026)
    ->orderBy('id', 'DESC')->first();
if (\$sample) {
    echo \"Beispiel:\n\";
    echo \"  User ID: {\$sample->user_id}\n\";
    echo \"  Created: {\$sample->created_at}\n\";
    echo \"  Points: {\$sample->sales_volume_points_KP_sum}\n\";
}
"

Am 2. Februar um 03:05 Uhr prüfen:

# Logs prüfen - Command sollte NICHT laufen
tail -100 storage/logs/laravel.log | grep BusinessStoreOptimized

# Erwartete Ausgabe:
# [2026-02-02 03:00:XX] NOT RUN Command BusinessStoreOptimized is not present Day: 2
# (keine weiteren Logs!)

# Kein UserBusiness für Februar (zu früh)
php8.4 artisan tinker --execute="
\$count = \App\Models\UserBusiness::where('month', 2)->where('year', 2026)->count();
echo \"UserBusiness-Einträge für 02/2026: \$count (sollte 0 sein)\n\";
"

📋 Checkliste

  • SSH auf Live-Server
  • Code aktualisiert (Git pull oder manuell)
  • Zeile 84: return 0; aktiviert (Kommentar entfernt)
  • Backup erstellt
  • Validierung: Command testet mit falschem Tag
  • Cache geleert
  • Logs geprüft: Keine "Business Structure Storage" bei falschem Tag
  • Team informiert
  • Monitoring am 1. Februar geplant

🔴 Rollback (falls Probleme)

# Backup wiederherstellen
cp app/Console/Commands/BusinessStoreOptimized.php.backup app/Console/Commands/BusinessStoreOptimized.php

# Cache leeren
php8.4 artisan config:clear
php8.4 artisan cache:clear

📧 Nach Deployment informieren

Team/Admin benachrichtigen:

Fix deployed: BusinessStoreOptimized läuft jetzt nur noch am 1. des Monats
⚠️ Monitoring am 1. Februar notwendig
Command verschwendet keine Ressourcen mehr täglich


Zusätzliche Erkenntnisse

Warum keine doppelten Gutschriften?

Der Code hat einen korrekten Duplikat-Schutz:

// UserPaymentCredits::hasNotUserCreditItem()
private function hasNotUserCreditItem($userBusiness, $status){
    return (UserCreditItem::where('user_business_id', $userBusiness->id)
        ->where('user_id', $userBusiness->user_id)
        ->where('status', $status)
        ->count() > 0) ? false : true;
}

Ablauf:

  1. Am 31.12. wird UserBusiness erstellt
  2. UserCreditItem wird erstellt (für Dezember Provisionen)
  3. Am 8.1. läuft Command erneut (Bug!)
  4. UserBusiness wird gefunden (oder aktualisiert)
  5. hasNotUserCreditItem() prüft: Existiert bereits? JA
  6. Kein neues UserCreditItem wird erstellt

Das ist gut so! Verhindert Duplikate, auch wenn Command fälschlicherweise mehrfach läuft.

ABER: Das eigentliche Problem (Command läuft täglich) muss trotzdem gefixt werden!


Status

  • Problem identifiziert
  • Lösung dokumentiert
  • Code auf Test-Server gefixt
  • Code auf Live-Server deployen ← JETZT!
  • Validierung durchführen
  • Monitoring am 1. Februar