Files
Ai/TrafagSalesExporter/NEXT_STEPS_2026-04-15.md
2026-04-17 10:29:41 +02:00

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:

  • CurrencyExchangeRateService ist implementiert
  • ExchangeRateImportService importiert ECB-Kurse
  • NormalizeCurrencyCode und ConvertCurrency sind 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/31 Tests gruen

Was fuer Waehrungen trotzdem noch offen bleibt:

  • fachlicher Einsatz der ConvertCurrency-Regeln in echten Standortkonfigurationen pruefen
  • UI-Flow fuer Wechselkurspflege in Settings.razor manuell 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
  • CentralSalesRecords werden 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.razor
  • Components/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:

  1. HANDOFF_2026-04-15.md lesen, speziell die Architekturpruefung vom 2026-04-17
  2. DatabaseInitializationService als ersten Risikoblock ansehen
  3. ConfigTransferService.ImportJsonAsync als zweiten Risikoblock ansehen
  4. 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.razor prueft und meldet jetzt die zentrale HANA-Verbindung klar

Was dazu noch praktisch geprueft werden sollte

  • Standorte-Seite im UI manuell durchklicken
  • pruefen, ob BI1- und SAGE-Standort beim Speichern sauber auf die zentrale HANA-Konfiguration zeigen
  • pruefen, ob Aenderung oben bei zentraler HANA-Konfiguration in nachfolgenden Exporten wirklich greift

Anschlussarbeiten

  • ConfigTransferService spaeter auf das neue zentrale HANA-Modell fachlich nachziehen und kritisch pruefen
  • DatabaseInitializationService weiter 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:

  • SourceSystemDefinition ist jetzt die zentrale Stammdatenquelle fuer Quellsysteme
  • Settings.razor hat jetzt eine GUI zur Pflege von Quellsystemen
  • Standorte.razor zieht seine Quellsystem-Auswahl aus diesen Stammdaten
  • Transformations.razor zieht die Systemauswahl ebenfalls aus diesen Stammdaten
  • zentrale Credentials haengen jetzt am Quellsystem selbst
  • HANA-Zentralverbindungen werden nur noch fuer Quellsysteme mit Anschlussart HANA gezeigt
  • alte zentrale Credential-Felder in ExportSettings sind aus dem aktiven Codepfad entfernt
  • ExportSettings wird beim Start auch schematisch auf das neue Feldset bereinigt
  • HANA speichert zentral keine eigenen Credentials mehr; dort bleiben nur technische Verbindungsdaten
  • HanaServer.Username / Password sind 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 Settings ein neues Quellsystem per GUI anlegen
  • pruefen, ob es danach in Standorte und Transformations sofort auswählbar ist
  • pruefen, ob deaktivierte Quellsysteme in neuen Standort-/Regelanlagen nicht mehr normal angeboten werden
  • pruefen, ob Aenderung der Anschlussart von HANA auf SAP_GATEWAY oder MANUAL_EXCEL fachlich sauber wirkt
  • pruefen, ob bestehende BI1/SAGE/SAP-Daten nach Startmigration korrekt in SourceSystemDefinitions stehen
  • pruefen, ob Konfiguration-Export/Import ohne die alten Credential-Felder sauber mit SourceSystemDefinitions arbeitet
  • 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 erzeugen und zentralem Excel oeffnen
  • Roh-Auswertung im Management Cockpit direkt aus CentralSalesRecords
  • erweitertes Transformationssystem mit Value- und Record-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. in AppEventLogs oder ExportLogs
  • 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 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

Betroffene Dateien:

  • Program.cs
  • Components/Pages/Dashboard.razor
  • Services/CentralSalesRecordService.cs
  • Services/DatabaseInitializationService.cs

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
  • Alle exportieren
  • Zentrale Datei neu erzeugen
  • zentrale Datei im Dashboard oeffnen

3a. Manuellen Excel-Import pruefen

Zu testen:

  • Standort auf MANUAL_EXCEL stellen
  • Excel im Standort hochladen
  • Standort exportieren
  • pruefen, ob CentralSalesRecords fuer diesen Standort ersetzt wurden
  • pruefen, ob der zentrale Export den Standort korrekt enthaelt

Dateien:

  • Components/Pages/Standorte.razor
  • Services/ManualExcelImportService.cs
  • Services/SiteExportService.cs

3b. HANA-Schema-Lookup pruefen

Zu testen:

  • bei BI1-Standort Schemas laden
  • bei SAGE-Standort Schemas 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.razor
  • Services/HanaQueryService.cs

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:

  • Quellen refreshen
  • Felder aus Quellen laden
  • Auto-Match
  • SAP-Export eines Standorts

Dateien:

  • Components/Pages/Standorte.razor
  • Services/SapGatewayService.cs
  • Services/SapCompositionService.cs

6. Management Cockpit pruefen

Zu testen:

  • vorhandene Excel-Datei auswaehlbar
  • Analyse laeuft
  • Kennzahlen plausibel
  • Roh-Auswertung aus CentralSalesRecords laeuft
  • Jahr/Monat-Filter funktionieren
  • Summen nach Quelle / Land plausibel

Dateien:

  • Components/Pages/ManagementCockpit.razor
  • Services/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/31 Tests gruen

7. Referenzdatei

Fuer den vollstaendigen Kontext zuerst lesen:

  • HANDOFF_2026-04-15.md

8. Letzte bereinigte UI-Irritation

Stand 2026-04-17:

  • In Standorte wurde die obere Box auf Zentrale HANA-Technik geklaert.
  • Dort gibt es keinen Server hinzufuegen-Pfad mehr.
  • Grund: zentrale HANA-Eintraege werden aus Quellsystemen mit Anschlussart HANA abgeleitet.
  • SAP gehoert fachlich nicht in diese Box, sondern in Settings -> 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 -> Quellsysteme pruefen und dort Anschlussart HANA setzen.

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 ConfigTransferServiceTests bestaetigen den aktuellen Rundlauf.

Fuer den naechsten Wiedereinstieg wichtig:

  • Das aktuelle Format ist fuer heutige Exporte konsistent.
  • ImportJsonAsync ist aber weiterhin nicht atomar und loescht zuerst produktive Konfiguration.
  • Zusaetzlich gibt es ein Altformat-Risiko:
    • aeltere JSONs mit SourceSystemDefinitions, aber ohne ConnectionKind, koennen wegen DTO-Default falsch als HANA interpretiert werden.

Naechste saubere Haertung fuer dieses Thema:

  • Config-Import transaktional machen
  • Legacy-Fallback fuer fehlendes ConnectionKind einbauen