zentraler export

This commit is contained in:
2026-04-15 14:47:32 +02:00
parent 7891dfb3dd
commit 264e64bbf5
13 changed files with 610 additions and 154 deletions
+40 -61
View File
@@ -2,63 +2,51 @@
Stand: 2026-04-15
## 1. Erstes Ziel
## 1. Status
Prüfen, ob die aktuelle Version beim Standort-Export noch in der zentralen SQLite-Speicherung hängen bleibt.
Der Export geht jetzt wieder durch.
Wichtig:
Die zuletzt gefundene Hauptursache war nicht mehr ein reiner SQLite-Lock beim Batch-Insert, sondern ein kaputter FK-Schemazustand in der bestehenden DB:
- App neu starten
- denselben Standort erneut exportieren
- letzte sichtbare `Live-Status`-Meldung exakt notieren
- SQLite referenzierte in mindestens einer Tabelle noch `main.Sites_old`
- dadurch scheiterte `SaveChangesAsync()` beim Schreiben z. B. in `AppEventLogs` oder `ExportLogs`
- sichtbarer Effekt: Export blieb nach `Zentrale Tabelle: ... Datensaetze gespeichert.` haengen
Interessant sind vor allem diese Fälle:
## 2. Umgesetzter Fix
- `Zentrale Tabelle: Batch x/y speichern...`
- `Zentrale Tabelle: Batch x/y abschliessen...`
- `Zentrale Tabelle aktualisiert`
- `Export erfolgreich`
Umgesetzt wurde:
## 2. Hauptverdächtiger
- Dashboard-Live-Status liest waehrend laufendem Export nicht mehr staendig aus `AppEventLogs`, sondern nutzt den In-Memory-Status des `ExportOrchestrationService`
- SQLite `Default Timeout` in `Program.cs` auf `60` erhoeht
- `CentralSalesRecordService` setzt nach den Batches explizit `Zentrale Tabelle aktualisiert`
- `DatabaseInitializationService` repariert beim App-Start automatisch Tabellen, deren FK-SQL noch `Sites_old` referenziert
Datei:
- `Services/CentralSalesRecordService.cs`
Aktueller Stand:
- alte Sätze werden in eigener Transaktion gelöscht
- Inserts laufen in Batches von 25
- jeder Batch wird separat committed
Wenn es noch hängt, dort zuerst ansetzen.
## 3. Falls es weiter hängt
In dieser Reihenfolge prüfen:
1. Batchgröße weiter reduzieren
- z. B. `10` statt `25`
2. Direkt vor und direkt nach `transaction.CommitAsync()` zusätzlich technische Logs setzen
3. Prüfen, ob parallel noch andere SQLite-Zugriffe laufen
4. Optional zentrale Speicherung vorübergehend per Setting deaktivierbar machen
5. Falls nötig zentrale Speicherung in separate DB-Datei auslagern
## 4. Dashboard / UI prüfen
Zu testen:
- `Excel öffnen` wird nach neuem erfolgreichen Export aktiv
- `Export erfolgreich` zeigt `Pfad=...`
- Dashboard-Live-Status setzt sich nach Abschluss sauber zurück
Dateien:
Betroffene Dateien:
- `Program.cs`
- `Components/Pages/Dashboard.razor`
- `Services/SiteExportService.cs`
- `Models/ExportLog.cs`
- `Services/CentralSalesRecordService.cs`
- `Services/DatabaseInitializationService.cs`
## 5. SAP-Funktionalität kurz gegenprüfen
## 3. Was noch getestet werden sollte
Kurz gegenpruefen:
- Export eines Standorts erneut
- `Excel oeffnen` nach erfolgreichem Export
- `Export erfolgreich` inkl. `Pfad=...`
- Dashboard-Live-Status setzt sich nach Abschluss sauber zurueck
## 4. Falls wieder ein Fehler auftritt
In dieser Reihenfolge pruefen:
1. Exakte Fehlermeldung aus `AppEventLogs` bzw. Console notieren
2. Pruefen, ob die Reparaturlogik beim Start gelaufen ist
3. Pruefen, ob noch weitere Tabellen mit veralteter FK-Referenz existieren
4. Erst danach wieder am Batch-/Commit-Pfad der zentralen Speicherung arbeiten
## 5. SAP-Funktionalitaet kurz gegenpruefen
Zu testen:
@@ -73,12 +61,12 @@ Dateien:
- `Services/SapGatewayService.cs`
- `Services/SapCompositionService.cs`
## 6. Management Cockpit prüfen
## 6. Management Cockpit pruefen
Zu testen:
- vorhandene Excel-Datei auswählbar
- Analyse läuft
- vorhandene Excel-Datei auswaehlbar
- Analyse laeuft
- Kennzahlen plausibel
Dateien:
@@ -86,17 +74,8 @@ Dateien:
- `Components/Pages/ManagementCockpit.razor`
- `Services/ManagementCockpitService.cs`
## 7. Wenn Stabilität vor Funktion geht
## 7. Referenzdatei
Sinnvolle pragmatische Zwischenlösung:
- zentrale SQLite-Speicherung per Setting abschaltbar machen
- Export lokal und zentral Excel weiter erlauben
- zentrale DB erst wieder aktivieren, wenn der Commit-Pfad stabil ist
## 8. Referenzdatei
Für den vollständigen Kontext zuerst lesen:
Fuer den vollstaendigen Kontext zuerst lesen:
- `HANDOFF_2026-04-15.md`