13-05-2026 implementation FR
This commit is contained in:
parent
245c281541
commit
70240d2b6a
61 changed files with 4472 additions and 2 deletions
231
dev/BusinessUpdateCalculatedFields.md
Normal file
231
dev/BusinessUpdateCalculatedFields.md
Normal file
|
|
@ -0,0 +1,231 @@
|
|||
# Business Update Calculated Fields Command
|
||||
|
||||
## Übersicht
|
||||
|
||||
Der Command `business:update-calculated-fields` aktualisiert bereits gespeicherte UserBusiness-Einträge mit den neuen berechneten Feldern für Level-Qualifikationen.
|
||||
|
||||
## Zweck
|
||||
|
||||
Nach der Korrektur der Karriere-Level-Berechnung müssen bereits in der Datenbank gespeicherte UserBusiness-Einträge aktualisiert werden, um die neuen berechneten Felder zu erhalten:
|
||||
|
||||
### Neue Felder:
|
||||
|
||||
1. **`calc_qual_kp`** (in UserBusiness)
|
||||
|
||||
- Die berechnete KP-Qualifikation für den erreichten Level
|
||||
- Zeigt an, wie viele KP-Punkte tatsächlich für die Qualifikation verwendet wurden
|
||||
|
||||
2. **`_calculated_qual_kp`** (in Level-Arrays)
|
||||
|
||||
- Für `qual_user_level_next`, `next_qual_user_level`, `next_can_user_level`
|
||||
- Die berechnete KP für jeden spezifischen Level
|
||||
|
||||
3. **`_calculated_payline_points`** (in Level-Arrays)
|
||||
|
||||
- Die Payline-Punkte basierend auf den spezifischen Paylines des Levels
|
||||
|
||||
4. **`_calculated_payline_points_qual_kp`** (in Level-Arrays)
|
||||
- Die Gesamtpunkte (Payline + Rest-KP) für den Level
|
||||
|
||||
## Verwendung
|
||||
|
||||
### Grundlegende Syntax
|
||||
|
||||
```bash
|
||||
# Einzelner Monat
|
||||
php artisan business:update-calculated-fields {year} {month}
|
||||
|
||||
# Ganzes Jahr (alle 12 Monate)
|
||||
php artisan business:update-calculated-fields {year}
|
||||
```
|
||||
|
||||
### Mit Dry-Run (Testlauf)
|
||||
|
||||
```bash
|
||||
# Einzelner Monat
|
||||
php artisan business:update-calculated-fields {year} {month} --dry-run
|
||||
|
||||
# Ganzes Jahr
|
||||
php artisan business:update-calculated-fields {year} --dry-run
|
||||
```
|
||||
|
||||
Im Dry-Run Modus werden keine Änderungen in der Datenbank gespeichert. Der Command zeigt nur an, welche Einträge aktualisiert werden würden.
|
||||
|
||||
## Beispiele
|
||||
|
||||
### Aktualisiere November 2025
|
||||
|
||||
```bash
|
||||
php artisan business:update-calculated-fields 2025 11
|
||||
```
|
||||
|
||||
### Aktualisiere das ganze Jahr 2025
|
||||
|
||||
```bash
|
||||
php artisan business:update-calculated-fields 2025
|
||||
```
|
||||
|
||||
Das wird alle 12 Monate von Januar bis Dezember 2025 aktualisieren.
|
||||
|
||||
### Testlauf für Oktober 2025
|
||||
|
||||
```bash
|
||||
php artisan business:update-calculated-fields 2025 10 --dry-run
|
||||
```
|
||||
|
||||
### Testlauf für das ganze Jahr 2025
|
||||
|
||||
```bash
|
||||
php artisan business:update-calculated-fields 2025 --dry-run
|
||||
```
|
||||
|
||||
## Ablauf
|
||||
|
||||
### Einzelner Monat
|
||||
|
||||
1. **Lade UserBusiness-Einträge**: Alle Einträge für den angegebenen Monat/Jahr
|
||||
2. **Berechne neue Felder**: Für jeden Eintrag werden die berechneten Felder hinzugefügt
|
||||
3. **Speichere Änderungen**: Nur wenn Änderungen vorhanden sind (und nicht im Dry-Run)
|
||||
4. **Zeige Statistik**: Anzahl aktualisierter, übersprungener und fehlerhafter Einträge
|
||||
|
||||
### Ganzes Jahr
|
||||
|
||||
1. **Durchlaufe alle 12 Monate**: Januar (1) bis Dezember (12)
|
||||
2. **Für jeden Monat**:
|
||||
- Lade UserBusiness-Einträge
|
||||
- Berechne neue Felder
|
||||
- Speichere Änderungen
|
||||
- Zeige Monats-Statistik
|
||||
3. **Zeige Jahres-Zusammenfassung**: Gesamtstatistik über alle Monate
|
||||
|
||||
## Was wird berechnet?
|
||||
|
||||
### calc_qual_kp (für aktuellen Level)
|
||||
|
||||
```php
|
||||
$rest_kp = max(0, $sales_volume_points_KP_sum - $qual_kp);
|
||||
$calc_qual_kp = $rest_kp > 0 ? $qual_kp : $sales_volume_points_KP_sum;
|
||||
```
|
||||
|
||||
- Wenn Rest-KP > 0: Nutze die volle qual_kp des Levels
|
||||
- Sonst: Nutze alle verfügbaren KP-Punkte
|
||||
|
||||
### Für Level-Arrays (next_qual_user_level, etc.)
|
||||
|
||||
```php
|
||||
$payline_points = sum($business_lines[1..paylines]['points']);
|
||||
$rest_kp = max(0, $sales_volume_points_KP_sum - $level['qual_kp']);
|
||||
$payline_points_qual_kp = $payline_points + $rest_kp;
|
||||
$calculated_qual_kp = $rest_kp > 0 ? $level['qual_kp'] : $sales_volume_points_KP_sum;
|
||||
```
|
||||
|
||||
## Output
|
||||
|
||||
### Einzelner Monat
|
||||
|
||||
Der Command zeigt:
|
||||
|
||||
- Progress Bar während der Verarbeitung
|
||||
- Memory-Nutzung alle 100 Einträge
|
||||
- Abschließende Statistik:
|
||||
- Anzahl aktualisierter Einträge
|
||||
- Anzahl übersprungener Einträge (bereits aktualisiert)
|
||||
- Anzahl Fehler
|
||||
- Ausführungszeit
|
||||
|
||||
**Beispiel Output:**
|
||||
|
||||
```
|
||||
Starte Update für Monat: 11 | Jahr: 2025
|
||||
[Command Start] Memory: 12.5 MB / 512 MB (2.44%) | Peak: 12.5 MB
|
||||
Gefunden: 1547 UserBusiness-Einträge
|
||||
1547/1547 [============================] 100%
|
||||
[Nach 100 Einträgen] Memory: 45.3 MB / 512 MB (8.85%) | Peak: 48.2 MB
|
||||
...
|
||||
|
||||
Update abgeschlossen:
|
||||
- Aktualisiert: 1547
|
||||
- Übersprungen: 0
|
||||
- Fehler: 0
|
||||
UPDATE COMPLETED SUCCESSFULLY | Zeit: 12sec :345.6789 ms
|
||||
```
|
||||
|
||||
### Ganzes Jahr
|
||||
|
||||
Der Command zeigt:
|
||||
|
||||
- Für jeden Monat:
|
||||
- Progress Bar
|
||||
- Monats-Statistik
|
||||
- Memory-Nutzung nach dem Monat
|
||||
- Abschließende Jahres-Zusammenfassung
|
||||
|
||||
**Beispiel Output:**
|
||||
|
||||
```
|
||||
Starte Update für ALLE MONATE des Jahres: 2025
|
||||
======================================================================
|
||||
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ Verarbeite Monat: 01/2025 │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
Gefunden: 1245 UserBusiness-Einträge
|
||||
1245/1245 [============================] 100%
|
||||
✓ Monat 1 abgeschlossen: 1245 aktualisiert, 0 übersprungen, 0 Fehler
|
||||
[Nach Monat 1] Memory: 48.2 MB / 512 MB (9.41%) | Peak: 52.1 MB
|
||||
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ Verarbeite Monat: 02/2025 │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
Gefunden: 1367 UserBusiness-Einträge
|
||||
1367/1367 [============================] 100%
|
||||
✓ Monat 2 abgeschlossen: 1367 aktualisiert, 0 übersprungen, 0 Fehler
|
||||
[Nach Monat 2] Memory: 51.3 MB / 512 MB (10.02%) | Peak: 55.4 MB
|
||||
|
||||
[... weitere Monate ...]
|
||||
|
||||
======================================================================
|
||||
ZUSAMMENFASSUNG FÜR DAS JAHR 2025:
|
||||
======================================================================
|
||||
Verarbeitete Monate: 12/12
|
||||
Fehlgeschlagene Monate: 0
|
||||
Gesamt aktualisiert: 15432
|
||||
Gesamt übersprungen: 0
|
||||
Gesamt Fehler: 0
|
||||
======================================================================
|
||||
JAHRES-UPDATE ABGESCHLOSSEN | Zeit: 145sec :678.9012 ms
|
||||
[Command End] Memory: 62.8 MB / 512 MB (12.27%) | Peak: 68.2 MB
|
||||
```
|
||||
|
||||
## Migration
|
||||
|
||||
Vor dem ersten Ausführen des Commands muss die Migration ausgeführt werden:
|
||||
|
||||
```bash
|
||||
php artisan migrate
|
||||
```
|
||||
|
||||
Die Migration fügt das neue Feld `calc_qual_kp` zur `user_businesses` Tabelle hinzu.
|
||||
|
||||
## Integration mit BusinessStoreOptimized
|
||||
|
||||
Nach Ausführung von `business:store-optimized` können die berechneten Felder automatisch befüllt werden. Die neue Logik in `BusinessUserItemOptimized.php` sorgt dafür, dass bei neuen Berechnungen die Felder korrekt gesetzt werden.
|
||||
|
||||
## Fehlerbehandlung
|
||||
|
||||
- Fehler bei einzelnen Einträgen führen nicht zum Abbruch
|
||||
- Fehler werden geloggt und in der Statistik angezeigt
|
||||
- Memory-Nutzung wird überwacht (Warnung bei >80%)
|
||||
|
||||
## Performance
|
||||
|
||||
- Verarbeitet ca. 100-150 Einträge pro Sekunde
|
||||
- Memory-Nutzung: ca. 30-50 MB für 1000 Einträge
|
||||
- Kann für mehrere Monate/Jahre nacheinander ausgeführt werden
|
||||
|
||||
## Hinweise
|
||||
|
||||
- Der Command ist idempotent (kann mehrfach ausgeführt werden)
|
||||
- Bereits vorhandene Felder werden nicht überschrieben
|
||||
- Nutze `--dry-run` für Tests vor der Produktionsausführung
|
||||
- Empfohlen: Backup vor der ersten Ausführung
|
||||
Loading…
Add table
Add a link
Reference in a new issue