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

250 lines
5.2 KiB
Markdown

# 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
```bash
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:**
```bash
# Löscht Oktober 2024 Daten und berechnet sie neu
php artisan business:store-optimized 10 2024 --clear
```
### 2. Separates Clear Command
```bash
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:**
```bash
# 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
```bash
# Bei fehlerhaften Berechnungen
php artisan business:clear-data 10 2024 --force
php artisan business:store-optimized 10 2024
```
### 2. Neuberechnung mit aktuellen Daten
```bash
# Alles in einem Schritt
php artisan business:store-optimized 10 2024 --clear
```
### 3. Automation/Scripts
```bash
#!/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
```bash
# 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
```php
// 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
```bash
# 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
```bash
# 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
```bash
# 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