mivita/dev/code/Services/CLEAR_DATA_GUIDE.md
2025-10-20 17:42:08 +02:00

5.2 KiB

Business Data Clear Guide

Übersicht

Die neuen Löschfunktionen ermöglichen es, gespeicherte Business Structure Daten sicher und kontrolliert zu entfernen. Dies ist besonders nützlich wenn:

  • Daten neu berechnet werden müssen
  • Fehlerhafte Berechnungen korrigiert werden sollen
  • Speicherplatz freigegeben werden muss
  • Tests mit sauberen Daten durchgeführt werden sollen

Verfügbare Commands

1. BusinessStoreOptimized mit --clear Option

php artisan business:store-optimized {month} {year} --clear

Funktionalität:

  • Löscht bestehende Daten für den angegebenen Monat/Jahr
  • Berechnet anschließend neue Daten
  • Alles in einem einzigen Command-Ausführung

Beispiel:

# Löscht Oktober 2024 Daten und berechnet sie neu
php artisan business:store-optimized 10 2024 --clear

2. Separates Clear Command

php artisan business:clear-data {month} {year} [--force]

Funktionalität:

  • Löscht nur die Daten, berechnet nichts neu
  • Standardmäßig mit Sicherheitsabfrage
  • --force Option für automatisierte Skripte

Beispiele:

# Mit Bestätigung
php artisan business:clear-data 10 2024

# Ohne Bestätigung (für Skripte)
php artisan business:clear-data 10 2024 --force

Was wird gelöscht?

1. UserBusinessStructure

  • Die Hauptstruktur für den angegebenen Monat/Jahr
  • Enthält die hierarchische Benutzerstruktur
  • Metadata wie completed Status

2. UserBusiness Einträge

  • Alle Business-Daten der Benutzer für den Zeitraum
  • Provisionsberechnungen
  • Qualifikationsdaten
  • Verkaufsvolumen und Punkte

Sicherheitsfeatures

Validierung

  • Monat muss zwischen 1-12 liegen
  • Jahr muss zwischen 2020 und aktuelles Jahr + 1 liegen
  • Prüfung auf Existenz der Daten vor Löschung

Bestätigungen

  • Standardmäßig Sicherheitsabfrage vor Löschung
  • Anzeige der zu löschenden Datenmengen
  • --force Option zum Überspringen der Abfrage

Sichere Löschung

  • Löschung in korrekter Reihenfolge (Child → Parent)
  • Transaktionale Sicherheit
  • Garbage Collection nach Löschung

Logging & Monitoring

Detaillierte Ausgaben

Found structure ID: 123
- UserBusiness records: 1,234
- Users in structure: 567
- Completed: Yes

Deleting 1,234 UserBusiness records...
✓ UserBusiness records deleted
Deleting UserBusinessStructure...
✓ UserBusinessStructure deleted
✅ Successfully cleared all business data in 45.67ms

Memory-Monitoring

Memory - Current: 128.5 MB | Peak: 145.2 MB

Anwendungsszenarien

1. Fehlerkorrektur

# Bei fehlerhaften Berechnungen
php artisan business:clear-data 10 2024 --force
php artisan business:store-optimized 10 2024

2. Neuberechnung mit aktuellen Daten

# Alles in einem Schritt
php artisan business:store-optimized 10 2024 --clear

3. Automation/Scripts

#!/bin/bash
# Monatliche Neuberechnung
MONTH=$(date +%m)
YEAR=$(date +%Y)

echo "Clearing data for $MONTH/$YEAR"
php artisan business:clear-data $MONTH $YEAR --force

echo "Calculating new data"
php artisan business:store-optimized $MONTH $YEAR

4. Testing

# Saubere Testumgebung
php artisan business:clear-data 1 2024 --force
php artisan business:clear-data 2 2024 --force
# ... Setup für Tests

Integration mit Scheduler

// In app/Console/Kernel.php

// Monatliche Neuberechnung am 5. jeden Monats
$schedule->command('business:store-optimized', [
    date('m', strtotime('-1 month')),
    date('Y', strtotime('-1 month')),
    '--clear'
])->monthlyOn(5, '02:00')
  ->withoutOverlapping()
  ->runInBackground();

Error Handling

Häufige Fehler

1. Ungültiger Monat/Jahr:

Invalid month. Must be between 1 and 12.
Invalid year. Must be between 2020 and 2025.

2. Keine Daten gefunden:

No stored business structure found for the specified month/year

3. Benutzer-Abbruch:

Operation cancelled by user

Exception Handling

  • Vollständige Stack-Traces bei Fehlern
  • Graceful Rollback bei Datenbankfehlern
  • Detaillierte Error-Logs für Debugging

Best Practices

1. Backup vor Löschung

# Backup der wichtigen Tabellen
mysqldump database user_businesses > backup_$(date +%Y%m%d).sql
mysqldump database user_business_structures >> backup_$(date +%Y%m%d).sql

2. Stufenweise Löschung bei großen Datenmengen

# Bei sehr großen Strukturen
php artisan business:clear-data 1 2024 --force
sleep 10
php artisan business:clear-data 2 2024 --force
sleep 10
# ...

3. Monitoring der Performance

# Mit Zeitmessung
time php artisan business:clear-data 10 2024 --force

Troubleshooting

Memory Issues

  • Erhöhe PHP Memory Limit vor Löschung großer Strukturen
  • Nutze Garbage Collection zwischen Commands

Performance

  • Lösche Daten außerhalb der Geschäftszeiten
  • Nutze --force für automatisierte Prozesse
  • Überwache Datenbank-Performance während Löschung

Rollback

  • Verwende Datenbank-Backups für kritische Rollbacks
  • Teste Löschprozess erst in Staging-Umgebung

Support

Bei Problemen:

  1. Prüfe die Log-Ausgaben auf spezifische Fehlermeldungen
  2. Verwende --force nicht in produktiven Umgebungen ohne Tests
  3. Stelle sicher, dass keine anderen Prozesse gleichzeitig auf die Daten zugreifen