Organize markdown docs for RAG routing
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,733 +1,19 @@
|
|||||||
# TrafagSalesExporter LLM System Guide
|
# LLM System Guide
|
||||||
|
|
||||||
Stand: 2026-05-05
|
Stand: 2026-05-27
|
||||||
|
|
||||||
## Aktueller Projektstand 2026-05-05
|
Diese Datei ist fuer tokenarme RAG-Nutzung komprimiert.
|
||||||
|
|
||||||
Fuer den aktuellen Finance-/Laenderabgleich zuerst diese Dateien lesen:
|
## Kontext-Regel
|
||||||
|
|
||||||
- [HANDOFF_2026-04-15.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/HANDOFF_2026-04-15.md)
|
1. Zuerst `docs/RAG_ROUTER.md` laden.
|
||||||
- [NEXT_STEPS_2026-04-15.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/NEXT_STEPS_2026-04-15.md)
|
2. Danach genau eine passende Kurzdatei aus `docs/rag/` laden.
|
||||||
- [lastchange.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/lastchange.md)
|
3. Original-/Rohdokus nur bei Detail-, Audit- oder Fehleranalysebedarf laden.
|
||||||
- [SAGE_SPAIN_EXPORT_2026-05-05.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/SAGE_SPAIN_EXPORT_2026-05-05.md)
|
|
||||||
|
|
||||||
Lokaler FinanceProbe:
|
## Volltext Bei Bedarf
|
||||||
|
|
||||||
|
Die Detailhistorie liegt hier:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
http://localhost:55417/finance
|
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||||
```
|
```
|
||||||
|
|
||||||
## Aktueller Zusatzstand 2026-05-07 SAP OData / ZSCHWEIZ
|
|
||||||
|
|
||||||
Schweiz/Oesterreich werden ueber eine neue SAP-Tabelle `ZSCHWEIZ` bereitgestellt.
|
|
||||||
|
|
||||||
Wichtige Punkte:
|
|
||||||
|
|
||||||
- ABAP-Report: `report.abap`
|
|
||||||
- SAP-Tabelle: `ZSCHWEIZ`
|
|
||||||
- OData EntitySet: `ZSCHWEIZSet`
|
|
||||||
- App-Standort: `ZSCHWEIZ` / `Schweiz/Oesterreich`
|
|
||||||
- Geplanter App-Pfad: `SAP` = `SAP OData`, nicht direkter HANA-Spezialcode
|
|
||||||
|
|
||||||
Quellsystem-Codes:
|
|
||||||
|
|
||||||
- `SAP`: SAP OData/Gateway, DisplayName `SAP OData`
|
|
||||||
- `SAP_HANA`: direkte HANA-Tabellen/Views, DisplayName `SAP HANA Tables/Views`
|
|
||||||
- `BI1`: HANA
|
|
||||||
- `SAGE`: HANA
|
|
||||||
- `MANUAL_EXCEL`: Excel/CSV
|
|
||||||
|
|
||||||
Mapper:
|
|
||||||
|
|
||||||
- SAP OData nutzt `SapSourceDefinition`, `SapJoinDefinition`, `SapFieldMapping`.
|
|
||||||
- Direkte HANA-Tabellen/Views koennen dieselben Mapping-Tabellen ebenfalls nutzen.
|
|
||||||
- Gemeinsame Mapping-Engine ist `MappedSalesRecordComposer`.
|
|
||||||
- `SapCompositionService` und `HanaQueryService.GetMappedSalesRecordsAsync` unterscheiden sich nur noch in der Quellenbeschaffung; Join und `SalesRecord`-Mapping sind zentral.
|
|
||||||
- Bei HANA mit gepflegten Quellen/Mappings nutzt `HanaDataSourceAdapter` den generischen Mapping-Pfad.
|
|
||||||
- Ohne HANA-Mapping bleibt der alte B1-HANA-Standardpfad fuer `OINV/INV1/ORIN/RIN1` aktiv.
|
|
||||||
|
|
||||||
Finance-Konfiguration:
|
|
||||||
|
|
||||||
- `FinanceReferences` enthaelt Soll-/check.xlsx-Referenzen.
|
|
||||||
- `FinanceIntercompanyRules` enthaelt 2nd-party/IC-Regeln.
|
|
||||||
- Budgetkurse werden als `CurrencyExchangeRates` mit `Notes = Budget 2025` gepflegt.
|
|
||||||
- Config-Export/-Import umfasst Finance-Referenzen und IC-Regeln.
|
|
||||||
|
|
||||||
ZSCHWEIZ-Seed:
|
|
||||||
|
|
||||||
- Quelle Alias `Z`
|
|
||||||
- EntitySet `ZSCHWEIZSet`
|
|
||||||
- Mapping auf `SalesRecord` ist vorbefuellt und grafisch editierbar.
|
|
||||||
- Beim App-Start wird die ZSCHWEIZ-Quelle samt Feldmapping per Upsert angelegt oder repariert.
|
|
||||||
- Wenn Gateway `$metadata` liefert, koennen Felder in der UI per `Felder aus Quellen laden` gelesen werden.
|
|
||||||
|
|
||||||
ABAP-Fachlogik:
|
|
||||||
|
|
||||||
- `BUKRS 1100` = Schweiz, `TSC TRCH`, `LAND1 CH`
|
|
||||||
- `BUKRS 1200` = Oesterreich, `TSC TRAT`, `LAND1 AT`
|
|
||||||
- `CUSTOMER_LAND` = Kundenland aus `KNA1-LAND1`
|
|
||||||
- Netto-/Steuerwerte werden in Belegwaehrung und Hauswaehrung geschrieben.
|
|
||||||
|
|
||||||
Aktuelle FinanceProbe-Funktionen:
|
|
||||||
|
|
||||||
- `Meeting Ampel 2025` fuer alle Laender aus `check.xlsx`
|
|
||||||
- `Detail alle Laender`
|
|
||||||
- `Spain CSV direct check`
|
|
||||||
- `Germany Excel sample check`
|
|
||||||
|
|
||||||
Spanien:
|
|
||||||
|
|
||||||
- Datei: `sagespain/v2/Spain_Sales_2025.csv`
|
|
||||||
- Ist: `3'082'320.18` EUR
|
|
||||||
- Soll: `3'102'333.61`
|
|
||||||
- Differenz: `-20'013.43`
|
|
||||||
- Status: Gelb / Pruefen
|
|
||||||
- Technisch lesbar, fachliche Differenz noch offen
|
|
||||||
|
|
||||||
Deutschland:
|
|
||||||
|
|
||||||
- Datei: `DE_Beispiel_Export_Daten.xlsx`
|
|
||||||
- Sample-Summe `NettoPreisGesamtX`: `8'290.70` EUR
|
|
||||||
- Nur Beispielfile, keine finale Jahreszahl
|
|
||||||
- Mapping technisch verstanden, finaler DE-Jahresfile fehlt
|
|
||||||
|
|
||||||
Letzte Verifikation:
|
|
||||||
|
|
||||||
- `dotnet build .\Tools\FinanceProbe\FinanceProbe.csproj --verbosity minimal --no-restore`
|
|
||||||
- `dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --verbosity minimal --no-restore`
|
|
||||||
- Ergebnis: Build OK, Tests `50/50`, FinanceProbe `HTTP 200`
|
|
||||||
|
|
||||||
Diese Datei ist fuer andere LLMs gedacht, die das Projekt schnell verstehen und daraus Architekturtexte, Visualisierungen, Ablaufdiagramme oder UI-/Datenflussgrafiken erzeugen sollen.
|
|
||||||
|
|
||||||
## Zweck des Systems
|
|
||||||
|
|
||||||
`TrafagSalesExporter` ist eine Blazor Server App auf `.NET 8`, die Verkaufsdaten aus mehreren Quellsystemen in ein gemeinsames Zielschema ueberfuehrt.
|
|
||||||
|
|
||||||
Quellsysteme:
|
|
||||||
|
|
||||||
- `HANA`-basierte Systeme wie `BI1` und `SAGE`
|
|
||||||
- `SAP_GATEWAY` ueber OData
|
|
||||||
- `MANUAL_EXCEL` aus hochgeladenen oder referenzierten Excel-Dateien
|
|
||||||
|
|
||||||
Zielbild:
|
|
||||||
|
|
||||||
- jede Quelle wird in `SalesRecord` normalisiert
|
|
||||||
- Standortdaten koennen lokal als Excel exportiert werden
|
|
||||||
- alle Datensaetze werden in `CentralSalesRecords` gespeichert
|
|
||||||
- eine zentrale konsolidierte Datei wird aus dem zentralen Datenbestand erzeugt
|
|
||||||
- ein `Management Cockpit` analysiert sowohl exportierte Dateien als auch zentrale Rohdaten
|
|
||||||
|
|
||||||
## Technologie-Stack
|
|
||||||
|
|
||||||
- UI: Blazor Server + MudBlazor
|
|
||||||
- Authentifizierung: ASP.NET Core Authentication/Authorization, produktiv Windows Authentication / Active Directory
|
|
||||||
- Datenbank: SQLite (`trafag_exporter.db`)
|
|
||||||
- Excel lesen/schreiben: ClosedXML
|
|
||||||
- SAP HANA Zugriff: `Sap.Data.Hana.Core.v2.1.dll`
|
|
||||||
- SAP Gateway / OData: eigener Service ueber HTTP
|
|
||||||
- SharePoint Upload/Download: Microsoft Graph + Azure Identity
|
|
||||||
- Tests: xUnit
|
|
||||||
|
|
||||||
## Einstiegspunkte
|
|
||||||
|
|
||||||
Wichtige Dateien:
|
|
||||||
|
|
||||||
- [Program.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Program.cs)
|
|
||||||
- [Data/AppDbContext.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Data/AppDbContext.cs)
|
|
||||||
- [Components/Layout/NavMenu.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Layout/NavMenu.razor)
|
|
||||||
|
|
||||||
`Program.cs` registriert fast die komplette Architektur ueber DI und fuehrt beim Start `DatabaseInitializationService.InitializeAsync()` aus.
|
|
||||||
|
|
||||||
Zusaetzlich registriert `Program.cs` den Zugriffsschutz:
|
|
||||||
|
|
||||||
- `AddCascadingAuthenticationState`
|
|
||||||
- Windows Authentication fuer produktive Umgebungen
|
|
||||||
- Development-Authentication-Handler nur bei `ASPNETCORE_ENVIRONMENT=Development` und `Security:DevelopmentBypass=true`
|
|
||||||
- globale Fallback-Policy fuer authentifizierte/berechtigte User
|
|
||||||
- Policy `AdminOnly` fuer administrative Seiten
|
|
||||||
|
|
||||||
## Hauptseiten
|
|
||||||
|
|
||||||
Navigation:
|
|
||||||
|
|
||||||
- `/` Dashboard
|
|
||||||
- `/standorte`
|
|
||||||
- `/transformations`
|
|
||||||
- `/management-cockpit`
|
|
||||||
- `/settings`
|
|
||||||
- `/logs`
|
|
||||||
|
|
||||||
Dateien:
|
|
||||||
|
|
||||||
- [Components/Pages/Dashboard.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Dashboard.razor)
|
|
||||||
- [Components/Pages/Standorte.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Standorte.razor)
|
|
||||||
- [Components/Pages/Transformations.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Transformations.razor)
|
|
||||||
- [Components/Pages/ManagementCockpit.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/ManagementCockpit.razor)
|
|
||||||
- [Components/Pages/Settings.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Settings.razor)
|
|
||||||
- [Components/Pages/Logs.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Pages/Logs.razor)
|
|
||||||
|
|
||||||
Kurzrollen:
|
|
||||||
|
|
||||||
- `Dashboard`: Einzel-Export, Alle exportieren, zentrale Datei neu erzeugen, Live-Status
|
|
||||||
- `Standorte`: Standortpflege, zentrale HANA-Technik, SAP-Konfiguration pro Standort, manueller Excel-Import
|
|
||||||
- `Transformations`: feldweise und record-basierte Regeln
|
|
||||||
- `Management Cockpit`: Dateianalyse und Rohanalyse aus `CentralSalesRecords`
|
|
||||||
- `Settings`: SharePoint, Exportpfade, Quellsysteme, Wechselkurse, Config Import/Export
|
|
||||||
- `Logs`: technische Ereignisprotokolle
|
|
||||||
|
|
||||||
Security:
|
|
||||||
|
|
||||||
- alle Routen erfordern Authentifizierung
|
|
||||||
- `Settings`, `Standorte` und `Transformations` sind `AdminOnly`
|
|
||||||
- Admin-Navigation wird nur fuer Admins angezeigt
|
|
||||||
- eingeloggter Benutzer wird im App-Bar angezeigt
|
|
||||||
|
|
||||||
## Kernmodelle
|
|
||||||
|
|
||||||
Wichtige Entity-Klassen:
|
|
||||||
|
|
||||||
- [Models/Site.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/Site.cs)
|
|
||||||
- [Models/SourceSystemDefinition.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SourceSystemDefinition.cs)
|
|
||||||
- [Models/HanaServer.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/HanaServer.cs)
|
|
||||||
- [Models/SalesRecord.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SalesRecord.cs)
|
|
||||||
- [Models/CentralSalesRecord.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/CentralSalesRecord.cs)
|
|
||||||
- [Models/FieldTransformationRule.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/FieldTransformationRule.cs)
|
|
||||||
- [Models/SapSourceDefinition.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SapSourceDefinition.cs)
|
|
||||||
- [Models/SapJoinDefinition.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SapJoinDefinition.cs)
|
|
||||||
- [Models/SapFieldMapping.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SapFieldMapping.cs)
|
|
||||||
- [Models/SharePointConfig.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/SharePointConfig.cs)
|
|
||||||
- [Models/ExportSettings.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/ExportSettings.cs)
|
|
||||||
- [Models/ExportLog.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/ExportLog.cs)
|
|
||||||
- [Models/AppEventLog.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/AppEventLog.cs)
|
|
||||||
- [Models/CurrencyExchangeRate.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/CurrencyExchangeRate.cs)
|
|
||||||
|
|
||||||
`SalesRecord` / `CentralSalesRecord` enthalten neben den positionsnahen Feldern auch B1-Belegwaehrungsfelder:
|
|
||||||
|
|
||||||
- `DocumentCurrency` aus `DocCur`
|
|
||||||
- `DocumentTotalForeignCurrency` aus `DocTotalFC`
|
|
||||||
- `DocumentTotalLocalCurrency` aus `DocTotal`
|
|
||||||
- `VatSumForeignCurrency` aus `VatSumFC`
|
|
||||||
- `VatSumLocalCurrency` aus `VatSum`
|
|
||||||
- `DocumentRate` aus `DocRate`
|
|
||||||
- `CompanyCurrency` aus `OADM.MainCurncy`
|
|
||||||
|
|
||||||
Wichtig: diese Dokumentwerte sind Belegkopfwerte und werden in der positionsbasierten Excel pro Position wiederholt. Fuer Belegkopfsummen muessen Auswertungen nach Beleg deduplizieren.
|
|
||||||
|
|
||||||
Wichtige Relationen:
|
|
||||||
|
|
||||||
- `Site -> HanaServer` optional
|
|
||||||
- `Site -> SapSourceDefinitions`
|
|
||||||
- `Site -> SapJoinDefinitions`
|
|
||||||
- `Site -> SapFieldMappings`
|
|
||||||
- `Site -> CentralSalesRecords`
|
|
||||||
- `SourceSystemDefinition` ist zentrale Stammdatenquelle fuer Quellsysteme
|
|
||||||
|
|
||||||
## Datenbanktabellen
|
|
||||||
|
|
||||||
`AppDbContext` enthaelt:
|
|
||||||
|
|
||||||
- `HanaServers`
|
|
||||||
- `SourceSystemDefinitions`
|
|
||||||
- `Sites`
|
|
||||||
- `SharePointConfigs`
|
|
||||||
- `ExportSettings`
|
|
||||||
- `ExportLogs`
|
|
||||||
- `AppEventLogs`
|
|
||||||
- `FieldTransformationRules`
|
|
||||||
- `CurrencyExchangeRates`
|
|
||||||
- `SapSourceDefinitions`
|
|
||||||
- `SapJoinDefinitions`
|
|
||||||
- `SapFieldMappings`
|
|
||||||
- `CentralSalesRecords`
|
|
||||||
|
|
||||||
## Architekturrollen der Services
|
|
||||||
|
|
||||||
### Export / Orchestrierung
|
|
||||||
|
|
||||||
- [Services/ExportOrchestrationService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ExportOrchestrationService.cs)
|
|
||||||
- [Services/SiteExportService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/SiteExportService.cs)
|
|
||||||
- [Services/ConsolidatedExportService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ConsolidatedExportService.cs)
|
|
||||||
- [Services/CentralSalesRecordService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/CentralSalesRecordService.cs)
|
|
||||||
- [Services/ExportLogService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ExportLogService.cs)
|
|
||||||
|
|
||||||
Rollen:
|
|
||||||
|
|
||||||
- `ExportOrchestrationService` steuert UI-nahe Exportlaeufe und Live-Status
|
|
||||||
- `SiteExportService` entscheidet anhand des Quellsystems, wie ein Standort gelesen wird
|
|
||||||
- `CentralSalesRecordService` ersetzt zentrale Saetze pro Standort
|
|
||||||
- `ConsolidatedExportService` erzeugt die zentrale Datei
|
|
||||||
|
|
||||||
### Datenquellen
|
|
||||||
|
|
||||||
- [Services/HanaQueryService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/HanaQueryService.cs)
|
|
||||||
- [Services/SapGatewayService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/SapGatewayService.cs)
|
|
||||||
- [Services/SapCompositionService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/SapCompositionService.cs)
|
|
||||||
- [Services/ManualExcelImportService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ManualExcelImportService.cs)
|
|
||||||
- [Services/SharePointUploadService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/SharePointUploadService.cs)
|
|
||||||
|
|
||||||
Rollen:
|
|
||||||
|
|
||||||
- `HanaQueryService`: SQL gegen SAP B1/HANA-nahe Schemata
|
|
||||||
- `SapGatewayService`: OData-Metadaten und Reads
|
|
||||||
- `SapCompositionService`: Mehrquellen-/Join-/Mapping-Aufbau fuer SAP
|
|
||||||
- `ManualExcelImportService`: Import im Exportformat aus `.xlsx`
|
|
||||||
- `SharePointUploadService`: Upload fuer Exportdateien und Download fuer manuelle Excel-Dateien
|
|
||||||
|
|
||||||
### Transformation / Mapping
|
|
||||||
|
|
||||||
- [Services/TransformationCatalog.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/TransformationCatalog.cs)
|
|
||||||
- [Services/TransformationStrategies.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/TransformationStrategies.cs)
|
|
||||||
- [Services/RecordTransformationService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/RecordTransformationService.cs)
|
|
||||||
- [Services/CurrencyExchangeRateService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/CurrencyExchangeRateService.cs)
|
|
||||||
- [Services/ExchangeRateImportService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ExchangeRateImportService.cs)
|
|
||||||
|
|
||||||
Rollen:
|
|
||||||
|
|
||||||
- `Value`-Transformationen fuer einzelne Felder
|
|
||||||
- `Record`-Transformationen fuer zeilenweite Regeln
|
|
||||||
- Wechselkursimport und -umrechnung
|
|
||||||
|
|
||||||
### Reporting / Monitoring / Infrastruktur
|
|
||||||
|
|
||||||
- [Services/ManagementCockpitService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ManagementCockpitService.cs)
|
|
||||||
- [Services/AppEventLogService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/AppEventLogService.cs)
|
|
||||||
- [Services/ConfigTransferService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ConfigTransferService.cs)
|
|
||||||
- [Services/DatabaseInitializationService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/DatabaseInitializationService.cs)
|
|
||||||
- [Services/TimerBackgroundService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/TimerBackgroundService.cs)
|
|
||||||
|
|
||||||
## Der wichtigste technische Ablauf
|
|
||||||
|
|
||||||
### 1. Standort-Export
|
|
||||||
|
|
||||||
Pfad:
|
|
||||||
|
|
||||||
`Dashboard/Standorte -> ExportOrchestrationService -> SiteExportService`
|
|
||||||
|
|
||||||
`SiteExportService` unterscheidet drei Modi:
|
|
||||||
|
|
||||||
1. `SAP_GATEWAY`
|
|
||||||
- SAP-Quellen lesen
|
|
||||||
- SAP-Joins anwenden
|
|
||||||
- SAP-Feldmappings auf `SalesRecord`
|
|
||||||
- Transformationen anwenden
|
|
||||||
- Standort-Excel erzeugen
|
|
||||||
- `CentralSalesRecords` ersetzen
|
|
||||||
- optional SharePoint-Upload
|
|
||||||
|
|
||||||
2. `HANA`
|
|
||||||
- effektive zentrale HANA-Konfiguration laden
|
|
||||||
- optionale Standort-Credential-Overrides anwenden
|
|
||||||
- SQL in HANA ausfuehren
|
|
||||||
- `SalesRecord` erzeugen
|
|
||||||
- Transformationen anwenden
|
|
||||||
- Standort-Excel erzeugen
|
|
||||||
- `CentralSalesRecords` ersetzen
|
|
||||||
- optional SharePoint-Upload
|
|
||||||
|
|
||||||
3. `MANUAL_EXCEL`
|
|
||||||
- `ManualImportFilePath` auswerten
|
|
||||||
- wenn lokal/UNC vorhanden: lokal lesen
|
|
||||||
- wenn SharePoint-Referenz: via Graph temp herunterladen
|
|
||||||
- Excel in `SalesRecord` lesen
|
|
||||||
- Transformationen anwenden
|
|
||||||
- keine neue Standortdatei erzeugen, bestehende Excel dient als Eingabe
|
|
||||||
- `CentralSalesRecords` ersetzen
|
|
||||||
|
|
||||||
### 2. Konsolidierter Export
|
|
||||||
|
|
||||||
Pfad:
|
|
||||||
|
|
||||||
`Dashboard -> ExportOrchestrationService -> ConsolidatedExportService`
|
|
||||||
|
|
||||||
Semantik aktuell:
|
|
||||||
|
|
||||||
- die zentrale Datei basiert fachlich auf `CentralSalesRecords`
|
|
||||||
- `ExportAllAsync()` sammelt zwar auch `consolidatedRecords`, aber die zentrale Exportsemantik ist historisch noch nicht vollkommen bereinigt
|
|
||||||
|
|
||||||
### 3. Management Cockpit
|
|
||||||
|
|
||||||
Zwei Betriebsarten:
|
|
||||||
|
|
||||||
1. Dateibasiert
|
|
||||||
- vorhandene `.xlsx` waehlen
|
|
||||||
- Datei mit ClosedXML lesen
|
|
||||||
- Summenfeld waehlen
|
|
||||||
- Anzeige-Waehrung waehlen
|
|
||||||
- Kennzahlen, Top-Listen, Datenqualitaet, Findings erzeugen
|
|
||||||
|
|
||||||
2. Zentraldatenbasiert
|
|
||||||
- direkt aus `CentralSalesRecords`
|
|
||||||
- Jahr/Monat Filter
|
|
||||||
- Summenfeld waehlen
|
|
||||||
- optionale weitere Summenfelder fuer Zeitreihen waehlen
|
|
||||||
- Anzeige-Waehrung waehlen
|
|
||||||
- Rohsicht ohne Intercompany-, Budget- oder Spartelogik
|
|
||||||
|
|
||||||
Aktuelle Summenfelder:
|
|
||||||
|
|
||||||
- `Sales Price/Value`
|
|
||||||
- `Quantity`
|
|
||||||
- `Standard cost`
|
|
||||||
- `Quantity * Standard cost`
|
|
||||||
|
|
||||||
Aktuelle Anzeige-Waehrungen:
|
|
||||||
|
|
||||||
- `EUR`
|
|
||||||
- `USD`
|
|
||||||
- `Original`
|
|
||||||
|
|
||||||
Die Waehrungsumrechnung nutzt `CurrencyExchangeRateService`. Bei `Original` bleiben Werte in Quellwaehrungen gruppiert. Nicht-betragliche Summenfelder wie `Quantity` haben keine Waehrung. Fehlende Wechselkurse werden gezaehlt und in Hinweisen bzw. Findings sichtbar; betroffene Werte werden in der Zielwaehrung mit `0` einbezogen.
|
|
||||||
|
|
||||||
## Quellsystemlogik
|
|
||||||
|
|
||||||
### SourceSystemDefinition
|
|
||||||
|
|
||||||
`SourceSystemDefinition` ist die fuehrende Wahrheit fuer:
|
|
||||||
|
|
||||||
- `Code`
|
|
||||||
- `DisplayName`
|
|
||||||
- `ConnectionKind`
|
|
||||||
- `IsActive`
|
|
||||||
- `CentralUsername`
|
|
||||||
- `CentralPassword`
|
|
||||||
- `CentralServiceUrl` fuer SAP
|
|
||||||
|
|
||||||
Anschlussarten:
|
|
||||||
|
|
||||||
- `HANA`
|
|
||||||
- `SAP_GATEWAY`
|
|
||||||
- `MANUAL_EXCEL`
|
|
||||||
|
|
||||||
### HANA
|
|
||||||
|
|
||||||
Fachliche Logik:
|
|
||||||
|
|
||||||
- zentrale technische HANA-Konfiguration pro Quellsystem
|
|
||||||
- keine separaten Vollverbindungen pro Standort
|
|
||||||
- Standort speichert nur Fachdaten plus optionale Username-/Password-Overrides
|
|
||||||
|
|
||||||
Schema-Lookup:
|
|
||||||
|
|
||||||
- in `Standorte` gibt es jetzt `Schemas laden`
|
|
||||||
- Lookup fragt `sys.tables` in HANA ab
|
|
||||||
- eingeschraenkt auf typische B1-Schemas mit Tabellen wie `OINV`, `INV1`, `ORIN`, `RIN1`, `OCRD`, `OITM`
|
|
||||||
|
|
||||||
### SAP
|
|
||||||
|
|
||||||
Fachliche Logik:
|
|
||||||
|
|
||||||
- zentrale SAP Service URL in `SourceSystemDefinition.CentralServiceUrl`
|
|
||||||
- Standort kann `SapServiceUrl` als Override pflegen
|
|
||||||
- pro Standort gibt es SAP-Quellen, Joins und Feldmappings
|
|
||||||
|
|
||||||
### Manual Excel
|
|
||||||
|
|
||||||
Fachliche Logik:
|
|
||||||
|
|
||||||
- `Site.ManualImportFilePath` kann sein:
|
|
||||||
- lokaler Windows-Pfad
|
|
||||||
- UNC-Pfad
|
|
||||||
- SharePoint-URL
|
|
||||||
- SharePoint-Pfad unterhalb der konfigurierten Site
|
|
||||||
- Standortdaten werden aus der Excel eingelesen und in `CentralSalesRecords` uebernommen
|
|
||||||
- SharePoint dient hier als Eingangsquelle, nicht nur als Exportziel
|
|
||||||
|
|
||||||
## Transformationen
|
|
||||||
|
|
||||||
Das System unterscheidet:
|
|
||||||
|
|
||||||
- `Value`-Transformationen
|
|
||||||
- `Record`-Transformationen
|
|
||||||
|
|
||||||
Beispiele:
|
|
||||||
|
|
||||||
- `Copy`
|
|
||||||
- `Uppercase`
|
|
||||||
- `Lowercase`
|
|
||||||
- `Prefix`
|
|
||||||
- `Suffix`
|
|
||||||
- `Replace`
|
|
||||||
- `Constant`
|
|
||||||
- `NormalizeCurrencyCode`
|
|
||||||
- `FirstNonEmpty`
|
|
||||||
- `ConvertCurrency`
|
|
||||||
|
|
||||||
Technischer Ablauf:
|
|
||||||
|
|
||||||
- Regeln liegen in `FieldTransformationRules`
|
|
||||||
- `TransformationCatalog` meldet verfuegbare Strategien an die UI
|
|
||||||
- `RecordTransformationService` wendet record-basierte Strategien an
|
|
||||||
|
|
||||||
## Wechselkurse
|
|
||||||
|
|
||||||
Vorhanden:
|
|
||||||
|
|
||||||
- `CurrencyExchangeRates`
|
|
||||||
- `ExchangeRateImportService` fuer ECB-Tageskurse
|
|
||||||
- `NormalizeCurrencyCode`
|
|
||||||
- `ConvertCurrency`
|
|
||||||
- `ManagementCockpitService` kann betragliche Cockpit-Kennzahlen in `EUR` oder `USD` umrechnen
|
|
||||||
|
|
||||||
Wichtig:
|
|
||||||
|
|
||||||
- die Rohsicht im `Management Cockpit` kann jetzt Anzeige-Waehrungen nutzen
|
|
||||||
- `CHF` ist im Cockpit aktuell nicht als direkte Anzeige-Waehrung in der UI angeboten
|
|
||||||
- CHF bleibt weiterhin Teil des allgemeinen Transformationssystems
|
|
||||||
- fachlich ist noch zu klaeren, ob CHF als Standard- oder zusaetzliche Cockpit-Anzeige-Waehrung gebraucht wird
|
|
||||||
|
|
||||||
## SharePoint-Rolle im Gesamtsystem
|
|
||||||
|
|
||||||
`SharePointConfig` enthaelt:
|
|
||||||
|
|
||||||
- `SiteUrl`
|
|
||||||
- `ExportFolder`
|
|
||||||
- `CentralExportFolder`
|
|
||||||
- `TenantId`
|
|
||||||
- `ClientId`
|
|
||||||
- `ClientSecret`
|
|
||||||
|
|
||||||
Verwendung:
|
|
||||||
|
|
||||||
- Upload von Standort-Exporten
|
|
||||||
- Upload der zentralen Datei
|
|
||||||
- Download von manuellen Excel-Dateien fuer `MANUAL_EXCEL`
|
|
||||||
|
|
||||||
Wichtig:
|
|
||||||
|
|
||||||
- die App arbeitet gegen dieselbe SharePoint-Site, die in `Settings` konfiguriert ist
|
|
||||||
- fuer `MANUAL_EXCEL` muessen Referenzen auf derselben Site aufloesbar sein
|
|
||||||
|
|
||||||
## Startinitialisierung / Migrationen
|
|
||||||
|
|
||||||
Kritische Datei:
|
|
||||||
|
|
||||||
- [Services/DatabaseInitializationService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/DatabaseInitializationService.cs)
|
|
||||||
|
|
||||||
Aktuelle Rolle:
|
|
||||||
|
|
||||||
- `EnsureCreated`
|
|
||||||
- Schema-Ergaenzungen per `ALTER TABLE`
|
|
||||||
- Tabellen-Rebuilds bei Legacy-Schemas
|
|
||||||
- FK-Reparaturen
|
|
||||||
- Stammdaten-Seeding
|
|
||||||
- empfohlene Transformationsregeln
|
|
||||||
|
|
||||||
Bekannte Architekturrealitaet:
|
|
||||||
|
|
||||||
- das ist funktional hilfreich, aber kein sauberes Migrationssystem
|
|
||||||
- die Startlogik traegt produktive Schema-Reparaturverantwortung
|
|
||||||
- das ist einer der wichtigsten technischen Risikobloecke
|
|
||||||
|
|
||||||
Bereits gehaertete Fehlerbilder:
|
|
||||||
|
|
||||||
- kaputte FK-Referenzen auf `Sites_old`
|
|
||||||
- kaputte FK-Referenzen auf `HanaServers_repair_old`
|
|
||||||
- Legacy-Credential-Spalten in `ExportSettings`
|
|
||||||
- Legacy-Credential-Spalten in `HanaServers`
|
|
||||||
- verschobene Spalten im `Sites_old -> Sites`-Kopierpfad
|
|
||||||
|
|
||||||
## Authentifizierung / Autorisierung
|
|
||||||
|
|
||||||
Dateien:
|
|
||||||
|
|
||||||
- [Security/SecurityOptions.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Security/SecurityOptions.cs)
|
|
||||||
- [Security/SecurityPolicies.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Security/SecurityPolicies.cs)
|
|
||||||
- [Security/DevelopmentAuthenticationHandler.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Security/DevelopmentAuthenticationHandler.cs)
|
|
||||||
- [Components/Routes.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Routes.razor)
|
|
||||||
- [Components/Layout/NavMenu.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Layout/NavMenu.razor)
|
|
||||||
- [Components/Layout/MainLayout.razor](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Components/Layout/MainLayout.razor)
|
|
||||||
|
|
||||||
Produktives Ziel:
|
|
||||||
|
|
||||||
- Windows Authentication / Active Directory
|
|
||||||
- keine eigene Benutzerverwaltung
|
|
||||||
- Zugriff ueber AD-Gruppen
|
|
||||||
- Adminrechte ueber separate AD-Gruppe
|
|
||||||
|
|
||||||
Konfiguration in `appsettings.json`:
|
|
||||||
|
|
||||||
- `Security:AccessGroups`
|
|
||||||
- `Security:AdminGroups`
|
|
||||||
- `Security:DevelopmentBypass`
|
|
||||||
- `Security:DevelopmentUserIsAdmin`
|
|
||||||
- `Security:DevelopmentUserName`
|
|
||||||
|
|
||||||
Default-Gruppen:
|
|
||||||
|
|
||||||
- `TRAFAG\\TrafagSalesExporter-Users`
|
|
||||||
- `TRAFAG\\TrafagSalesExporter-Admins`
|
|
||||||
|
|
||||||
Development:
|
|
||||||
|
|
||||||
- `appsettings.Development.json` aktiviert einen lokalen Development-Auth-Handler
|
|
||||||
- dieser ist nur fuer lokale Entwicklung gedacht
|
|
||||||
- produktiv darf `ASPNETCORE_ENVIRONMENT` nicht `Development` sein
|
|
||||||
|
|
||||||
IIS-Betrieb:
|
|
||||||
|
|
||||||
- Windows Authentication aktivieren
|
|
||||||
- Anonymous Authentication deaktivieren
|
|
||||||
- AD-Gruppennamen in produktiver Konfiguration setzen
|
|
||||||
|
|
||||||
## Config Import / Export
|
|
||||||
|
|
||||||
Dateien:
|
|
||||||
|
|
||||||
- [Services/ConfigTransferService.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Services/ConfigTransferService.cs)
|
|
||||||
- [Models/ConfigTransferPackage.cs](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/Models/ConfigTransferPackage.cs)
|
|
||||||
|
|
||||||
Aktueller Stand:
|
|
||||||
|
|
||||||
- JSON Export/Import fuer Konfiguration
|
|
||||||
- Secrets optional
|
|
||||||
- `SourceSystemDefinitions` im aktuellen Modell enthalten
|
|
||||||
- HANA-Technik ohne HANA-Credentials
|
|
||||||
- Standort-Overrides bleiben erhalten
|
|
||||||
|
|
||||||
Wichtige Punkte:
|
|
||||||
|
|
||||||
- Import laeuft jetzt transaktional
|
|
||||||
- alte `ConnectionKind`-lose Formate bekommen Fallbacks
|
|
||||||
- `CentralSalesRecords` werden nicht mehr blind geloescht
|
|
||||||
- bestehende zentrale Laufzeitdaten werden fuer weiterhin vorhandene Standorte remappt
|
|
||||||
|
|
||||||
## Logging
|
|
||||||
|
|
||||||
Es gibt zwei Log-Ebenen:
|
|
||||||
|
|
||||||
- `ExportLogs` fuer fachliche Exporthistorie
|
|
||||||
- `AppEventLogs` fuer technische und UI-nahe Ereignisse
|
|
||||||
|
|
||||||
Die `Logs`-Seite liest vor allem `AppEventLogs`.
|
|
||||||
|
|
||||||
## Tests
|
|
||||||
|
|
||||||
Testprojekt:
|
|
||||||
|
|
||||||
- [TrafagSalesExporter.Tests](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/TrafagSalesExporter.Tests)
|
|
||||||
|
|
||||||
Aktuell vorhandene Schwerpunkte:
|
|
||||||
|
|
||||||
- Transformationen
|
|
||||||
- Record-Transformationen
|
|
||||||
- TransformationCatalog
|
|
||||||
- CurrencyExchangeRateService
|
|
||||||
- ExchangeRateImportService
|
|
||||||
- ManualExcelImportService
|
|
||||||
- ManagementCockpitService
|
|
||||||
- ConfigTransferService
|
|
||||||
- DatabaseInitializationService
|
|
||||||
|
|
||||||
`ManagementCockpitServiceTests` decken inzwischen auch ab:
|
|
||||||
|
|
||||||
- zentrale Analyse nach Jahr/Monat
|
|
||||||
- Tages-, Monats-, Jahres-, Quellen- und Laenderwerte
|
|
||||||
- waehlbare Summenfelder
|
|
||||||
- Waehrungsumrechnung in EUR
|
|
||||||
- Wechselkurs-Caching
|
|
||||||
- Mengen-Auswertung ohne Waehrungsumrechnung
|
|
||||||
- Zusatz-Summenfelder in Zeitreihen
|
|
||||||
|
|
||||||
`SecurityPolicyFactoryTests` decken inzwischen ab:
|
|
||||||
|
|
||||||
- App-Zugriff fuer User in `AccessGroups`
|
|
||||||
- Ablehnung fuer User ausserhalb der Access-Gruppen
|
|
||||||
- Development-Auth-Zugriff im lokalen Modus
|
|
||||||
- Admin-Zugriff fuer User in `AdminGroups`
|
|
||||||
- Ablehnung normaler User fuer `AdminOnly`
|
|
||||||
- Development-Admin-Claim
|
|
||||||
|
|
||||||
`CentralSalesRecordServiceTests` decken inzwischen ab:
|
|
||||||
|
|
||||||
- Persistenz und Ruecklesen der B1-Belegwaehrungsfelder in `CentralSalesRecords`
|
|
||||||
|
|
||||||
Wichtig:
|
|
||||||
|
|
||||||
- es gibt aktuell keine echten UI-Komponententests mit `bUnit`
|
|
||||||
- es gibt keine Browser-E2E-Tests mit `Playwright`
|
|
||||||
- viele Button-Aktionen sind nur indirekt ueber Services und Persistenz getestet
|
|
||||||
|
|
||||||
## Bekannte offene Architekturfragen
|
|
||||||
|
|
||||||
Fuer andere LLMs wichtig, damit Visualisierungen nicht zu glatt oder zu idealisiert werden:
|
|
||||||
|
|
||||||
1. `DatabaseInitializationService` ist ein produktiver Reparatur-/Migrationslayer, nicht nur Bootstrap.
|
|
||||||
2. `Settings.razor` und `Standorte.razor` enthalten weiterhin relativ viel Anwendungslogik.
|
|
||||||
3. Die Semantik der konsolidierten Datei ist historisch teilweise doppelt angelegt.
|
|
||||||
4. Das `Management Cockpit` ist noch kein voll generalisierter Reporting-Layer.
|
|
||||||
5. SharePoint ist sowohl Exportziel als auch bei `MANUAL_EXCEL` mittlerweile moegliche Eingangsquelle.
|
|
||||||
|
|
||||||
## Empfohlene Diagramme fuer andere LLMs
|
|
||||||
|
|
||||||
### 1. Kontextdiagramm
|
|
||||||
|
|
||||||
Zeige:
|
|
||||||
|
|
||||||
- Benutzer
|
|
||||||
- Blazor App
|
|
||||||
- SQLite
|
|
||||||
- SAP HANA
|
|
||||||
- SAP Gateway
|
|
||||||
- lokale Dateisystempfade
|
|
||||||
- SharePoint
|
|
||||||
|
|
||||||
### 2. Komponenten-/Service-Diagramm
|
|
||||||
|
|
||||||
Gruppiere:
|
|
||||||
|
|
||||||
- UI
|
|
||||||
- Orchestrierung
|
|
||||||
- Quelladapter
|
|
||||||
- Transformation
|
|
||||||
- Persistenz
|
|
||||||
- Reporting
|
|
||||||
|
|
||||||
### 3. Datenflussdiagramm pro Quelltyp
|
|
||||||
|
|
||||||
Je ein separater Flow fuer:
|
|
||||||
|
|
||||||
- HANA
|
|
||||||
- SAP Gateway
|
|
||||||
- Manual Excel lokal
|
|
||||||
- Manual Excel SharePoint
|
|
||||||
|
|
||||||
### 4. ER-Diagramm
|
|
||||||
|
|
||||||
Fokussiere auf:
|
|
||||||
|
|
||||||
- `SourceSystemDefinition`
|
|
||||||
- `HanaServer`
|
|
||||||
- `Site`
|
|
||||||
- `SapSourceDefinition`
|
|
||||||
- `SapJoinDefinition`
|
|
||||||
- `SapFieldMapping`
|
|
||||||
- `CentralSalesRecord`
|
|
||||||
- `FieldTransformationRule`
|
|
||||||
|
|
||||||
### 5. Sequenzdiagramm fuer Export
|
|
||||||
|
|
||||||
Wichtige Stationen:
|
|
||||||
|
|
||||||
- Dashboard
|
|
||||||
- ExportOrchestrationService
|
|
||||||
- SiteExportService
|
|
||||||
- spezifischer Quellservice
|
|
||||||
- Transformation
|
|
||||||
- CentralSalesRecordService
|
|
||||||
- Excel/SharePoint
|
|
||||||
- ExportLog/AppEventLog
|
|
||||||
|
|
||||||
## Prompt-Vorlage fuer ein anderes LLM
|
|
||||||
|
|
||||||
Wenn ein anderes LLM daraus Visualisierungen erzeugen soll, funktioniert diese Anweisung gut:
|
|
||||||
|
|
||||||
> Lies `LLM_SYSTEM_GUIDE.md` als primaeren Systemkontext. Erzeuge daraus ein Architekturdiagramm, ein Datenflussdiagramm fuer HANA/SAP/MANUAL_EXCEL, ein ER-Diagramm der wichtigsten Tabellen und ein Sequenzdiagramm fuer `ExportAsync`. Achte darauf, dass `DatabaseInitializationService` produktive Reparaturlogik enthaelt und dass `MANUAL_EXCEL` sowohl lokal als auch ueber SharePoint gelesen werden kann.
|
|
||||||
|
|
||||||
## Weitere Kontextdateien
|
|
||||||
|
|
||||||
Zusatzkontext fuer Verlauf und Risiken:
|
|
||||||
|
|
||||||
- [HANDOFF_2026-04-15.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/HANDOFF_2026-04-15.md)
|
|
||||||
- [NEXT_STEPS_2026-04-15.md](C:/Users/koi/source/repos/Ai/TrafagSalesExporter/NEXT_STEPS_2026-04-15.md)
|
|
||||||
|
|
||||||
Diese beiden Dateien sind wichtig, wenn ein anderes LLM nicht nur Struktur, sondern auch historische Umbauten, Risiken und Prioritaeten verstehen soll.
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,66 +1,13 @@
|
|||||||
# Finance Dashboard Todo
|
# Finance Dashboard Todo
|
||||||
|
|
||||||
Stand: 2026-05-20
|
Stand: 2026-05-27
|
||||||
|
|
||||||
Hinweis:
|
Historische Todo-Liste, fuer RAG komprimiert.
|
||||||
|
|
||||||
Dieses Dokument ist eine historische Todo-Liste vom 2026-05-15 und wurde am 2026-05-20 nachgezogen. Fuer den aktuell fuehrenden Dokumentenstatus siehe:
|
Aktueller Finance-Kontext steht in `docs/rag/FINANCE.md`.
|
||||||
|
|
||||||
|
Volltext bei Bedarf:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
docs/MD_DOKUMENTENSTATUS_2026-05-20.md
|
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||||
```
|
```
|
||||||
|
|
||||||
Ziel: Aufbau eines modernen, uebersichtlichen Intranet-Dashboards fuer das Group Sales Reporting, zugaenglich fuer alle freigegebenen Benutzer.
|
|
||||||
|
|
||||||
## Todo
|
|
||||||
|
|
||||||
| Prio | Aufgabe | Status |
|
|
||||||
| --- | --- | --- |
|
|
||||||
| 1 | Fuehrendes CFO-Dokument verwenden: `FINANCE_CHEF_SUMMARY_2026-05-15.docx` | Historisch; neue Anwenderdoku `FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx` ergaenzt |
|
|
||||||
| 1 | Offene Finance-Entscheide mit Andreas/Finance durchgehen | Offen |
|
|
||||||
| 1 | Italien-Abweichung klaeren: Berechnungsart, Deduplizierung, Intercompany | Teilweise geklaert; Finance-Leiter bestaetigte Methode, Restdifferenz dokumentiert |
|
|
||||||
| 1 | Italien IC-Diagnose besprechen: Trafag, Magnetic Sense/Magnets Sense und Gesellschaft fuer Sensorik erklaeren einen grossen Teil, aber nicht die ganze Abweichung | Historisch; neue IT-Methode verwendet `CustomerName` Trafag Italia und Dublettenregel |
|
|
||||||
| 1 | Deutschland: finalen Jahresfile 2025 beschaffen | Erledigt technisch; DE Alphaplan ist eingebaut, Fachabgrenzung Kundenlaender bleibt offen |
|
|
||||||
| 2 | UK/England: Jahresvollstaendigkeit und Restdifferenz pruefen | Teilweise erledigt; UK ist Sage/Manual Excel, Mapping korrigiert, Restdifferenz klein/offen |
|
|
||||||
| 2 | CH/AT: Sollzuordnung und Trennung final bestaetigen | Offen |
|
|
||||||
| 2 | Spanien und Oesterreich: kleinere Differenzen klaeren | Offen |
|
|
||||||
| 2 | Intercompany-/2nd-party-Kundenliste final definieren | Offen |
|
|
||||||
| 3 | Budgetkurse je Jahr als Quelle festlegen | Offen |
|
|
||||||
| 3 | Dashboard-Sicht fuer CFO: nur Laender mit Abweichung und Handlungsbedarf anzeigen | In Arbeit; Finance Summary und Soll/Ist Sicht vorhanden |
|
|
||||||
| 3 | Detailansicht je Land mit Berechnungsart und Pruefspur behalten | In Arbeit; Rohdaten-/Diagnosereiter bleibt erhalten |
|
|
||||||
| 3 | Freigabe-/Berechtigungskonzept fuer Intranet-Dashboard klaeren | Offen |
|
|
||||||
|
|
||||||
## Naechster Termin
|
|
||||||
|
|
||||||
Ziel im Termin:
|
|
||||||
- Deutschland und Spanien muss finales Excel schicken (Rohali 2 mal nachgehakt warte auf finales File)
|
|
||||||
- Grundlogik bestaetigen: Hauswaehrung, Nettofakturawert, Buchungsdatum, Berechnung pro Belegposition.
|
|
||||||
- Offene Laenderabweichungen priorisieren.
|
|
||||||
- Pro Land festlegen, welche Datenquelle und Berechnungslogik final gilt.
|
|
||||||
|
|
||||||
## IT / Intercompany Diagnose
|
|
||||||
|
|
||||||
Aktuelle Diagnose fuer Italien:
|
|
||||||
|
|
||||||
| Kennzahl | Wert |
|
|
||||||
| --- | ---: |
|
|
||||||
| IT Ist vor IC-Abzug | 14.704.336,29 EUR |
|
|
||||||
| Rhino/check.xlsx Soll | 7.669.840,00 EUR |
|
|
||||||
| Abweichung vor IC | +7.034.496,29 EUR |
|
|
||||||
| Erkannter IC-/2nd-party-Abzug | 4.397.746,90 EUR |
|
|
||||||
| IT Ist exkl. IC | 10.306.589,39 EUR |
|
|
||||||
| Restabweichung nach IC | +2.636.749,39 EUR |
|
|
||||||
|
|
||||||
Verwendete IC-/2nd-party-Marker:
|
|
||||||
|
|
||||||
- `TRAFAG`
|
|
||||||
- `MAGNETIC SENSE`
|
|
||||||
- `MAGNETS SENSE`
|
|
||||||
- `GESELLSCHAFT FUER SENSORIK`
|
|
||||||
- `GESELLSCHAFT FUR SENSORIK`
|
|
||||||
|
|
||||||
Bewertung:
|
|
||||||
|
|
||||||
- Intercompany/2nd-party erklaert einen grossen Teil der IT-Abweichung.
|
|
||||||
- Die Summe passt dadurch deutlich besser, aber noch nicht vollstaendig.
|
|
||||||
- Restabweichung weiter pruefen: Summenlogik, Beleg/Position-Deduplizierung, Gutschriften/Storno und weitere lokale IC-Kunden oder Schreibweisen.
|
|
||||||
|
|||||||
@@ -1,36 +1,13 @@
|
|||||||
# Email an Spanien: Abweichung Net Sales 2025
|
# Finance ES Mail Abweichung
|
||||||
|
|
||||||
**Asunto:** Revision diferencia Net Sales 2025 - Espana
|
Stand: 2026-05-27
|
||||||
|
|
||||||
Hola,
|
Historischer Mailentwurf, fuer RAG komprimiert.
|
||||||
|
|
||||||
En la reconciliacion de Net Sales 2025 para Espana hemos identificado una diferencia pendiente de aclarar contra el valor de referencia de Rhino / `check.xlsx`.
|
Aktueller Spanien-/Finance-Kontext steht in `docs/rag/FINANCE.md`.
|
||||||
|
|
||||||
Resumen:
|
Volltext bei Bedarf:
|
||||||
|
|
||||||
- Actual Espana: `3.082.320,18 EUR`
|
```text
|
||||||
- Referencia Rhino: `3.102.333,61 EUR`
|
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||||
- Diferencia: `-20.013,43 EUR`
|
```
|
||||||
|
|
||||||
La diferencia no parece muy grande, pero antes de cerrar el dato necesitamos confirmar la causa.
|
|
||||||
|
|
||||||
Por favor, podeis revisar los siguientes puntos?
|
|
||||||
|
|
||||||
1. Periodo incluido en el fichero
|
|
||||||
Confirmar que el fichero `Spain_Sales_2025.csv` contiene todo el ano 2025 completo.
|
|
||||||
|
|
||||||
2. Series incluidas
|
|
||||||
Confirmar que las series `REG`, `LAT`, `PRO` y `REC` deben incluirse en el calculo de Net Sales 2025.
|
|
||||||
|
|
||||||
3. Abonos / Credit Notes
|
|
||||||
Confirmar que los abonos estan incluidos correctamente y con signo negativo.
|
|
||||||
|
|
||||||
4. Criterio de fecha
|
|
||||||
Confirmar que fecha debe utilizarse para la delimitacion del ano 2025: fecha de factura, fecha contable u otra fecha.
|
|
||||||
|
|
||||||
5. Importe correcto
|
|
||||||
Confirmar si el campo utilizado como importe neto de ventas es el correcto para comparar contra Rhino / `check.xlsx`.
|
|
||||||
|
|
||||||
Objetivo: aclarar si la diferencia de `-20.013,43 EUR` se explica por periodo, series, abonos o por el campo de importe utilizado.
|
|
||||||
|
|
||||||
Gracias y saludos,
|
|
||||||
|
|||||||
@@ -1,386 +1,21 @@
|
|||||||
# Finance Handoff 2026-05-18
|
# Finance Handoff
|
||||||
|
|
||||||
Dieses Dokument fasst den aktuellen Stand der Finance-Abstimmung zusammen, damit die Arbeit ohne Wissensverlust fortgesetzt werden kann.
|
Stand: 2026-05-27
|
||||||
|
|
||||||
## Aktueller Stand
|
Diese Datei ist fuer tokenarme RAG-Nutzung komprimiert.
|
||||||
|
|
||||||
Testprogramm:
|
## Aktueller Kurzstand
|
||||||
|
|
||||||
|
- Fuehrende Finance-Kurzdatei: `docs/rag/FINANCE.md`.
|
||||||
|
- Manual-Import-Kontext: `docs/rag/MANUAL_IMPORT.md`.
|
||||||
|
- Aktuelle Finance-Regeln im Detail: `docs/FINANCE_ENTSCHEIDE.md` und `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md`.
|
||||||
|
|
||||||
|
## Volltext Bei Bedarf
|
||||||
|
|
||||||
|
Die Detailhistorie liegt hier:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
http://127.0.0.1:5099/finance
|
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||||
```
|
```
|
||||||
|
|
||||||
Die App laeuft lokal auf `127.0.0.1:5099`. Der letzte Check der Seite ergab HTTP `200`.
|
Nur laden, wenn der Zwischenstand vom 2026-05-18 oder alte Finance-Abweichungen genau nachvollzogen werden muessen.
|
||||||
|
|
||||||
Aktuelle Excel:
|
|
||||||
|
|
||||||
```text
|
|
||||||
docs/FINANCE_AMPEL_LAENDER_2026-05-18_21-27.xlsx
|
|
||||||
```
|
|
||||||
|
|
||||||
Aktuelle Cache-Dateien:
|
|
||||||
|
|
||||||
```text
|
|
||||||
docs/it_cache_2025.csv
|
|
||||||
docs/spain_cache_2025.csv
|
|
||||||
```
|
|
||||||
|
|
||||||
## Nachtrag 2026-05-19
|
|
||||||
|
|
||||||
Nach diesem Handoff wurden noch vier relevante Schritte umgesetzt und committed:
|
|
||||||
|
|
||||||
1. Haupt-App-Finance-Vergleich an FinanceProbe angeglichen.
|
|
||||||
2. Leere Ist-Zeilen ohne belastbaren Ist-Wert aus dem Finance-Vergleich gefiltert.
|
|
||||||
3. Berechnungsformeln je Land dokumentiert.
|
|
||||||
4. Finance Cockpit mit separatem Login technisch geschuetzt; fachliche/produktive Abnahme noch offen.
|
|
||||||
|
|
||||||
Wichtige neue Doku:
|
|
||||||
|
|
||||||
```text
|
|
||||||
docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md
|
|
||||||
```
|
|
||||||
|
|
||||||
Diese Datei beschreibt die aktuell verwendete Soll/Ist-Logik fuer `/finance-cockpit/vergleich` und `/finance`, inklusive Jahresfilter, Kandidatenberechnung, Deduplizierung, bevorzugter Ist-Variante und landesspezifischer Quellen/Formeln.
|
|
||||||
|
|
||||||
Neue Finance-Cockpit-Sperre, Stand technisch:
|
|
||||||
|
|
||||||
- `FinanceCockpitAccessService`
|
|
||||||
- `FinanceCockpitAccessOptions`
|
|
||||||
- `FinanceCockpitUnlockPanel`
|
|
||||||
- Konfiguration in `appsettings.json` unter `FinanceCockpitAccess`
|
|
||||||
- DI-Registrierung in `Program.cs`
|
|
||||||
- Route-/Navigation-Schutz in `Routes.razor` und `NavMenu.razor`
|
|
||||||
|
|
||||||
Wichtig: Der HR-KPI-Login bleibt separat. Die neue Sperre betrifft das Finance Cockpit und laeuft wie HR-KPI ueber Benutzername plus SHA-256-Passwort-Hash. Finance hat ein eigenes Passwort:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Benutzer: finance
|
|
||||||
Passwort: Trafag-Finance-Cockpit-2026!
|
|
||||||
```
|
|
||||||
|
|
||||||
AD-/Rollenpruefung ist fuer den Moment nicht geloescht, sondern in `appsettings.json` mit `Security.Enabled = false` deaktiviert. Die vorhandenen `AccessGroups` und `AdminGroups` bleiben in der Konfiguration stehen und koennen spaeter wieder aktiviert werden. Die Finance-Sperre bleibt davon unabhaengig aktiv.
|
|
||||||
|
|
||||||
### Zentrale Excel fuer CFO-/Finance-Filter
|
|
||||||
|
|
||||||
Die zentrale Datei `Sales_All_yyyy-MM-dd.xlsx` enthaelt am rechten Ende einen zusammengehoerigen Finance-Spaltenblock:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Finance | Year
|
|
||||||
Finance | Country Key
|
|
||||||
Finance | Date
|
|
||||||
Finance | Net Sales Actual
|
|
||||||
Finance | Currency
|
|
||||||
Finance | Include
|
|
||||||
Finance | Source Value Field
|
|
||||||
```
|
|
||||||
|
|
||||||
Zusaetzlich wird nur in der zentralen Datei ein Hilfsblatt erzeugt:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Finance Filter Hilfe
|
|
||||||
```
|
|
||||||
|
|
||||||
Damit soll Finance dieselben Ist-Summen aus Excel filtern koennen wie im Testprogramm bzw. auf `/finance-cockpit/vergleich`.
|
|
||||||
|
|
||||||
Vorgehen im Excel:
|
|
||||||
|
|
||||||
1. `Finance | Year` auf das gewuenschte Jahr filtern, z. B. `2025`.
|
|
||||||
2. `Finance | Country Key` auf Land filtern, z. B. `IT`, `UK`, `ES`, `AT`.
|
|
||||||
3. `Finance | Include = TRUE` filtern.
|
|
||||||
4. `Finance | Net Sales Actual` summieren.
|
|
||||||
|
|
||||||
Gepruefter Vergleich gegen `FinanceReconciliationService` fuer 2025:
|
|
||||||
|
|
||||||
| Key | Finance-Service | Excel-Finance-Spalten | Differenz |
|
|
||||||
| --- | ---: | ---: | ---: |
|
|
||||||
| AT | `3'438'121.37` | `3'438'121.37` | `0.00` |
|
|
||||||
| CH | `43'521'390.82` | `43'521'390.82` | `0.00` |
|
|
||||||
| ES | `3'082'320.18` | `3'082'320.18` | `0.00` |
|
|
||||||
| FR | `1'471'218.44` | `1'471'218.44` | `0.00` |
|
|
||||||
| IN | `750'936'591.38` | `750'936'591.38` | `0.00` |
|
|
||||||
| IT | `7'669'641.47` | `7'669'641.47` | `0.00` |
|
|
||||||
| UK | `3'533'710.09` | `3'533'710.09` | `0.00` |
|
|
||||||
| US | `3'749'865.33` | `3'749'865.33` | `0.00` |
|
|
||||||
|
|
||||||
Hinweis: Fuer AT/CH waehlt der Finance-Service intern `Nettofakturawert Hauswaehrung pro Position`; in den aktuellen Daten ist dieser Wert identisch mit `SalesPriceValue`, daher stimmen die Excel-Finance-Spalten exakt.
|
|
||||||
|
|
||||||
## Aktuelle Soll/Ist-Werte
|
|
||||||
|
|
||||||
| Land | Ist | Soll | Differenz | Waehrung | Status |
|
|
||||||
| --- | ---: | ---: | ---: | --- | --- |
|
|
||||||
| FR | `1'471'218.44` | `1'471'218.00` | `0.44` | EUR | OK |
|
|
||||||
| IN | `750'936'591.38` | `750'936'591.00` | `0.38` | INR | OK |
|
|
||||||
| US | `3'749'865.33` | `3'749'865.00` | `0.33` | USD | OK |
|
|
||||||
| IT | `7'669'641.47` | `7'669'840.00` | `-198.53` | EUR | Fast passend, Filter fachlich bestaetigen |
|
|
||||||
| UK | `3'533'710.09` | `3'538'972.00` | `-5'261.91` | GBP | Kleine Restdifferenz |
|
|
||||||
| AT | `3'438'121.37` | `3'443'863.00` | `-5'741.63` | EUR | Kleine Restdifferenz |
|
|
||||||
| ES | `3'082'320.18` | `3'102'333.61` | `-20'013.43` | EUR | Groesste Restdifferenz |
|
|
||||||
|
|
||||||
Prioritaet fuer Folgearbeit:
|
|
||||||
|
|
||||||
1. ES pruefen: vermutlich Zuschlaege/Fracht/Nebenkosten/Rhino-Auswertungslogik.
|
|
||||||
2. AT und UK Restdifferenzen klaeren.
|
|
||||||
3. IT fachlich bestaetigen, weil der aktuelle Filter noch provisorisch ist.
|
|
||||||
|
|
||||||
## Grundregeln
|
|
||||||
|
|
||||||
- Net Sales Actuals werden in der Hauswaehrung des Landes verglichen.
|
|
||||||
- CHF ist nur Kontroll-/Reporting-Sicht ueber Budgetkurse, nicht Standardvergleich.
|
|
||||||
- Fuehrend ist Netto ohne VAT/MwSt.
|
|
||||||
- Gutschriften/Credit Notes muessen negativ in die Summe laufen.
|
|
||||||
- Standard-Ist bleibt inklusive Intercompany; IC/2nd-party wird separat gezeigt, ausser ein Land hat fachlich bestaetigte Ausschluesse.
|
|
||||||
- Jahresabgrenzung: bevorzugt Buchungsdatum/PostingDate. Wenn Quelle kein PostingDate liefert: InvoiceDate, danach ExtractionDate.
|
|
||||||
|
|
||||||
## Italien
|
|
||||||
|
|
||||||
Quelle:
|
|
||||||
|
|
||||||
- `BI1` / SAP B1 via HANA
|
|
||||||
- TSC `TRIT`
|
|
||||||
- Schema `it01_p`
|
|
||||||
|
|
||||||
Wichtige Erkenntnisse:
|
|
||||||
|
|
||||||
- Italien ist B1, nicht Sage.
|
|
||||||
- Frankreich und Italien kommen beide aus BI1/B1; FR passt mit `SalesPriceValue`.
|
|
||||||
- Screenshot `italien.png` zeigte fuer Italien die relevante B1-/Finance-Sicht auf Konto:
|
|
||||||
|
|
||||||
```text
|
|
||||||
47005 - Ricavi vendite e prestazioni
|
|
||||||
```
|
|
||||||
|
|
||||||
Aktueller technischer Arbeitsfilter in `Services/HanaQueryService.cs` fuer `it01_p`:
|
|
||||||
|
|
||||||
```sql
|
|
||||||
AcctCode LIKE '47005%'
|
|
||||||
AcctCode NOT LIKE '4700504%'
|
|
||||||
CardCode NOT IN (
|
|
||||||
'C_IT01_0022987',
|
|
||||||
'C_IT01_0306928',
|
|
||||||
'C_IT01_0306138',
|
|
||||||
'C_IT01_0309653',
|
|
||||||
'C_IT01_0304885',
|
|
||||||
'C_IT01_0306475'
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
Aus Cache berechnete Herleitung:
|
|
||||||
|
|
||||||
```text
|
|
||||||
10'603'550.59 - 2'933'909.12 = 7'669'641.47 EUR
|
|
||||||
Soll/Rhino = 7'669'840.00 EUR
|
|
||||||
Differenz = -198.53 EUR
|
|
||||||
```
|
|
||||||
|
|
||||||
Die sechs provisorisch ausgeschlossenen Kunden:
|
|
||||||
|
|
||||||
| Kunde | Betrag |
|
|
||||||
| --- | ---: |
|
|
||||||
| FAIVELEY TRANSPORT ITALIA S.P.A. | `1'689'857.70` |
|
|
||||||
| SYSTEM CERAMICS S.P.A. | `323'409.00` |
|
|
||||||
| WABTEC MZT | `282'647.40` |
|
|
||||||
| FINCANTIERI NEXTECH S.P.A | `268'166.37` |
|
|
||||||
| METAL WORK SERVICE S.R.L. | `203'425.15` |
|
|
||||||
| ELEMASTER S.P.A. | `166'403.50` |
|
|
||||||
|
|
||||||
Wichtig: Dieser IT-Filter ist ein Arbeits-/Prueffilter, noch nicht fachlich final bestaetigt.
|
|
||||||
|
|
||||||
Nachtrag 2026-05-20:
|
|
||||||
|
|
||||||
- Finance-Leiter bestaetigt als fachliche Methode: `Trafag Italia` aus dem externen IT-Finance-Ist ausschliessen.
|
|
||||||
- Identische IT-Zeilen mit leerem `Supplier country` nur einmal zaehlen.
|
|
||||||
- Die alte Kundenausschluss-Kombination bleibt als 2025-Analyse dokumentiert, ist aber nicht die fuehrende Methode fuer Folgejahre.
|
|
||||||
|
|
||||||
Detaildokument:
|
|
||||||
|
|
||||||
```text
|
|
||||||
docs/FINANCE_IT_VORGEHEN_2026-05-18.md
|
|
||||||
```
|
|
||||||
|
|
||||||
## UK
|
|
||||||
|
|
||||||
Quelle:
|
|
||||||
|
|
||||||
- Fachlich Sage, nicht SAP B1.
|
|
||||||
- TSC `TRUK`.
|
|
||||||
- App-Anschluss: `MANUAL_EXCEL`.
|
|
||||||
- SharePoint-Ordner heisst technisch `Import/Finance/UK_B1`, aber das bedeutet nicht B1.
|
|
||||||
|
|
||||||
Aktuelle Berechnung:
|
|
||||||
|
|
||||||
```text
|
|
||||||
SageNetSales([Sales Price/Value], [Quantity], [Document Type], [DocumentType], [Type])
|
|
||||||
```
|
|
||||||
|
|
||||||
Bedeutung:
|
|
||||||
|
|
||||||
- `Sales Price/Value * Quantity`
|
|
||||||
- Credit Notes werden bei erkennbarem Sage-Typ negativ erzwungen.
|
|
||||||
- Waehrung ist GBP.
|
|
||||||
|
|
||||||
Wichtige Korrektur:
|
|
||||||
|
|
||||||
- UK wird gegen Local Currency/GBP geprueft.
|
|
||||||
- Der fruehere `CheckValue 3'749'865.00` war fuer UK falsch und wurde entfernt.
|
|
||||||
- Korrektes Soll fuer UK ist `LocalCurrencyValue = 3'538'972.00 GBP`.
|
|
||||||
|
|
||||||
Aktueller Stand:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Ist = 3'533'710.09 GBP
|
|
||||||
Soll = 3'538'972.00 GBP
|
|
||||||
Differenz = -5'261.91 GBP
|
|
||||||
```
|
|
||||||
|
|
||||||
Detaildokument:
|
|
||||||
|
|
||||||
```text
|
|
||||||
docs/FINANCE_UK_QUELLE_KORREKTUR_2026-05-18.md
|
|
||||||
```
|
|
||||||
|
|
||||||
## Spanien
|
|
||||||
|
|
||||||
Quelle:
|
|
||||||
|
|
||||||
- Sage CSV
|
|
||||||
- TSC `TRES`
|
|
||||||
- Datei: `sageSpain/v2/Spain_Sales_2025.csv`
|
|
||||||
- Cache: `docs/spain_cache_2025.csv`
|
|
||||||
|
|
||||||
Berechnung:
|
|
||||||
|
|
||||||
- `SalesPriceValue` aus `LineasAlbaranCliente.ImporteNeto`
|
|
||||||
- Credit Notes/REC negativ
|
|
||||||
- Datumsbasis: `FechaFactura`
|
|
||||||
- Waehrung: EUR
|
|
||||||
|
|
||||||
Aktuelle Zerlegung:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Zeilen = 4'341
|
|
||||||
Invoice = 3'140'921.50 EUR
|
|
||||||
Credit Notes = -58'601.32 EUR
|
|
||||||
Ist = 3'082'320.18 EUR
|
|
||||||
Soll/Rhino = 3'102'333.61 EUR
|
|
||||||
Differenz = -20'013.43 EUR
|
|
||||||
```
|
|
||||||
|
|
||||||
Nach Serie:
|
|
||||||
|
|
||||||
| Serie | Zeilen | Betrag |
|
|
||||||
| --- | ---: | ---: |
|
|
||||||
| REG | `3'079` | `2'407'451.30` |
|
|
||||||
| LAT | `1'118` | `480'199.20` |
|
|
||||||
| PRO | `43` | `253'271.00` |
|
|
||||||
| REC | `101` | `-58'601.32` |
|
|
||||||
|
|
||||||
Bewertung:
|
|
||||||
|
|
||||||
- Differenz ist ca. `0.65%`.
|
|
||||||
- Gutschriften sind nicht das Problem, sie sind bereits negativ.
|
|
||||||
- Wahrscheinlich fehlen oder unterscheiden sich kleinere Sage-/Rhino-Bestandteile: Fracht, Portes, Zuschlaege, Rundungen, Versicherung, Finanzierung, nicht-artikelbezogene Belegpositionen oder eine andere Sage-Auswertung.
|
|
||||||
- Nicht einfach auf Belegkopf `DocumentNetAmount` wechseln: deduplizierter Belegkopf liegt bei `2'907'901.79` und passt schlechter.
|
|
||||||
|
|
||||||
## Geaenderte Programmteile
|
|
||||||
|
|
||||||
Wichtige Dateien:
|
|
||||||
|
|
||||||
```text
|
|
||||||
Services/HanaQueryService.cs
|
|
||||||
Services/ManualExcelImportService.cs
|
|
||||||
Services/DatabaseSeedService.cs
|
|
||||||
scripts/Export-SageSpainSalesCsv.ps1
|
|
||||||
SageSpainFinalExportPackage/Export-SageSpainSalesCsv.ps1
|
|
||||||
TrafagSalesExporter.Tests/ManualExcelImportServiceTests.cs
|
|
||||||
```
|
|
||||||
|
|
||||||
Wichtige technische Aenderungen:
|
|
||||||
|
|
||||||
- IT: provisorischer B1-Konto-/Kundenausschlussfilter fuer `it01_p`.
|
|
||||||
- UK: `SageNetSales(...)` im Manual-Excel-Importer.
|
|
||||||
- UK: `FinanceReference` nutzt fuer UK nur `LocalCurrencyValue = 3'538'972`, kein `CheckValue`.
|
|
||||||
- ES: Sage-Spain-SQL erzwingt Credit Notes mit `-ABS(...)`.
|
|
||||||
- Test ergaenzt, der positive Credit-Note-Rohbetraege negativ macht.
|
|
||||||
|
|
||||||
## Validierung
|
|
||||||
|
|
||||||
Build:
|
|
||||||
|
|
||||||
```text
|
|
||||||
dotnet build .\TrafagSalesExporter.csproj --no-restore -p:UseAppHost=false -p:OutDir=.\obj\verify_uk_reference\ --verbosity minimal
|
|
||||||
```
|
|
||||||
|
|
||||||
Ergebnis: erfolgreich.
|
|
||||||
|
|
||||||
Tests:
|
|
||||||
|
|
||||||
```text
|
|
||||||
dotnet test .\TrafagSalesExporter.Tests\TrafagSalesExporter.Tests.csproj --no-restore -p:UseAppHost=false --verbosity minimal
|
|
||||||
```
|
|
||||||
|
|
||||||
Ergebnis:
|
|
||||||
|
|
||||||
```text
|
|
||||||
71/71 Tests gruen
|
|
||||||
```
|
|
||||||
|
|
||||||
FinanceProbe:
|
|
||||||
|
|
||||||
```text
|
|
||||||
http://127.0.0.1:5099/finance
|
|
||||||
```
|
|
||||||
|
|
||||||
Ergebnis: HTTP `200`.
|
|
||||||
|
|
||||||
## Commits
|
|
||||||
|
|
||||||
Relevante Commits:
|
|
||||||
|
|
||||||
| Commit | Inhalt |
|
|
||||||
| --- | --- |
|
|
||||||
| `fb85e2e` | Sage-Berechnungen korrigiert, IT/UK-Doku und Ampel ergaenzt |
|
|
||||||
| `3d40d76` | UK auf GBP Local Currency als Referenz umgestellt |
|
|
||||||
| `f721d95` | Aktuelle Excel und Spanien-Cache ergaenzt |
|
|
||||||
| `bc6bfdf` | Finance-Handoff dokumentiert |
|
|
||||||
| `8f1b1b8` | Haupt-Finance-Vergleich an Probe angeglichen |
|
|
||||||
| `f855e06` | Leere Ist-Zeilen im Finance-Vergleich gefiltert |
|
|
||||||
| `5c654ad` | Finance-Berechnungsformeln je Land dokumentiert |
|
|
||||||
| `9c544af` | Finance Cockpit mit Login technisch geschuetzt |
|
|
||||||
| `ebbc5a1` | Finance-Filterspalten in zentrale Excel ergaenzt |
|
|
||||||
| `b23f73e` | Finance-Hilfsblatt in zentrale Excel ergaenzt |
|
|
||||||
|
|
||||||
Dieses Handoff wurde danach als weiterer Commit hinzugefuegt.
|
|
||||||
|
|
||||||
## Nicht aufraeumen ohne Ruecksprache
|
|
||||||
|
|
||||||
Es gibt noch untracked/temporaere Arbeitsdateien und alte Word-/Excel-Backups. Diese wurden bewusst nicht committed, weil sie entweder temporär, defekt, Logdateien oder Zwischenstaende sind.
|
|
||||||
|
|
||||||
Bekannt uncommitted:
|
|
||||||
|
|
||||||
```text
|
|
||||||
.tmp_tools/
|
|
||||||
Tools/FinanceProbe/.tmp_tools/
|
|
||||||
verify_probe_out*/
|
|
||||||
financeprobe.*.log
|
|
||||||
docs/CFO_Kurzbericht_270515.docx
|
|
||||||
docs/CFO_Kurzbericht_270515*.bak.docx
|
|
||||||
docs/CFO_Kurzbericht_270515_NEU*.docx
|
|
||||||
docs/FINANCE_AMPEL_LAENDER_2026-05-18.xlsx
|
|
||||||
docs/FINANCE_AMPEL_LAENDER_2026-05-18_20-32.xlsx
|
|
||||||
docs/FINANCE_AMPEL_LAENDER_2026-05-19.xlsx
|
|
||||||
docs/it_cache_2025.csv
|
|
||||||
italien.png
|
|
||||||
financeprobe.*.log
|
|
||||||
mainapp.*.log
|
|
||||||
```
|
|
||||||
|
|
||||||
Wenn weitergearbeitet wird, zuerst `git status --short` pruefen und keine fremden/alten Dateien blind loeschen.
|
|
||||||
|
|
||||||
## Naechste sinnvolle Schritte
|
|
||||||
|
|
||||||
1. ES: Sage-/Rhino-Unterschied von `20'013.43 EUR` gegen Fracht/Zuschlaege/Nebenkosten pruefen.
|
|
||||||
2. AT: Differenz `-5'741.63 EUR` analysieren.
|
|
||||||
3. UK: Restdifferenz `-5'261.91 GBP` klaeren, aber UK ist jetzt nahe am LC-Soll.
|
|
||||||
4. IT: provisorischen Kundenausschluss fachlich bestaetigen oder durch offizielle B1/Rhino-Filterregel ersetzen.
|
|
||||||
5. AD-/Rollenpruefung spaeter wieder aktivieren, sobald geklaert ist, welche Gruppen produktiv gelten. Dazu `Security.Enabled` wieder auf `true` setzen; Gruppen sind nicht geloescht.
|
|
||||||
6. `/finance-cockpit/vergleich` und `/finance` nebeneinander pruefen, wenn neue Daten geladen wurden; beide sollen dieselbe `FinanceReconciliationService`-Logik nutzen.
|
|
||||||
|
|||||||
@@ -1,39 +1,13 @@
|
|||||||
# Email an Italien: Abweichung Net Sales 2025
|
# Finance IT Mail Abweichung
|
||||||
|
|
||||||
**Oggetto:** Verifica differenza Net Sales 2025 - Italia
|
Stand: 2026-05-27
|
||||||
|
|
||||||
Ciao,
|
Historischer Mailentwurf, fuer RAG komprimiert.
|
||||||
|
|
||||||
nella riconciliazione dei Net Sales 2025 per l'Italia abbiamo identificato una differenza significativa rispetto al valore di riferimento Rhino / `check.xlsx`.
|
Aktueller Italien-/Finance-Kontext steht in `docs/rag/FINANCE.md`.
|
||||||
|
|
||||||
Riepilogo:
|
Volltext bei Bedarf:
|
||||||
|
|
||||||
- Actual Italia: `14.704.336,29 EUR`
|
```text
|
||||||
- Riferimento Rhino: `7.669.840,00 EUR`
|
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||||
- Differenza: `+7.034.496,29 EUR`
|
```
|
||||||
|
|
||||||
La differenza e molto rilevante. Prima di chiudere il dato dobbiamo confermare quale logica di calcolo e corretta per l'Italia.
|
|
||||||
|
|
||||||
Potete per favore verificare i seguenti punti?
|
|
||||||
|
|
||||||
1. Base di calcolo corretta
|
|
||||||
Confermare quale valore deve essere usato per i Net Sales 2025: valore netto per riga/posizione, totale documento deduplicato oppure un'altra logica.
|
|
||||||
|
|
||||||
2. Totali documento vs. posizioni
|
|
||||||
Verificare se i totali documento sono ripetuti su piu righe e quindi devono essere conteggiati una sola volta per documento.
|
|
||||||
|
|
||||||
3. Intercompany / 2nd-party
|
|
||||||
Confermare quali clienti o transazioni devono essere esclusi come Intercompany o 2nd-party.
|
|
||||||
|
|
||||||
4. Note di credito / Credit Notes
|
|
||||||
Confermare che le note di credito sono incluse correttamente e con segno negativo.
|
|
||||||
|
|
||||||
5. Criterio data
|
|
||||||
Confermare quale data deve essere utilizzata per delimitare il 2025: data registrazione, data fattura o altra data.
|
|
||||||
|
|
||||||
6. Valuta
|
|
||||||
Confermare che la valuta di confronto per l'Italia e `EUR`.
|
|
||||||
|
|
||||||
Obiettivo: capire se la differenza di `+7.034.496,29 EUR` deriva da doppio conteggio dei documenti, trattamento Intercompany, criteri data o dal campo importo utilizzato.
|
|
||||||
|
|
||||||
Grazie e saluti,
|
|
||||||
|
|||||||
@@ -1,45 +1,13 @@
|
|||||||
# Email an UK / England: Abweichung Net Sales 2025
|
# Finance UK Mail Abweichung
|
||||||
|
|
||||||
**Subject:** Review difference Net Sales 2025 - UK
|
Stand: 2026-05-27
|
||||||
|
|
||||||
Hi,
|
Historischer Mailentwurf, fuer RAG komprimiert.
|
||||||
|
|
||||||
In the Net Sales 2025 reconciliation for UK / England, we identified a difference against the Rhino / `check.xlsx` reference value.
|
Aktueller UK-/Finance-Kontext steht in `docs/rag/FINANCE.md` und `docs/rag/MANUAL_IMPORT.md`.
|
||||||
|
|
||||||
Summary:
|
Volltext bei Bedarf:
|
||||||
|
|
||||||
- Actual UK: `3,533,710.09 GBP`
|
```text
|
||||||
- Rhino reference: `3,749,865.00 GBP`
|
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||||
- Reference UK LC/GBP: `3,538,972.00 GBP`
|
```
|
||||||
- Difference: `-5,261.91 GBP`
|
|
||||||
|
|
||||||
The mapping has already been reviewed technically, but we still need to clarify the remaining difference before closing the 2025 value.
|
|
||||||
|
|
||||||
Important clarification: UK / England is treated as a Sage source. The current SharePoint folder name `UK_B1` is only a technical folder/source reference and does not mean that UK is read from SAP Business One.
|
|
||||||
|
|
||||||
Could you please check the following points?
|
|
||||||
|
|
||||||
1. Full-year completeness
|
|
||||||
Confirm that the UK source file/import contains the full year 2025 and not only a partial period.
|
|
||||||
|
|
||||||
2. Period included
|
|
||||||
We currently see data from approximately `03.01.2025` to `22.12.2025`. Please confirm whether this is complete for 2025 or if transactions outside this range are missing.
|
|
||||||
|
|
||||||
3. Credit notes
|
|
||||||
Confirm that credit notes are included correctly and with the correct negative sign.
|
|
||||||
|
|
||||||
4. Net sales field
|
|
||||||
Confirm which column should be used as the net sales amount for comparison with Rhino / `check.xlsx`.
|
|
||||||
|
|
||||||
5. Discounts, freight or additional charges
|
|
||||||
Please check whether discounts, freight, additional charges or other adjustments are included in the Rhino reference but not in the current import value, or vice versa.
|
|
||||||
|
|
||||||
6. 2nd-party / 3rd-party / Intercompany
|
|
||||||
Confirm whether any customers or transactions should be excluded from the Net Sales 2025 value.
|
|
||||||
|
|
||||||
7. Currency
|
|
||||||
Confirm that the correct comparison currency for UK is `GBP`.
|
|
||||||
|
|
||||||
Goal: clarify whether the difference of `-216,154.91 GBP` is caused by an incomplete period, credit notes, a different net sales field, adjustments, or 2nd-party/3rd-party handling.
|
|
||||||
|
|
||||||
Thanks and best regards,
|
|
||||||
|
|||||||
@@ -1,75 +1,14 @@
|
|||||||
# Finance: Welches Dokument gilt?
|
# Finance: Welches Dokument Gilt?
|
||||||
|
|
||||||
Stand: 2026-05-20
|
Stand: 2026-05-27
|
||||||
|
|
||||||
## Aktueller Nachtrag 2026-05-20
|
Historische Dokumentgueltigkeitsnotiz, fuer RAG komprimiert.
|
||||||
|
|
||||||
Zum alten CFO-/Finance-Termin-Dokument ist eine neue Anwenderdoku fuer das Cockpit hinzugekommen:
|
Aktueller Dokumentrouter: `docs/RAG_ROUTER.md`.
|
||||||
|
Aktueller Dokumentstatus: `docs/MD_DOKUMENTENSTATUS_2026-05-20.md`.
|
||||||
|
|
||||||
|
Volltext bei Bedarf:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
docs/FINANCE_COCKPIT_ANLEITUNG_FINANZ_2026-05-20.docx
|
docs/raw_md_archive/HISTORY_CANONICAL.md.raw
|
||||||
```
|
```
|
||||||
|
|
||||||
Diese neue Word-Datei ist die bessere Anleitung fuer Finance-Anwender im Cockpit. Das CFO-Dokument vom 2026-05-15 bleibt historische Termin-/Entscheidgrundlage.
|
|
||||||
|
|
||||||
Technisch/fachlich aktuell fuehrend:
|
|
||||||
|
|
||||||
- `Management Analyse` Reiter `Finance Summary`
|
|
||||||
- zentrale Excel `Finance Summary`
|
|
||||||
- `FinanceRuleEngine`
|
|
||||||
- `docs/FINANCE_ENTSCHEIDE.md`
|
|
||||||
- `docs/MD_DOKUMENTENSTATUS_2026-05-20.md`
|
|
||||||
|
|
||||||
## Fuehrendes Dokument
|
|
||||||
|
|
||||||
Fuer den CFO-/Finance-Termin vom 2026-05-15 galt:
|
|
||||||
|
|
||||||
```text
|
|
||||||
docs/FINANCE_CHEF_SUMMARY_2026-05-15.docx
|
|
||||||
```
|
|
||||||
|
|
||||||
Dieses Dokument ist die aktuellste CFO-Kurzfassung mit Ampel, Laendertabelle, Pruefquellen, Prioritaeten und empfohlenen Massnahmen.
|
|
||||||
|
|
||||||
## Geloeschte alte Fassung
|
|
||||||
|
|
||||||
Die alte Fassung `docs/FINANCE_CHEF_SUMMARY_2026-05-13.docx` wurde entfernt, weil sie durch die Version vom 2026-05-15 ersetzt ist.
|
|
||||||
|
|
||||||
## Entscheidbasis
|
|
||||||
|
|
||||||
Die fachlichen Entscheide stehen separat hier:
|
|
||||||
|
|
||||||
```text
|
|
||||||
entscheide.md
|
|
||||||
docs/FINANCE_ENTSCHEIDE.md
|
|
||||||
```
|
|
||||||
|
|
||||||
Kurzfassung der wichtigsten Entscheide:
|
|
||||||
|
|
||||||
| Thema | Entscheid |
|
|
||||||
| --- | --- |
|
|
||||||
| Fuehrende Waehrung | Hauswaehrung je Land |
|
|
||||||
| CHF-Sicht | Nur separat mit Budgetkursen |
|
|
||||||
| Aggregation | Pro Artikel bzw. Belegposition |
|
|
||||||
| Wertbasis | Nettofakturawert |
|
|
||||||
| Jahresabgrenzung 2025 | Buchungsdatum |
|
|
||||||
| Gutschriften / Storno | Separat ausweisen, positionsbasiert behandeln |
|
|
||||||
| Intercompany / 2nd-party | Separat klassifizieren und als Auswahl/Sicht fuehren |
|
|
||||||
| Indien | INR ist fuehrend |
|
|
||||||
| Italien | Hauswaehrung, Intercompany separat pruefen |
|
|
||||||
|
|
||||||
## Wichtig fuer Rueckfragen
|
|
||||||
|
|
||||||
Falls im Termin gefragt wird, ob die Berechnungslogik schon entschieden ist:
|
|
||||||
|
|
||||||
> Ja. Die Grundlogik ist entschieden: Hauswaehrung, Nettofakturawert, Buchungsdatum und Berechnung pro Belegposition. Offen sind vor allem Datenvollstaendigkeit, Intercompany-Abgrenzung, Budgetkursquelle und die fachliche Freigabe einzelner Laenderabweichungen.
|
|
||||||
|
|
||||||
## Was noch nicht final ist
|
|
||||||
|
|
||||||
| Thema | Status |
|
|
||||||
| --- | --- |
|
|
||||||
| IT | Kritisch; grosse Abweichung, Berechnungsart/IC/Deduplizierung pruefen |
|
|
||||||
| UK / EN | Hoch; Restdifferenz und Jahresvollstaendigkeit pruefen |
|
|
||||||
| DE | Hoch; finaler Jahresfile fehlt, Sample nicht verwenden |
|
|
||||||
| CH / AT | Hoch; Sollzuordnung und Trennung finalisieren |
|
|
||||||
| ES / AT | Mittel; kleinere Differenzen klaeren |
|
|
||||||
| FR / IN / US | Rechnerisch freigabefaehig |
|
|
||||||
|
|||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
Stand: 2026-05-20
|
Stand: 2026-05-20
|
||||||
|
|
||||||
|
RAG-Hinweis: Fuer tokenarme Kontextauswahl zuerst `docs/RAG_ROUTER.md` laden. Standardmaessig nur die Kurzdateien unter `docs/rag/` laden; diese Datei und andere Original-MDs nur bei Detail-/Auditbedarf.
|
||||||
|
|
||||||
Diese Datei ordnet die vorhandenen Markdown-Dateien ein. Ziel ist, alte Arbeitsnotizen nicht mit dem aktuellen Produktstand zu verwechseln.
|
Diese Datei ordnet die vorhandenen Markdown-Dateien ein. Ziel ist, alte Arbeitsnotizen nicht mit dem aktuellen Produktstand zu verwechseln.
|
||||||
|
|
||||||
## Aktuell fuehrend
|
## Aktuell fuehrend
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
# RAG Router
|
||||||
|
|
||||||
|
Stand: 2026-05-27
|
||||||
|
|
||||||
|
Zweck: Diese Datei zuerst laden. Danach nur die Dateien aus dem passenden Themenblock laden.
|
||||||
|
|
||||||
|
## Lade-Regel
|
||||||
|
|
||||||
|
1. Immer nur diese Router-Datei zuerst lesen.
|
||||||
|
2. Thema bestimmen.
|
||||||
|
3. Zuerst nur die passende Kurzdatei aus `docs/rag/` laden.
|
||||||
|
4. Rohquellen nur laden, wenn Details, alte Zahlen, Codepfade, Mailtexte oder Audit gefragt sind.
|
||||||
|
|
||||||
|
## Themen
|
||||||
|
|
||||||
|
| Thema | Wann laden | Standard laden |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| Aktueller Stand | Projektstatus, letzte Aenderungen, offene Punkte | `docs/rag/PROJECT.md` |
|
||||||
|
| Finance Cockpit | Soll/Ist, Finance Summary, Regeln, Laenderlogik | `docs/rag/FINANCE.md` |
|
||||||
|
| Finance Spezialfaelle | IT, UK, ES, Abweichungen | `docs/rag/FINANCE.md` |
|
||||||
|
| Manual Import | UK-Deltas, ES/DE Vollfiles, Importprozess | `docs/rag/MANUAL_IMPORT.md` |
|
||||||
|
| HR KPI | HR Dashboard, Formeln, Datenqualitaet, Anwenderstand | `docs/rag/HR_KPI.md` |
|
||||||
|
| Deployment/IIS | Publish, Server, BiDashboard, TLS, lokaler Uebergang | `docs/rag/DEPLOYMENT.md` |
|
||||||
|
| Admin/Startseite | Admin Login, Sessions, Landing Page | `docs/rag/ADMIN.md` |
|
||||||
|
| Architektur | Systemuebersicht, Diagramme, technische Einordnung | `docs/rag/ARCHITECTURE.md` |
|
||||||
|
|
||||||
|
## Rohquellen Nur Bei Bedarf
|
||||||
|
|
||||||
|
| Datei | Nur laden fuer |
|
||||||
|
| --- | --- |
|
||||||
|
| `docs/raw_md_archive/HISTORY_CANONICAL.md.raw` | kanonische Detailhistorie mit Quellenangaben |
|
||||||
|
| `docs/raw_md_archive/original_history_raws.zip` | exakte Originaldateien nur zur Wiederherstellung, nicht fuer RAG laden |
|
||||||
|
| `docs/MD_DOKUMENTENSTATUS_2026-05-20.md` | Einordnung alter Dokumente |
|
||||||
|
| `docs/FINANCE_ENTSCHEIDE.md` | Finance-Entscheide im Detail |
|
||||||
|
| `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md` | Formeln pro Land |
|
||||||
|
| `docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md` | Manual-Import-Details |
|
||||||
|
| `docs/HR_KPI_NACHDOKU_2026-05-13.md` | HR-KPI-Details |
|
||||||
|
| `docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md` | IIS-/Publish-Details |
|
||||||
|
| `docs/LOCAL_DEV_SERVER_UEBERGANG_2026-05-21.md` | lokaler Server im Detail |
|
||||||
|
| `docs/ADMIN_BEREICH_STARTSEITE_2026-05-21.md` | Admin-/Landing-Details |
|
||||||
|
|
||||||
|
## Suchwoerter
|
||||||
|
|
||||||
|
| Suchwort | Thema |
|
||||||
|
| --- | --- |
|
||||||
|
| `Finance Summary`, `Soll/Ist`, `check.xlsx`, `FinanceRuleEngine` | Finance Cockpit |
|
||||||
|
| `TRUK`, `UK_B1`, `Delta`, `Manual Excel` | Manual Import / Finance Spezialfaelle |
|
||||||
|
| `TRDE`, `Alphaplan`, `NettoPreisGesamtX` | Finance Cockpit / Manual Import |
|
||||||
|
| `TRSE`, `Spain`, `Sage`, `ImporteNeto` | Finance Spezialfaelle |
|
||||||
|
| `HR KPI`, `Rexx`, `Austritte`, `Absenzen` | HR KPI |
|
||||||
|
| `IIS`, `BiDashboard`, `Publish`, `TLS`, `Client certificate` | Deployment/IIS |
|
||||||
|
| `Admin Bereich`, `AdminAccess`, `LandingPage` | Admin/Startseite |
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# RAG Admin
|
||||||
|
|
||||||
|
Stand: 2026-05-27
|
||||||
|
|
||||||
|
## Kurzstand
|
||||||
|
|
||||||
|
- Admin Bereich ist eigener Hauptmenuepunkt, nicht unter Finance.
|
||||||
|
- Route: `/admin/sessions`.
|
||||||
|
- Schutz: eigener App-interner Admin-Login ueber `AdminAccess`.
|
||||||
|
- Admin-Login ist unabhaengig vom Finance-Cockpit-Passwort.
|
||||||
|
- Admin Bereich darf nicht durch Finance-Cockpit-Login blockiert werden.
|
||||||
|
|
||||||
|
## Startseite
|
||||||
|
|
||||||
|
- Route `/` ist neutral und verlangt keinen Finance-Login.
|
||||||
|
- Landing Page nutzt Trafag-nahe Schrift, Manometer und optionales Strichmaennchen.
|
||||||
|
- Schalter fuer Strichmaennchen liegt im Admin Bereich.
|
||||||
|
|
||||||
|
## Rohquellen Nur Bei Bedarf
|
||||||
|
|
||||||
|
- Detaildoku: `docs/ADMIN_BEREICH_STARTSEITE_2026-05-21.md`
|
||||||
|
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# RAG Architecture
|
||||||
|
|
||||||
|
Stand: 2026-05-27
|
||||||
|
|
||||||
|
## Kurzstand
|
||||||
|
|
||||||
|
- App sammelt Daten aus SAP OData, HANA/SAP B1, SharePoint und manuellen Excel-/CSV-Quellen.
|
||||||
|
- Zentrale Persistenz ueber `CentralSalesRecords`.
|
||||||
|
- Finance-Auswertung und zentrale Excel sollen dieselbe Regelengine verwenden.
|
||||||
|
- Diagramme und Anwenderdokus existieren fuer Keyuser-Prozess und technische Architektur.
|
||||||
|
|
||||||
|
## Rohquellen Nur Bei Bedarf
|
||||||
|
|
||||||
|
- Diagramme: `docs/PROGRAMM_DIAGRAMME.md`
|
||||||
|
- technischer Handoff und alter LLM-Systemkontext: `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# RAG Deployment
|
||||||
|
|
||||||
|
Stand: 2026-05-27
|
||||||
|
|
||||||
|
## Kurzstand
|
||||||
|
|
||||||
|
- `TrafagSalesExporter` wird als ASP.NET/IIS-Webanwendung im bisherigen `BiDashboard`-Schema publiziert.
|
||||||
|
- Lokaler Uebergangsserver: `http://172.16.9.185:5000` im Trafag-Netz, IP kann wechseln.
|
||||||
|
- Lokale URLs bleiben `https://localhost:55415` und `http://localhost:55416`.
|
||||||
|
- Fuer andere PCs nutzt der Uebergang bewusst HTTP auf Port `5000`.
|
||||||
|
|
||||||
|
## Serverproblem
|
||||||
|
|
||||||
|
- IIS/HTTPS blockiert vor der App.
|
||||||
|
- Dokumentierter Befund: TLS fordert Client-Zertifikat.
|
||||||
|
- IT soll IIS SSL Settings pruefen: Client certificates `Ignore` oder hoechstens `Accept`, nicht `Require`.
|
||||||
|
|
||||||
|
## Rohquellen Nur Bei Bedarf
|
||||||
|
|
||||||
|
- IIS-Handoff: `docs/DEPLOYMENT_IIS_HANDOFF_2026-05-19.md`
|
||||||
|
- lokaler Server: `docs/LOCAL_DEV_SERVER_UEBERGANG_2026-05-21.md`
|
||||||
|
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# RAG Finance
|
||||||
|
|
||||||
|
Stand: 2026-05-27
|
||||||
|
|
||||||
|
## Kurzstand
|
||||||
|
|
||||||
|
- Fuehrende Sicht: `Finance Summary`.
|
||||||
|
- `Finance Summary` nutzt dieselbe `FinanceRuleEngine` wie das zentrale Excel.
|
||||||
|
- `Management Analyse` bleibt Diagnose-/Plausibilitaetssicht, nicht fuehrende Finance-Zahl.
|
||||||
|
- Filter fuer Jahr, Land und Waehrung wirken auf das Finance-Endergebnis.
|
||||||
|
- Standard-Ist bleibt inklusive Positionen; Intercompany/2nd-party wird separat ausgewiesen.
|
||||||
|
|
||||||
|
## Wichtige Regeln
|
||||||
|
|
||||||
|
- Hauswaehrung des Landessystems ist fuehrend.
|
||||||
|
- Wertbasis ist Nettofakturawert pro Position.
|
||||||
|
- Jahresabgrenzung ueber `PostingDate`, Fallback `InvoiceDate`, danach `ExtractionDate`.
|
||||||
|
- Gutschriften/Storno laufen als negative Beleg-/Positionszeilen.
|
||||||
|
- Budget-CHF ist Kontroll-/Reporting-Kandidat, nicht Standardabgleich.
|
||||||
|
|
||||||
|
## Offene Fachpunkte
|
||||||
|
|
||||||
|
- DE: Finance/Munir muss bestaetigen, welche Kundenlaender/Filter zum offiziellen DE-Ist gehoeren.
|
||||||
|
- IT: Nach neuem IT-Export pruefen, ob die vollstaendige `Trafag Italia`-Summe sichtbar wird.
|
||||||
|
- ES: Differenz zu Rhino/check.xlsx bleibt fachlich zu klaeren.
|
||||||
|
|
||||||
|
## Land-Kurzindex
|
||||||
|
|
||||||
|
| Land | Kurzregel |
|
||||||
|
| --- | --- |
|
||||||
|
| CH/AT | SAP OData `ZSCHWEIZ`, Trennung ueber Buchungskreis/Reporting-Land |
|
||||||
|
| DE | Alphaplan Excel, `NettoPreisGesamtX`, 2025-Zwang |
|
||||||
|
| ES | Sage CSV, `ImporteNeto`, REC/Credit negativ |
|
||||||
|
| IT | Hauswaehrung, `Trafag Italia` ausgeschlossen, Duplikatlogik fuer leeres Supplier country |
|
||||||
|
| UK | Sage/Manual Excel, GBP, `[Sales Price/Value] * [Quantity]`, Credit Notes negativ |
|
||||||
|
| IN | INR als Hauswaehrung |
|
||||||
|
|
||||||
|
## Rohquellen Nur Bei Bedarf
|
||||||
|
|
||||||
|
- Entscheide: `docs/FINANCE_ENTSCHEIDE.md`, `entscheide.md`
|
||||||
|
- Formeln je Land: `docs/FINANCE_BERECHNUNGSFORMELN_LAENDER_2026-05-19.md`
|
||||||
|
- IT Detail: `docs/FINANCE_IT_VORGEHEN_2026-05-18.md`
|
||||||
|
- UK Korrektur: `docs/FINANCE_UK_QUELLE_KORREKTUR_2026-05-18.md`
|
||||||
|
- ES Detail: `SAGE_SPAIN_EXPORT_2026-05-05.md`
|
||||||
|
- alter Finance-Handoff: `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# RAG HR KPI
|
||||||
|
|
||||||
|
Stand: 2026-05-27
|
||||||
|
|
||||||
|
## Kurzstand
|
||||||
|
|
||||||
|
- HR KPI Cockpit wurde um produktive Cockpit-Funktionen erweitert.
|
||||||
|
- Enthalten sind Anleitung, Datenordner, Dateifrische, Datenstatus, Ampeln, Periodenvergleich, Datenqualitaet, Austritte, Absenzen, Managementsicht und Drucken/PDF.
|
||||||
|
- Managementsicht anonymisiert Personennamen in Detailtabellen.
|
||||||
|
|
||||||
|
## Datenquellen
|
||||||
|
|
||||||
|
- Rexx-/SAP-Dateien aus konfiguriertem Datenordner.
|
||||||
|
- Datenordner im Cockpit je Lauf anpassbar und dauerhaft ueber `HrKpi:DataFolder`.
|
||||||
|
|
||||||
|
## Rohquellen Nur Bei Bedarf
|
||||||
|
|
||||||
|
- Nachdoku: `docs/HR_KPI_NACHDOKU_2026-05-13.md`
|
||||||
|
- Fachpruefung: `docs/HR_KPI_PRUEFUNG_SWISS_BEST_PRACTICES.md`
|
||||||
|
- Anwenderdoku: `docs/HR_KPI_ANLEITUNG_HR_2026-05-20.docx`
|
||||||
|
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
# RAG Manual Import
|
||||||
|
|
||||||
|
Stand: 2026-05-27
|
||||||
|
|
||||||
|
## Kurzstand
|
||||||
|
|
||||||
|
- Manual-Importe ersetzen pro Standort den aktuellen Stand in `CentralSalesRecords`.
|
||||||
|
- Delta-Dateien muessen zusammen mit der passenden Basisdatei gelesen werden.
|
||||||
|
- Das ist aktuell nur fuer UK vorgesehen.
|
||||||
|
- ES und DE muessen Vollfiles liefern.
|
||||||
|
|
||||||
|
## Laender
|
||||||
|
|
||||||
|
| Standort | Quelle | Delta | Finance-Wert |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| UK / `TRUK` | SharePoint `Import/Finance/UK_B1`, Sage Excel | ja | `[Sales Price/Value] * [Quantity]`, Credit Notes negativ, GBP |
|
||||||
|
| ES / `TRSE`/`TRES` | Sage CSV | nein | `ImporteNeto`, REC/Credit negativ, EUR |
|
||||||
|
| DE / `TRDE` | Alphaplan Excel | nein | `NettoPreisGesamtX`, GS negativ, Ausschlussregeln |
|
||||||
|
|
||||||
|
## Bedienreihenfolge
|
||||||
|
|
||||||
|
1. Datei oder Delta im richtigen Ordner bereitstellen.
|
||||||
|
2. In `Manuelle Importe` Pfad/Standort pruefen.
|
||||||
|
3. Standortexport ausfuehren.
|
||||||
|
4. Zentrale Datei neu erzeugen.
|
||||||
|
5. `Finance Summary` und `Finance Details` pruefen.
|
||||||
|
|
||||||
|
## Rohquellen Nur Bei Bedarf
|
||||||
|
|
||||||
|
- Detailstand: `docs/MANUAL_IMPORT_DELTA_STAND_2026-05-21.md`
|
||||||
|
- Workflow-Historie: `NEXT_STEPS_2026-04-15.md`
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# RAG Project
|
||||||
|
|
||||||
|
Stand: 2026-05-27
|
||||||
|
|
||||||
|
## Kurzstand
|
||||||
|
|
||||||
|
- Fuehrende App: `TrafagSalesExporter`, publiziert als `BiDashboard`.
|
||||||
|
- Letzter dokumentierter Stand: Rebase/Push synchron mit `origin/main`, Head `d853f53 Add published HR KPI workflow fixes`.
|
||||||
|
- Validierung laut Doku: Build erfolgreich, Tests zuletzt `78/78` gruen.
|
||||||
|
- Fuer normale Weiterarbeit diese Datei plus den passenden Themen-RAG laden.
|
||||||
|
|
||||||
|
## Aktive Themen
|
||||||
|
|
||||||
|
- Finance Cockpit: `docs/rag/FINANCE.md`
|
||||||
|
- Manual Import: `docs/rag/MANUAL_IMPORT.md`
|
||||||
|
- HR KPI: `docs/rag/HR_KPI.md`
|
||||||
|
- Deployment/IIS: `docs/rag/DEPLOYMENT.md`
|
||||||
|
- Admin/Startseite: `docs/rag/ADMIN.md`
|
||||||
|
|
||||||
|
## Rohquellen Nur Bei Bedarf
|
||||||
|
|
||||||
|
- kanonische Detailhistorie: `docs/raw_md_archive/HISTORY_CANONICAL.md.raw`
|
||||||
|
- exakte Originaldateien zur Wiederherstellung: `docs/raw_md_archive/original_history_raws.zip`
|
||||||
|
- Dokumentstatus: `docs/MD_DOKUMENTENSTATUS_2026-05-20.md`
|
||||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+14
-2335
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user