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 <antigravity@google.com>
This commit is contained in:
Richard
2026-08-10 10:48:27 +02:00
co-authored by Antigravity AI
parent 29ea62fc7f
commit 7f0b05e9ba
7 changed files with 454 additions and 19 deletions
@@ -0,0 +1,44 @@
using Avalonia.Media;
using PolyTrader.App.Avalonia.Shell;
namespace PolyTrader.App.Avalonia.ViewModels
{
/// <summary>Anzeige-Zeile der Account-Übersicht im Launcher.</summary>
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; }
}
/// <summary>Anzeige-Zeile für auffällige Trades der letzten 24 Stunden.</summary>
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; }
}
/// <summary>Anzeige-Zeile für Warnungen & Fehler aus den Tages-JSONL-Logs.</summary>
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;
}
/// <summary>Kachel-Datenmodell für Modul-PnL/Winrate im Launcher.</summary>
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");
}
}