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
+62 -79
View File
@@ -7,34 +7,34 @@ Stand: 2026-04-15
Die App wurde von einem reinen BI1/HANA-Exporter zu einer kombinierten Plattform erweitert:
- `BI1` und `SAGE` bleiben auf direktem HANA-Zugriff
- `SAP` läuft separat über SAP Gateway / OData
- SAP-Quellen können gelesen, gejoint und auf das zentrale `SalesRecord`-Schema gemappt werden
- `SAP` laeuft separat ueber SAP Gateway / OData
- SAP-Quellen koennen gelesen, gejoint und auf das zentrale `SalesRecord`-Schema gemappt werden
- Standort-Exporte werden lokal als Excel geschrieben
- Zusätzlich werden Datensätze in eine zentrale SQLite-Tabelle geschrieben
- Ein konsolidierter Export liest aus dieser zentralen Tabelle
- zusaetzlich werden Datensaetze in eine zentrale SQLite-Tabelle geschrieben
- ein konsolidierter Export liest aus dieser zentralen Tabelle
## Wichtigste umgesetzte Funktionen
### 1. Zentrale Credentials pro Quellsystem
Es gibt zentrale Zugangsdaten in `ExportSettings` für:
Es gibt zentrale Zugangsdaten in `ExportSettings` fuer:
- `SAP`
- `BI1`
- `SAGE`
Zusätzlich gibt es pro Standort optionale Overrides:
Zusaetzlich gibt es pro Standort optionale Overrides:
- `UsernameOverride`
- `PasswordOverride`
Auflösungsreihenfolge:
Aufloesungsreihenfolge:
1. Standort-Override
2. zentrale Credentials des Quellsystems
3. bei HANA zusätzlich Fallback auf alten `HanaServer.Username/Password`
3. bei HANA zusaetzlich Fallback auf alten `HanaServer.Username/Password`
## 2. SAP von BI1/HANA getrennt
### 2. SAP von BI1/HANA getrennt
`SAP` nutzt nicht mehr den HANA-Pfad, sondern eine eigene Gateway/OData-Strecke.
@@ -56,21 +56,21 @@ http://travt762.sap.trafag.com:8000/sap/opu/odata/sap/ZPOWERBI_EINKAUF_SRV/
Wichtig:
- Service URL immer nur bis zum Service
- Entity Set separat auswählen
- Entity Set separat auswaehlen
## 3. SAP-Quellen, Joins und Feldmappings
### 3. SAP-Quellen, Joins und Feldmappings
Für SAP gibt es mehrere neue Modelle:
Fuer SAP gibt es mehrere neue Modelle:
- `SapSourceDefinition`
- `SapJoinDefinition`
- `SapFieldMapping`
Unterstützt wird:
Unterstuetzt wird:
- mehrere SAP-Quellen pro Standort
- Alias pro Quelle
- Primärquelle
- Primaerquelle
- Join-Definitionen
- Mapping von `Alias.Feldname` auf zentrales Schema
@@ -79,9 +79,9 @@ UI-Erweiterungen:
- `Quellen refreshen`
- `Felder aus Quellen laden`
- Join-Key-Auswahl aus Metadaten
- `Auto-Match` für gleiche Feldnamen zwischen Primärquelle und anderen Quellen
- `Auto-Match` fuer gleiche Feldnamen zwischen Primaerquelle und anderen Quellen
## 4. Zentrale Datenspeicherung
### 4. Zentrale Datenspeicherung
Neue Tabelle:
@@ -89,7 +89,7 @@ Neue Tabelle:
Verwendung:
- pro Standort werden alte zentrale Sätze dieses Standorts ersetzt
- pro Standort werden alte zentrale Saetze dieses Standorts ersetzt
- konsolidierte Excel liest aus `CentralSalesRecords`
Wichtig:
@@ -97,9 +97,9 @@ Wichtig:
- zentrale Excel wird nicht appendet
- sie wird aus dem aktuellen Zustand der zentralen Tabelle neu erstellt
## 5. Exportpfade
### 5. Exportpfade
Neue Konfigurationsmöglichkeiten:
Neue Konfigurationsmoeglichkeiten:
Zentral in `Settings`:
@@ -118,16 +118,16 @@ Fallback wenn leer:
relativ zum App-Verzeichnis.
## 6. SharePoint
### 6. SharePoint
SharePoint-Upload ist optional.
Wenn keine vollständige SharePoint-Konfiguration vorhanden ist:
Wenn keine vollstaendige SharePoint-Konfiguration vorhanden ist:
- Excel wird trotzdem lokal erzeugt
- kein Upload nach SharePoint
Benötigte SharePoint-Werte:
Benoetigte SharePoint-Werte:
- `Tenant ID`
- `Client ID`
@@ -135,7 +135,7 @@ Benötigte SharePoint-Werte:
Das sind Entra App Registration Werte, nicht normale Benutzer-Credentials.
## 7. Config Import/Export
### 7. Config Import/Export
Es gibt JSON-Import/Export der Konfiguration mit Checkbox:
@@ -153,9 +153,9 @@ Enthalten sind u. a.:
- SAP-Joins
- SAP-Mappings
## 8. Logging und Live-Status
### 8. Logging und Live-Status
Neue technische Logs über `AppEventLogs`.
Neue technische Logs ueber `AppEventLogs`.
Sichtbar:
@@ -172,11 +172,11 @@ Geloggt werden u. a.:
- zentrale Tabellenspeicherung
- Export erfolgreich / fehlgeschlagen
## 9. Excel öffnen
### 9. Excel oeffnen
Im Dashboard gibt es neben `Export` den Button:
- `Excel öffnen`
- `Excel oeffnen`
Dieser nutzt `ExportLogs.FilePath`.
@@ -186,9 +186,9 @@ Voraussetzungen:
- `FilePath` gespeichert
- Datei existiert lokal
## 10. Management Cockpit
### 10. Management Cockpit
Es gibt einen neuen Menüpunkt:
Es gibt einen neuen Menuepunkt:
- `Management Cockpit`
@@ -196,19 +196,19 @@ Funktion:
- Auswahl vorhandener Excel-Dateien
- Analyse einer exportierten Standort-Datei
- Kennzahlen für Geschäftsinhaber / Management
- Kennzahlen fuer Geschaeftsinhaber / Management
Aktuell enthalten:
- Umsatz
- geschätzte Kosten
- geschätzte Marge
- geschaetzte Kosten
- geschaetzte Marge
- Rechnungsanzahl
- Kundenanzahl
- Top Kunden
- Top Produktgruppen
- Top Sales Owner
- Datenqualitätshinweise
- Datenqualitaetshinweise
- automatische Management-Aussagen
## Wichtige Dateien
@@ -249,7 +249,7 @@ Aktuell enthalten:
## Datenbank / Migrationen
Viele Änderungen laufen über `DatabaseInitializationService`.
Viele Aenderungen laufen ueber `DatabaseInitializationService`.
Wichtige neue oder erweiterte Tabellen/Felder:
@@ -273,52 +273,46 @@ Wichtige neue oder erweiterte Tabellen/Felder:
- `CentralSalesRecords`
- SAP-Konfigtabellen
## Aktuell offenes Hauptproblem
## Letztes Hauptproblem und Loesung
### Zentrale Speicherung hängt noch
### Export hing nach zentraler Speicherung
Die große Problemstelle war die zentrale SQLite-Speicherung.
Der Export blieb zuletzt nach
Bereits probiert:
- `Zentrale Tabelle: 20106 Datensaetze gespeichert.`
- EF `RemoveRange + SaveChanges`
- EF Batch-Speichern
- Dashboard-Polling reduziert
- SQLite WAL + busy timeout
- direkte SQLite-Inserts in einer großen Transaktion
- jetzt: kleine abgeschlossene Transaktionen pro Batch
haengen.
Aktueller Stand:
Die eigentliche Ursache war am Ende nicht mehr der Batch-Insert selbst, sondern ein kaputter SQLite-Schemazustand:
- zentrale Excel ist jetzt sehr schnell
- das Hängen wurde stark eingegrenzt
- zuletzt wurde der Schreibpfad so umgebaut, dass:
- Löschen in eigener kurzer Transaktion läuft
- Inserts batchweise mit Commit pro Batch laufen
- mindestens eine Tabelle referenzierte per FK noch `main.Sites_old`
- dadurch scheiterte `SaveChangesAsync()` spaeter beim Schreiben in `AppEventLogs` oder `ExportLogs`
- die alte Tabelle `Sites_old` existierte nicht mehr
Datei:
Beobachteter Fehler:
- `SQLite Error 1: 'no such table: main.Sites_old'`
## Umgesetzte Korrekturen
- `Components/Pages/Dashboard.razor`
- Live-Status pollt waehrend laufendem Export nicht mehr permanent `AppEventLogs`
- stattdessen Anzeige ueber den In-Memory-Status aus `ExportOrchestrationService`
- `Program.cs`
- SQLite `Default Timeout` von `10` auf `60` erhoeht
- `Services/CentralSalesRecordService.cs`
- nach abgeschlossenem Batch-Insert wird explizit `Zentrale Tabelle aktualisiert` gesetzt
- `Services/DatabaseInitializationService.cs`
- automatische Reparaturlogik fuer Tabellen, deren `CREATE TABLE`-SQL noch `Sites_old` referenziert
- betroffene Tabellen werden beim Start neu aufgebaut und Daten rueberkopiert
Die nächste Session sollte genau dort weiter debuggen, falls es noch hängt.
Danach wurde der Export erfolgreich getestet und geht jetzt wieder durch.
Wichtig:
## Was bei einer naechsten Stoerung zuerst zu pruefen ist
- Das Problem ist nicht SAP
- nicht SharePoint
- nicht mehr der große EF-Insert
- sondern sehr wahrscheinlich SQLite-Commit/Lock-Verhalten rund um die zentrale Tabelle
## Letzte bekannte Beobachtung
Der User meldete zuletzt:
- vorher Hänger bei `Zentrale Tabelle: Abschluss speichern...`
- danach wurde auf Commit pro Batch umgestellt
- neue Session soll testen, ob es jetzt bei
- `Batch x/y speichern...`
- `Batch x/y abschliessen...`
- oder gar nicht mehr hängt
1. Tritt beim App-Start die Schema-Reparatur sauber durch?
2. Gibt es noch weitere Tabellen mit FK-Referenz auf `Sites_old`?
3. Erst danach wieder Insert-/Commit-Batches der zentralen Speicherung untersuchen
## Build-Status
@@ -334,14 +328,3 @@ Ergebnis:
- bekannte Warnungen bleiben:
- SAP HANA Architekturwarnung `MSB3270`
- MudBlazor Analyzer `Dense`
## Hinweise für nächste Session
1. Zuerst aktuellen Export testen
2. Genaue letzte Live-Status-Meldung notieren
3. `Services/CentralSalesRecordService.cs` prüfen
4. Falls nötig:
- SQLite pragmas weiter anpassen
- zentrale Tabelle temporär ganz abschaltbar machen
- oder Schreiben über separate DB / Queue entkoppeln