P1c+P4: Module und Tests auf net8.0 - WinForms nur noch in PolyTrader.App

Variante B (Entscheidung Richard): Modul-UI entfernt statt in Zwischenprojekte
ausgelagert. Avalonia ist plattformuebergreifend, die neuen Ansichten kommen spaeter
direkt in die Modul-Projekte zurueck - kein Zwischenschritt, keine Wegwerfarbeit.

- 23 WinForms-Dateien aus den 4 Modulen entfernt (Spezifikation steht in
  docs/UI-SPEZIFIKATION-WinForms.md, Originalcode im Tag winforms-final).
- RegisterUi ist jetzt je Modul ein dokumentierter No-Op: View-ID, Titel, Gruppe,
  Order und der Tab-Aufbau stehen als XML-Doku drin, damit der Avalonia-Nachbau
  die stabilen IDs und die Struktur uebernimmt.
- Alle 4 Modulprojekte + Testprojekt: net8.0 statt net8.0-windows, UseWindowsForms raus.
- P4 vorgezogen (war durch den Testprojekt-Wechsel faellig): PDFsharp-MigraDoc-GDI
  -> PDFsharp-MigraDoc (Core-Build). Der Core-Build findet keine Systemschriften,
  daher neu Logic/PdfFontResolver.cs: durchsucht die Schriftverzeichnisse des OS nach
  Segoe UI/DejaVu/Liberation/Noto/Arial/FreeSans. Keine Schriftdateien im Repo noetig;
  fehlt auf Linux alles, kommt eine klare Meldung mit apt-Hinweis statt eines
  kryptischen Renderer-Fehlers.

Verifiziert: Core, alle 4 Module und das Testprojekt publishen fuer linux-x64, und
zwar ohne ein einziges Windows-spezifisches Paket in den deps.json. 442 Tests gruen
(inkl. PDF-Rendering) auf net8.0. Windows-App laeuft weiter mit den Core-Fenstern.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-08-06 17:32:12 +02:00
co-authored by Claude Opus 5
parent 0a26b8563d
commit 53546ceeeb
34 changed files with 243 additions and 5175 deletions
@@ -54,22 +54,22 @@ namespace PolyTrader.Modules.ResolutionFarming
// Live-Marktquelle, Live-Execution, On-Chain-Auto-Redeem und Kalibrierung folgen (Zielland).
}
public void RegisterUi(IModuleUiHost host, System.IServiceProvider services)
/// <summary>
/// Aktuell ohne Ansicht: Die WinForms-UI wurde mit der Linux-Portierung entfernt, die
/// Avalonia-Ansicht folgt (Stufe L3/L4). Die Fachlogik dieses Moduls laeuft davon
/// unabhaengig weiter die Shell zeigt schlicht kein Fenster fuer das Modul an.
///
/// <para><b>Beim Nachbau zu erhalten</b> (Spezifikation: docs/UI-SPEZIFIKATION-WinForms.md,
/// Originalcode: Git-Tag <c>winforms-final</c>):</para>
/// <list type="bullet">
/// <item>View-ID <c>resolutionfarming.main</c> (stabil Launcher-Button und Symbol haengen daran)</item>
/// <item>Titel <c>ResolutionFarming</c>, Gruppe <c>ResolutionFarming</c>, Order <c>200</c></item>
/// <item>Ein Fenster fuers ganze Modul: ResolutionFarmingMainForm mit Tabs: Kandidaten / Positionen / Historie+Statistik / Settings</item>
/// </list>
/// </summary>
public void RegisterUi(IModuleUiHost host, IServiceProvider services)
{
// EIN Fenster fürs ganze Modul (Tabs: Kandidaten/Positionen/Historie/Settings).
host.RegisterView(new ModuleView
{
Id = "resolutionfarming.main",
Title = "ResolutionFarming",
Group = "ResolutionFarming",
Order = 200,
CreateView = () =>
{
var form = new Ui.ResolutionFarmingMainForm();
form.Initialize(services);
return form;
}
});
// Bewusst leer, bis die Avalonia-Ansicht steht (siehe Doku oben).
}
public Task StartAsync(CancellationToken cancellationToken) => Task.CompletedTask;