Fruehjahrsputz: WinForms ausgebaut (P11/L5), LicenseLabrador abgeloest (D-6)
Das Repo enthaelt ab jetzt ausschliesslich plattformneutralen Code. Build gruen (0 Fehler), 476 Tests gruen, Linux-Publish der Avalonia-App verifiziert. Rueckfallebene ist der Tag winforms-final, der jetzt auch auf dem Server liegt. WinForms endgueltig ausgebaut (P11/L5): - PolyTrader.App.csproj aus PolyTraderSharp.sln genommen und geloescht - Ui/, Models/, Licensing/, services/, Properties/, Resources/icons/, Program.cs, favicon.ico entfernt - rund 4.500 LOC generierter Designer-Code - Root-appsettings.json entfernt: exaktes Duplikat der Avalonia-Kopie, die die App tatsaechlich liest. Zwei Dateien mit gleichem Inhalt laufen frueher oder spaeter auseinander. - Kein net10.0-windows mehr im Repo; Build-Warnungen von 23 auf 15 gesunken (die CS0169 aus den Designer-Resten sind weg) PNG-Symbole gerettet statt geloescht: Die Avalonia-App band sie per ..\..\Resources\*.png aus dem Repo-Root ein und haette sie mitverloren. Sie liegen jetzt in src/PolyTrader.App.Avalonia/Assets/, wo sie hingehoeren. Der avares-Pfad "Assets/<datei>.png" bleibt unveraendert - in der gebauten Assembly nachgeprueft. LicenseLabrador abgeloest (D-6): - LicenseLabrador.Client aus lib/nuget entfernt, Quellen-Mapping in NuGet.Config auf Deploymentcenter.* reduziert, lib/nuget/README.md neu - Bewusste Abweichung vom Plan: die Watchdog*-Felder in ServerSettings bleiben. D-1 hat sie auf die Deploymentcenter-API umgewidmet statt sie zu ersetzen; sie werden aktiv benutzt. Die Planzeile stammte aus der Zeit davor. Weitere Altlasten: - agentspace/ (30 Dateien: WinForms-Designer-Patcher, fix_mongo.py nach der MySQL-Migration, tmp/test/scratch-Skripte) entfernt - Ideen-fuer-Mittwoch.txt entfernt - Inhalt ist laengst umgesetzt - tote .gitignore-Regel fuer agentspace/antigravity/ entfernt - lokal entfernt (nicht versioniert): MongoDB/-Exporte, data.db, .bak-Datei Dokumentation nachgezogen: - ANALYSE-Linux-Portierung.md auf Revision 6, P11/L5 als erledigt - LEITFADEN: Abschnitt B vollstaendig aufgeloest, A5 prueft ab jetzt gegen einen Worktree des Tags statt gegen den Arbeitsbaum - UMSETZUNGSPLAN-Watchdog-LicenseLabrador-Integration.md als ABGELOEST gekennzeichnet, D-6 im Deploymentcenter-Plan auf den Iststand gezogen Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Analyse & Umsetzungsrahmen: Linux-Fähigkeit von PolyTrader
|
||||
|
||||
**Stand:** 13.08.2026 · **Revision 5** (Avalonia-Portierung P5–P8 durch; offen sind Deploymentcenter, CI, systemd/Feldtest, WinForms-Ausbau)
|
||||
**Basis:** 8 Projekte auf `net10.0` (`PolyTrader.App` als `net10.0-windows` noch als Fallback), 450 Tests
|
||||
**Stand:** 22.08.2026 · **Revision 6** (Avalonia-Portierung P5–P8 durch, Deploymentcenter D-0–D-5 code-seitig durch, **WinForms ausgebaut**; offen sind CI, systemd/Feldtest und die Abnahmen)
|
||||
**Basis:** 7 Projekte auf `net10.0`, **alle plattformneutral** — kein `net10.0-windows` mehr im Repo. 476 Tests.
|
||||
|
||||
> **Als Nächstes:** die Integration des überarbeiteten **Deploymentcenters** (P3c). Sie ersetzt
|
||||
> **Lizenzverwaltung, Watchdog und Error-Reporting** grundlegend. Alles, was in diesem Dokument zu
|
||||
@@ -41,10 +41,10 @@
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Ist es machbar? | Ja, ohne architektonische Sackgassen. |
|
||||
| Was ist der Löwenanteil? | Die UI. ~8.300 LOC (34 % des Produktivcodes) hängen an WinForms. |
|
||||
| Was ist der Löwenanteil? | War die UI: ~8.300 LOC (34 % des Produktivcodes) hingen an WinForms. **Seit dem 22.08.2026 ist davon nichts mehr im Repo** — portiert nach Avalonia, Rest gelöscht. |
|
||||
| Was ist überraschend gut? | Die **gesamte Trading-Kernlogik ist bereits portabel**: kein einziger `DllImport`, keine Registry, keine WMI, keine DPAPI, keine `SpecialFolder`, saubere `Path.Combine`-Nutzung. Nethereum, Pomelo/EF, `HttpClient`, `ClientWebSocket`, AES-GCM laufen unverändert. |
|
||||
| Was war der teuerste Einzelpunkt? | Der **`PropertyGrid`-Ersatz** — erledigt, ersetzt durch den kategorisierten `SettingsEditor`. |
|
||||
| Gesamtaufwand | **~7–13 Personentage offen** (Stand 13.08.2026). Die UI-Portierung ist inhaltlich durch (P5–P8); offen sind nur noch **P3c Deploymentcenter**, **CI**, **systemd/Feldtest**, der **WinForms-Ausbau** und die Abnahme A5. |
|
||||
| Gesamtaufwand | **~4–9 Personentage offen** (Stand 22.08.2026). Die UI-Portierung ist inhaltlich durch (P5–P8), das Deploymentcenter code-seitig (D-0–D-5), der WinForms-Ausbau vollzogen. Offen sind noch **CI** (es gibt bis heute keinerlei Konfiguration), **systemd/Feldtest** sowie die Abnahmen **A5** und die Live-Abnahme des Deploymentcenters. |
|
||||
| Wichtigste Erkenntnis | Galt: „Für ~15 PT bekommst du 80 % des Nutzens." **Eingetreten und überholt** — die UI wurde nicht als Fallback eingefroren, sondern vollständig nach Avalonia portiert. Der Rückfallstand liegt im Tag `winforms-final`. Siehe [Abschnitt 7](#7-fahrplan). |
|
||||
|
||||
---
|
||||
@@ -406,7 +406,7 @@ Heute laufen Generic Host und `Application.Run` im **selben Prozess**; darunter
|
||||
| **Einfrieren** | Vor Beginn von L3 einen Git-Tag setzen (Vorschlag: `winforms-final`) und im Repo dokumentieren. Ab da keine Feature-Arbeit mehr an `Ui/` und den `Ui/`-Ordnern der Module. |
|
||||
| **Fallback im Ernstfall** | Tag auschecken, bauen, starten. Greift auf dieselbe MySQL zu — Anzeige und Einstellungen bleiben voll brauchbar. |
|
||||
| **Weiterentwicklung** | Läuft unverändert weiter — nur eben im **Trading-Kern**, der ab L2 headless auf Linux läuft. Eingefroren ist die *Oberfläche*, nicht die Funktion. |
|
||||
| **Endgültiger Ausbau** | Nach Abschluss von L4: `Ui/`-Ordner, `PolyTrader.App` als `WinExe`, alle `.Designer.cs`/`.resx`, `UseWindowsForms`, `favicon.ico`-Einbindung und `ApplicationConfiguration.Initialize()` entfernen. **~4.500 LOC generierter Designer-Code fallen ersatzlos weg.** |
|
||||
| **Endgültiger Ausbau** | ✅ **Vollzogen am 22.08.2026.** `Ui/`, `PolyTrader.App.csproj`, alle `.Designer.cs`/`.resx`, `UseWindowsForms`, `WinExe`, `favicon.ico` und `ApplicationConfiguration.Initialize()` sind entfernt; das Projekt ist aus `PolyTraderSharp.sln` genommen. Die PNG-Symbole sind **nicht** mitgelöscht, sondern nach `src/PolyTrader.App.Avalonia/Assets/` gewandert (der `avares://`-Pfad blieb gleich). |
|
||||
|
||||
**Wichtig für die Reihenfolge:** Damit der eingefrorene Stand überhaupt lauffähig bleibt, darf **P1 die WinForms-UI nicht kaputtmachen**. Beim Entkoppeln von Core und Modulen (Zielframework `net8.0`, `System.Drawing` raus) muss der WinForms-Zweig bis zum Tag baubar bleiben — praktisch heisst das: **erst taggen, dann P1 durchziehen**. Sonst ist der Fallback genau in dem Moment weg, in dem man ihn braucht.
|
||||
|
||||
@@ -443,9 +443,9 @@ Heute laufen Generic Host und `Application.Run` im **selben Prozess**; darunter
|
||||
| ~~**P8**~~ | ~~Modul-Fenster: CopyTrading, ResolutionFarming, Supervisor, Accounting~~ | — | ✅ **erledigt** (`669676a`, `7f0b05e`) |
|
||||
| **P9** | Tests ✅ (450 grün), `--smoke-ui` auf `Avalonia.Headless`, **Linux-CI fehlt vollständig** | — | **2–3 PT** |
|
||||
| **P10** | Deployment: systemd, TZ ✅, Logrotate, Feldtest im Zielland | — | **2–3 PT** |
|
||||
| **P11** | **WinForms endgültig ausbauen** (nach L4): `Ui/`, Designer-Dateien, `UseWindowsForms`, `WinExe` | — | **1 PT** |
|
||||
| **P3c** | **Deploymentcenter**: Lizenzverwaltung, Watchdog, Error-Reporting neu | ⬅️ **als Nächstes** | **2–4 PT** |
|
||||
| | **Summe (offen)** | | **7–13 PT** |
|
||||
| ~~**P11**~~ | ~~**WinForms endgültig ausbauen**: `Ui/`, Designer-Dateien, `UseWindowsForms`, `WinExe`~~ | — | ✅ **erledigt** (22.08.2026) |
|
||||
| **P3c** | **Deploymentcenter**: Lizenzverwaltung, Watchdog, Error-Reporting neu — D-0 bis D-5 code-seitig erledigt, **Live-Abnahme offen** | — | **Rest: Abnahme** |
|
||||
| | **Summe (offen)** | | **4–9 PT** |
|
||||
|
||||
*Personentage entwickelnder Arbeit. Mit Agentenunterstützung sinkt die Kalenderzeit deutlich; der Review- und Feldtest-Anteil (P9, P10) bleibt weitgehend gleich – bei einer Anwendung, die echtes Geld bewegt, ist das die richtige Reihenfolge.*
|
||||
|
||||
@@ -473,7 +473,7 @@ Rückversicherung im Tag `winforms-final`. Der aktuelle Engpass ist nicht mehr d
|
||||
| **L2** | ~~Headless-Einstiegspunkt~~ ✅ + systemd + Feldtest im Zielland | 2–4 PT | `--headless` existiert ([`App.Avalonia/Program.cs:41`](../src/PolyTrader.App.Avalonia/Program.cs)). Offen: systemd-Unit + Feldtest. **Trading läuft headless auf Linux.** ⭐ Meilenstein |
|
||||
| ~~**L3**~~ | ~~P5 + P6 + P7 (Charts, Shell, Core-Views)~~ | — | ✅ **erledigt** – Avalonia-Grundgerüst (`cd59e5c`), Dashboard mit LiveCharts2 (`0b8728b`), Settings (`4ba8149`), Terminal (`929fa20`), Dunkelmodus (`487ea44`) |
|
||||
| **L4** | ~~P8 (Modul-Fenster)~~ ✅ + P9 (**CI**) | 2–4 PT | Modul-Fenster portiert (`669676a`), Restlücken A1–A4 geschlossen (`7f0b05e`), 450 Tests grün. **Offen: es gibt keinerlei CI-Konfiguration** – weder `.github/workflows` noch `.gitea/workflows`. |
|
||||
| **L5** | P11 – WinForms endgültig aus dem Build entfernen | 1 PT | Erst nach Abnahme (A5). Keine Altlast mehr; ~4.500 LOC Designer-Code fallen weg, die 23 Build-Warnungen verschwinden mit |
|
||||
| ~~**L5**~~ | ~~P11 – WinForms endgültig aus dem Build entfernen~~ | — | ✅ **erledigt am 22.08.2026** (Frühjahrsputz). Vorgezogen vor die A5-Abnahme, weil der Rückfall-Tag `winforms-final` auf dem Server gesichert ist und A5 auch gegen einen Worktree dieses Tags geprüft werden kann. Ergebnis: 91 Dateien und ~4.500 LOC Designer-Code weg, Build-Warnungen von 23 auf 15 gesunken, `LicenseLabrador.Client` mit ausgebaut (D-6). |
|
||||
|
||||
### Reihenfolge-Begründung
|
||||
|
||||
|
||||
Reference in New Issue
Block a user