From 7f0b05e9baab862493af7c16cd6fee1e151750f1 Mon Sep 17 00:00:00 2001 From: Richard Date: Mon, 10 Aug 2026 10:48:27 +0200 Subject: [PATCH] Avalonia-Portierung verbleibender UI-Elemente (A1 bis A4) umgesetzt Paritaet mit dem WinForms-Referenzstand (Tag winforms-final) hergestellt: - A1 & A2 (Launcher): Account-Uebersicht DataGrid (inkl. Polymarket-Profil-Button via Launcher.LaunchUriAsync), Modul-KPI-Kacheln (7T/30T PnL & Winrate) und 3-Spalten-Live-Ueberblick (Auffaellige Trades 24h, Warnungen & Fehler heute aus den JSONL-Logs, Supervisor-KI Bericht). Periodische Aktualisierung alle 30 s eingebaut. - A3 (Copytrading): Master-Trader Werkzeugleiste um 'Neu' (AddNewTrader) und 'Loeschen' (DeleteSelectedTrader mit DialogWindow.Confirm) erweitert. - A4 (Terminal): Log-Kontextmenue fuer 'Kopieren' und 'Alles auswaehlen' an die Live-Log-Ausgabe angefuegt. Verifiziert: Solution baut fehlerfrei, 450 Tests gruen, --smoke-ui test erfolgreich. Co-Authored-By: Antigravity AI --- .../ViewModels/LauncherViewModels.cs | 44 +++ .../Views/LauncherWindow.axaml | 105 ++++++- .../Views/LauncherWindow.axaml.cs | 268 +++++++++++++++++- .../Views/Modules/CopyTradingWindow.axaml | 4 +- .../Views/Modules/CopyTradingWindow.axaml.cs | 37 ++- .../Views/TerminalWindow.axaml | 6 + .../Views/TerminalWindow.axaml.cs | 9 +- 7 files changed, 454 insertions(+), 19 deletions(-) create mode 100644 src/PolyTrader.App.Avalonia/ViewModels/LauncherViewModels.cs diff --git a/src/PolyTrader.App.Avalonia/ViewModels/LauncherViewModels.cs b/src/PolyTrader.App.Avalonia/ViewModels/LauncherViewModels.cs new file mode 100644 index 0000000..a0b473b --- /dev/null +++ b/src/PolyTrader.App.Avalonia/ViewModels/LauncherViewModels.cs @@ -0,0 +1,44 @@ +using Avalonia.Media; +using PolyTrader.App.Avalonia.Shell; + +namespace PolyTrader.App.Avalonia.ViewModels +{ + /// Anzeige-Zeile der Account-Übersicht im Launcher. + public sealed class AccountOverviewRow + { + public int AccountId { get; init; } + public string Name { get; init; } = string.Empty; + public string Modules { get; init; } = string.Empty; + public string WalletAddress { get; init; } = string.Empty; + public decimal Balance { get; init; } + public decimal Pnl3d { get; init; } + public decimal WinRate3d { get; init; } + public decimal OverallPnl { get; init; } + } + + /// Anzeige-Zeile für auffällige Trades der letzten 24 Stunden. + public sealed class NotableTradeRow + { + public string Module { get; init; } = string.Empty; + public string Market { get; init; } = string.Empty; + public decimal Pnl { get; init; } + public decimal PnlPct { get; init; } + } + + /// Anzeige-Zeile für Warnungen & Fehler aus den Tages-JSONL-Logs. + public sealed class LogAlertRow + { + public string Time { get; init; } = string.Empty; + public string Level { get; init; } = string.Empty; + public string Message { get; init; } = string.Empty; + } + + /// Kachel-Datenmodell für Modul-PnL/Winrate im Launcher. + public sealed class ModuleKpiTile + { + public string ModuleName { get; init; } = string.Empty; + public string Text { get; init; } = string.Empty; + public bool IsPositive { get; init; } = true; + public IBrush ForegroundBrush => ThemeManager.Brush(IsPositive ? "AppPositiveBrush" : "AppNegativeBrush"); + } +} diff --git a/src/PolyTrader.App.Avalonia/Views/LauncherWindow.axaml b/src/PolyTrader.App.Avalonia/Views/LauncherWindow.axaml index afd6ef3..d9e66d2 100644 --- a/src/PolyTrader.App.Avalonia/Views/LauncherWindow.axaml +++ b/src/PolyTrader.App.Avalonia/Views/LauncherWindow.axaml @@ -2,20 +2,16 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:controls="using:PolyTrader.App.Avalonia.Controls" xmlns:shell="using:PolyTrader.App.Avalonia.Shell" + xmlns:vm="using:PolyTrader.App.Avalonia.ViewModels" x:Class="PolyTrader.App.Avalonia.Views.LauncherWindow" Title="PolyTrader" - Width="1600" Height="700" + Width="1600" Height="900" WindowState="Maximized"> @@ -65,10 +61,97 @@ - + + + + + + + + + +