12 KiB
Next Steps
Stand: 2026-04-15
Nachtrag 2026-04-17
Der Punkt CHF-Umrechnung / Wechselkurse ist nicht mehr komplett offen.
Der aktuelle Ist-Stand ist:
CurrencyExchangeRateServiceist implementiertExchangeRateImportServiceimportiert ECB-KurseNormalizeCurrencyCodeundConvertCurrencysind im Transformationssystem registriert- fehlende Unit-Tests dafuer wurden am 2026-04-17 ergaenzt
Neuer Teststand:
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal- erfolgreich
31/31Tests gruen
Was fuer Waehrungen trotzdem noch offen bleibt:
- fachlicher Einsatz der
ConvertCurrency-Regeln in echten Standortkonfigurationen pruefen - UI-Flow fuer Wechselkurspflege in
Settings.razormanuell gegenpruefen - ECB-Import einmal real ueber die UI bzw. App-Funktion pruefen
- bestaetigen, fuer welche Sichten CHF die Zielwaehrung sein soll
- Management-Cockpit-Rohsicht nur dann auf CHF umstellen, wenn fachlich gewuenscht
Architektur-Nachtrag 2026-04-17
Nach einer separaten Architekturpruefung wurden die naechsten Schritte neu priorisiert.
Wichtig:
- neue Fachfeatures sind aktuell nicht der erste Engpass
- zuerst muessen die Architektur-Risiken in Initialisierung, Config-Import und UI-Service-Schnitt bereinigt werden
Neue Top-Prioritaeten
1. DatabaseInitializationService absichern
Prio sehr hoch.
Gruende:
- Startlogik enthaelt manuelle Schema-Migrationen
- FK-Reparaturen laufen produktiv beim App-Start
- dort wurde ein konkretes Risiko fuer verschobene Spaltenwerte beim
Sites_old-Kopierpfad erkannt
Vor weiterer Fachentwicklung:
- Initialisierungspfad genau pruefen
- SQL-Kopierlogik validieren
- moeglichst Richtung versionierte Migrationen bewegen
2. ConfigTransferService.ImportJsonAsync neu denken
Prio sehr hoch.
Aktuelles Problem:
- Import loescht sehr viel und baut danach stueckweise neu auf
- nicht atomar
- potenziell teilzerstoerter Zustand bei Fehlern
CentralSalesRecordswerden mitimportiert/mitgeloescht, obwohl sie eher Laufzeitdaten als Konfiguration sind
Ziel:
- atomarer Import
- saubere Trennung zwischen Konfiguration und Betriebsdaten
3. Razor-Seiten entlasten
Prio hoch.
Betroffen vor allem:
Components/Pages/Settings.razorComponents/Pages/Standorte.razor
Ziel:
- DB- und Fachlogik aus UI-Code in Services / Application-Layer verschieben
- Seiten nur noch fuer Interaktion und Formularzustand
4. Konsolidierten Export semantisch klaeren
Prio mittel.
Offene Frage:
- zentrale Datei aus laufendem Snapshot oder
- zentrale Datei immer aus
CentralSalesRecords
Aktuell ist die Verantwortung unscharf.
5. Reporting verallgemeinern
Prio mittel.
Erst nach den Infrastrukturthemen:
- hartcodierte Jahreslogik im Cockpit entfernen
- fachlich entscheiden, ob und wo CHF-Rohsicht gebraucht wird
Praktische Reihenfolge fuer den naechsten Wiedereinstieg
Wenn nach erneutem Absturz oder Kontextverlust weitergemacht wird:
HANDOFF_2026-04-15.mdlesen, speziell die Architekturpruefung vom 2026-04-17DatabaseInitializationServiceals ersten Risikoblock ansehenConfigTransferService.ImportJsonAsyncals zweiten Risikoblock ansehen- erst danach wieder an Cockpit / CHF / weitere Fachfeatures gehen
Nachtrag HANA-/Standort-Workflow 2026-04-17
Der doppelte HANA-Workflow wurde inzwischen bereits bereinigt.
Neuer Stand:
- oben zentrale HANA-Konfiguration pro Quellsystem
BI1/SAGE - unten im Standort keine eigene wirksame Voll-HANA-Konfiguration mehr
- HANA-basierte Standorte ziehen ihre technische Verbindung aus der zentralen Quellsystem-Konfiguration
- Standort bleibt fuer fachliche Daten und optionale Credential-Overrides zustaendig
- die frueher doppelte HANA-UI im Standortdialog ist inzwischen auch sichtbar entfernt
- der Verbindungstest in
Settings.razorprueft und meldet jetzt die zentrale HANA-Verbindung klar
Was dazu noch praktisch geprueft werden sollte
Standorte-Seite im UI manuell durchklicken- pruefen, ob
BI1- undSAGE-Standort beim Speichern sauber auf die zentrale HANA-Konfiguration zeigen - pruefen, ob Aenderung oben bei zentraler HANA-Konfiguration in nachfolgenden Exporten wirklich greift
Anschlussarbeiten
ConfigTransferServicespaeter auf das neue zentrale HANA-Modell fachlich nachziehen und kritisch pruefenDatabaseInitializationServiceweiter konsolidieren, damit die Zuordnung alter HANA-Daten langfristig robuster wird
Nachtrag Quellsystem-Verwaltung 2026-04-17
Die bisher hart codierten Quellsystem-Listen wurden ersetzt.
Neuer Stand:
SourceSystemDefinitionist jetzt die zentrale Stammdatenquelle fuer QuellsystemeSettings.razorhat jetzt eine GUI zur Pflege von QuellsystemenStandorte.razorzieht seine Quellsystem-Auswahl aus diesen StammdatenTransformations.razorzieht die Systemauswahl ebenfalls aus diesen Stammdaten- zentrale Credentials haengen jetzt am Quellsystem selbst
- HANA-Zentralverbindungen werden nur noch fuer Quellsysteme mit Anschlussart
HANAgezeigt - alte zentrale Credential-Felder in
ExportSettingssind aus dem aktiven Codepfad entfernt ExportSettingswird beim Start auch schematisch auf das neue Feldset bereinigt- HANA speichert zentral keine eigenen Credentials mehr; dort bleiben nur technische Verbindungsdaten
HanaServer.Username/Passwordsind nur noch Laufzeitfelder und nicht mehr im EF-Schema gemappt- SAP Service URL wird jetzt zentral im Quellsystem gepflegt; der Standort haelt nur noch ein optionales Override
- Quellsysteme werden jetzt per Dialog bearbeitet statt nur ueber Inline-Tabellenfelder
Was dazu noch praktisch geprueft werden sollte
- in
Settingsein neues Quellsystem per GUI anlegen - pruefen, ob es danach in
StandorteundTransformationssofort auswählbar ist - pruefen, ob deaktivierte Quellsysteme in neuen Standort-/Regelanlagen nicht mehr normal angeboten werden
- pruefen, ob Aenderung der Anschlussart von
HANAaufSAP_GATEWAYoderMANUAL_EXCELfachlich sauber wirkt - pruefen, ob bestehende BI1/SAGE/SAP-Daten nach Startmigration korrekt in
SourceSystemDefinitionsstehen - pruefen, ob Konfiguration-Export/Import ohne die alten Credential-Felder sauber mit
SourceSystemDefinitionsarbeitet - pruefen, ob zentrale SAP Service URL ohne Override sauber fuer Refresh, Export und Dashboard greift
- pruefen, ob SAP Service URL Override am Standort die zentrale URL erwartungsgemaess uebersteuert
Nachtrag 2026-04-16
Seit dem letzten Stand kamen mehrere groessere Erweiterungen dazu. Die offenen Punkte unten muessen deshalb im neuen Kontext gelesen werden.
0. Neuer Ist-Stand
Zusaetzlich zum alten Stand ist jetzt vorhanden:
- manueller Standort-Import ueber
MANUAL_EXCEL - Dashboard mit
Alle exportieren,Zentrale Datei neu erzeugenund zentralemExcel oeffnen - Roh-Auswertung im
Management Cockpitdirekt ausCentralSalesRecords - erweitertes Transformationssystem mit
Value- undRecord-Regeln - HANA-Schema-Lookup im Standortdialog
- Testprojekt mit aktuell 18 gruenden Tests
1. Status
Der Export geht jetzt wieder durch.
Die zuletzt gefundene Hauptursache war nicht mehr ein reiner SQLite-Lock beim Batch-Insert, sondern ein kaputter FK-Schemazustand in der bestehenden DB:
- SQLite referenzierte in mindestens einer Tabelle noch
main.Sites_old - dadurch scheiterte
SaveChangesAsync()beim Schreiben z. B. inAppEventLogsoderExportLogs - sichtbarer Effekt: Export blieb nach
Zentrale Tabelle: ... Datensaetze gespeichert.haengen
2. Umgesetzter Fix
Umgesetzt wurde:
- Dashboard-Live-Status liest waehrend laufendem Export nicht mehr staendig aus
AppEventLogs, sondern nutzt den In-Memory-Status desExportOrchestrationService - SQLite
Default TimeoutinProgram.csauf60erhoeht CentralSalesRecordServicesetzt nach den Batches explizitZentrale Tabelle aktualisiertDatabaseInitializationServicerepariert beim App-Start automatisch Tabellen, deren FK-SQL nochSites_oldreferenziert
Betroffene Dateien:
Program.csComponents/Pages/Dashboard.razorServices/CentralSalesRecordService.csServices/DatabaseInitializationService.cs
3. Was noch getestet werden sollte
Kurz gegenpruefen:
- Export eines Standorts erneut
Excel oeffnennach erfolgreichem ExportExport erfolgreichinkl.Pfad=...- Dashboard-Live-Status setzt sich nach Abschluss sauber zurueck
Alle exportierenZentrale Datei neu erzeugen- zentrale Datei im Dashboard oeffnen
3a. Manuellen Excel-Import pruefen
Zu testen:
- Standort auf
MANUAL_EXCELstellen - Excel im Standort hochladen
- Standort exportieren
- pruefen, ob
CentralSalesRecordsfuer diesen Standort ersetzt wurden - pruefen, ob der zentrale Export den Standort korrekt enthaelt
Dateien:
Components/Pages/Standorte.razorServices/ManualExcelImportService.csServices/SiteExportService.cs
3b. HANA-Schema-Lookup pruefen
Zu testen:
- bei
BI1-StandortSchemas laden - bei
SAGE-StandortSchemas laden - wird ein plausibles B1-Schema angeboten?
- funktioniert danach Export ohne manuelle Schema-Eingabe?
- zeigt England / Spezialstandort jetzt schneller, wenn Schema oder Rechte nicht passen?
Dateien:
Components/Pages/Standorte.razorServices/HanaQueryService.cs
4. Falls wieder ein Fehler auftritt
In dieser Reihenfolge pruefen:
- Exakte Fehlermeldung aus
AppEventLogsbzw. Console notieren - Pruefen, ob die Reparaturlogik beim Start gelaufen ist
- Pruefen, ob noch weitere Tabellen mit veralteter FK-Referenz existieren
- Erst danach wieder am Batch-/Commit-Pfad der zentralen Speicherung arbeiten
5. SAP-Funktionalitaet kurz gegenpruefen
Zu testen:
Quellen refreshenFelder aus Quellen ladenAuto-Match- SAP-Export eines Standorts
Dateien:
Components/Pages/Standorte.razorServices/SapGatewayService.csServices/SapCompositionService.cs
6. Management Cockpit pruefen
Zu testen:
- vorhandene Excel-Datei auswaehlbar
- Analyse laeuft
- Kennzahlen plausibel
- Roh-Auswertung aus
CentralSalesRecordslaeuft - Jahr/Monat-Filter funktionieren
- Summen nach Quelle / Land plausibel
Dateien:
Components/Pages/ManagementCockpit.razorServices/ManagementCockpitService.cs
6a. Fachlich bewusst noch offen
Noch nicht final umsetzen ohne Rueckmeldung Fachseite:
- Intercompany-Filter
- fachliche Nutzung der CHF-Umrechnung in Cockpit / Reports
- Budgetvergleich
- Gruppenlogik
- Spartenlogik
- Margenlogik
Diese Punkte sollen spaeter moeglichst dynamisch auf dem neuen Transformations-/Mapping-Ansatz aufsetzen, aber aktuell nicht hart geraten werden.
6b. Naechste sinnvolle Testkandidaten
Wenn weiter in Tests investiert wird, sind die naechsten Kandidaten:
ExportOrchestrationService- spaeter End-to-End-Tests fuer den Wechselkurs-/Transformationspfad
- spaeter evtl. SQLite-nahe Integrationstests fuer
DatabaseInitializationService
Aktueller Teststatus:
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal- erfolgreich
31/31Tests gruen
7. Referenzdatei
Fuer den vollstaendigen Kontext zuerst lesen:
HANDOFF_2026-04-15.md
8. Letzte bereinigte UI-Irritation
Stand 2026-04-17:
- In
Standortewurde die obere Box aufZentrale HANA-Technikgeklaert. - Dort gibt es keinen
Server hinzufuegen-Pfad mehr. - Grund: zentrale HANA-Eintraege werden aus
Quellsystemenmit AnschlussartHANAabgeleitet. SAPgehoert fachlich nicht in diese Box, sondern inSettings -> Quellsysteme.
Wichtig fuer den naechsten Wiedereinstieg:
- Wenn ein Benutzer fragt
wo ist SAP?, ist die richtige Antwort: nicht in der HANA-Box, sondern in der zentralen Quellsystem-Verwaltung. - Wenn ein HANA-System oben fehlt, zuerst
Settings -> Quellsystemepruefen und dort AnschlussartHANAsetzen.
9. Config-Transfer erneut geprueft
Stand 2026-04-17:
- Der aktuelle Config-Import/-Export passt zum neuen Datenmodell.
- Zentral verwaltete Quellsysteme, SAP-Zentral-URL, HANA-Technik ohne HANA-Credentials und Standort-Overrides werden korrekt im Transferformat abgebildet.
- Die vorhandenen
ConfigTransferServiceTestsbestaetigen den aktuellen Rundlauf.
Fuer den naechsten Wiedereinstieg wichtig:
- Das aktuelle Format ist fuer heutige Exporte konsistent.
ImportJsonAsyncist aber weiterhin nicht atomar und loescht zuerst produktive Konfiguration.- Zusaetzlich gibt es ein Altformat-Risiko:
- aeltere JSONs mit
SourceSystemDefinitions, aber ohneConnectionKind, koennen wegen DTO-Default falsch alsHANAinterpretiert werden.
- aeltere JSONs mit
Naechste saubere Haertung fuer dieses Thema:
- Config-Import transaktional machen
- Legacy-Fallback fuer fehlendes
ConnectionKindeinbauen