Sichtpruefung mit Testdaten: die Grids in Aktion, vier weitere Befunde
CI / Build & Tests (Linux) (push) Canceled after 0s
CI / Plattformneutralität & Hygiene (push) Canceled after 0s

Testdaten in die Testdatenbank eingespielt (3 Demo-Konten, 5 Master-Trader,
3 offene Positionen, 7 Trades, 5 RF-Kandidaten), gesichert als
docs/pruefplaene/testdaten-ui.sql zur Wiederverwendung. Bewusst mit
42-stelligen Wallet-Adressen und langen englischen Marktfragen - kurze
Platzhalter haetten die Layoutbefunde verdeckt.

Mit Daten wirkt die Anwendung vollstaendig funktionsfaehig: Grids fuellen sich,
die Auswahl markiert Zeilen, das Detailformular uebernimmt den gewaehlten
Datensatz, zugewiesene Konten werden korrekt angehakt, KPI-Kacheln rechnen.

Vier weitere Befunde:
- B-13 (wichtig): Die Spalte "Name" im Master-Trader-Grid ist auf wenige Pixel
  zusammengequetscht - die Anzeigenamen sind NIRGENDS zu sehen, obwohl sie die
  wichtigste Information der Zeile sind. Die festen Breiten der elf uebrigen
  Spalten lassen der Sternbreite fast nichts uebrig.
- B-11 praezisiert: Nicht die Werte sind zu breit, sondern die Ueberschriften.
  Das RF-Grid zeigt lange Marktfragen mühelos, waehrend "Fee (bps)" zu
  "Fee (bp" verstuemmelt wird. Die Breiten sind auf die Datenwerte ausgelegt.
- B-14: Beschreibung und Reasoning sind einzeilige Felder fuer varchar(1000).
- B-15: Ein fehlerhafter Datensatz legt die gesamte Modul-Hydration lahm. Beim
  ersten Einspielen war AssignedAccountIds kein gueltiges JSON - daraufhin wurde
  kein einziger Trader geladen. Im Betrieb hiesse das: ein beschaedigter Eintrag
  legt das komplette Modul stumm, statt uebersprungen und gemeldet zu werden.

B-7 bestaetigt: In jeder KPI-Kachel steht der Modulname doppelt.

Nachgeprueft und KEIN Fehler: Copy-PnL zeigt 0,00, weil die Kennzahlen aus den
tatsaechlichen Copy-Trades berechnet werden und mod_copytrading_closed_trades
leer ist. Die Werte stehen auch in der Datenbank auf 0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-08-26 22:59:15 +02:00
co-authored by Claude Opus 5
parent a39ad67181
commit 62570cfdd8
2 changed files with 170 additions and 0 deletions
@@ -450,3 +450,105 @@ einheitlich gelten. Zumal `server_settings.xml` auch den Watchdog-Token trägt.
ausgeliefert ist. Erst dann lassen sich Spaltenbreiten (B-11), Splitter-Positionen und
Leerzustände sinnvoll beurteilen. Das Verfahren dafür ist dokumentiert und wiederholbar:
[TESTUMGEBUNG-Linux-VM.md](../TESTUMGEBUNG-Linux-VM.md) §4.7.
---
# Nachtrag 4: Sichtprüfung mit Testdaten
Nach der Behebung von B-10 wurden **Testdaten** in die Testdatenbank eingespielt, um die Tabellen
in Betrieb zu sehen: 3 Demo-Konten, 5 Master-Trader, 3 offene Positionen, 7 abgeschlossene Trades,
5 ResolutionFarming-Kandidaten. Wiederverwendbar als
[`testdaten-ui.sql`](./testdaten-ui.sql).
> **Bewusst realistisch:** 42-stellige Wallet-Adressen und lange englische Marktfragen. Kurze
> Platzhalter wie „Test 1" hätten die Befunde B-11 und B-13 verdeckt.
**Das war der entscheidende Schritt.** Mit Daten zeigt sich in Minuten, was ohne sie unsichtbar
bleibt — die Anwendung wirkt jetzt vollständig funktionsfähig: Grids füllen sich, die Auswahl
markiert Zeilen, das Detailformular übernimmt den gewählten Datensatz, zugewiesene Konten werden
korrekt angehakt, KPI-Kacheln rechnen, die Trade-Historie erscheint.
## B-13 · Die Spalte „Name" ist unsichtbar zusammengequetscht · offen · **wichtig**
Im Master-Trader-Grid ist die Spalte **Name** (`Width="*"`) auf wenige Pixel zusammengedrückt.
Die Anzeigenamen — *WeatherWhale*, *PolitiSniper*, *SportsEdge Capital* — sind **nirgends im Grid
zu sehen**, obwohl sie die wichtigste Information der Zeile sind. Sichtbar ist nur die
abgeschnittene Wallet-Adresse (`0x9e2b7f4a1c8d0e5b…`, 18 von 42 Zeichen).
**Ursache:** Die festen Breiten der elf übrigen Spalten summieren sich auf mehr, als der Bereich
links vom Splitter hergibt. Die Sternbreite bekommt, was übrig bleibt — und das ist fast nichts.
**Empfehlung:** Der Name gehört nach vorn (direkt hinter `#`) und braucht eine Mindestbreite;
die Wallet-Adresse ist ein Kandidat fürs Ausblenden oder für eine Kurzform (`0x9e2b…3b95`).
## B-11 · präzisiert: Nicht die Werte sind zu breit, sondern die Überschriften
Der Vergleich zweier Grids macht die Ursache eindeutig:
| Grid | Ergebnis |
|---|---|
| **ResolutionFarming-Kandidaten** | Sieht **gut** aus. Lange Marktfragen passen fast vollständig, die Zahlen sind lesbar |
| **Master-Trader** | Überschriften abgeschnitten: `Trades (7`, `Winrate '`, `Copy-PnL`; die letzten drei Spalten ohne Text |
Auch im ResolutionFarming-Grid stehen `Outcor` statt „Outcome" und `Fee (bp` statt „Fee (bps)" —
während die Werte darunter (`Yes`, `180`) mühelos passen.
**Die Spaltenbreiten sind auf die Datenwerte ausgelegt, nicht auf die Überschriften.** Das ist ein
Muster, kein Einzelfall: Wo Werte kurz und Titel lang sind, wird der Titel abgeschnitten. Zu
beheben durch breitere Spalten oder kürzere Titel (`Fee` statt `Fee (bps)`, Einheit in den
Tooltip).
## B-14 · Mehrzeilige Texte in einzeiligen Feldern · offen, klein
Im Detailformular sind **Beschreibung** und **Reasoning** einzeilige Textfelder, obwohl die
Datenbankspalten `varchar(1000)` fassen. Sichtbar ist nur ein Bruchteil
(„Setzt fast ausschliesslich auf Tem…"). Ein mehrzeiliges Feld wäre angemessen.
## B-15 · Ein fehlerhafter Datensatz legt die gesamte Modul-Hydration lahm · offen
Beim ersten Einspielen enthielt `AssignedAccountIds` versehentlich `"1,2"` statt des erwarteten
JSON-Arrays `"[1,2]"`. Ergebnis:
```
Copytrading-Hydration fehlgeschlagen: The JSON value could not be converted to
System.Collections.Generic.HashSet`1[System.Int32]. Path: $ | LineNumber: 0
```
**Es wurde kein einziger Master-Trader geladen** — ein einzelner unlesbarer Datensatz verhindert
das Laden aller anderen. Im Betrieb hieße das: Ein beschädigter Eintrag legt das komplette Modul
still, statt übersprungen und gemeldet zu werden.
Der Fehler war hier selbst verschuldet, das Verhalten dahinter ist es nicht. **Empfehlung:**
Datensatzweise behandeln — fehlerhafte Einträge überspringen, mit Kennung protokollieren, den
Rest laden.
## B-7 · bestätigt
Mit Daten ist es eindeutig: In **jeder** KPI-Kachel steht der Modulname doppelt — als Überschrift
und als erste Textzeile („CopyTrading / CopyTrading / Heute: +26,10 USDC …").
## Kein Fehler — nachgeprüft
Die Spalte **Copy-PnL** zeigt für alle Trader `0,00`, obwohl die Testdaten Werte enthielten. Ein
Blick in die Datenbank zeigt: Die Werte stehen auch dort auf 0. Die Anwendung berechnet die
Copy-Kennzahlen aus den tatsächlichen Copy-Trades neu, und `mod_copytrading_closed_trades` ist
leer. **Korrektes Verhalten.**
## Weitere Beobachtungen aus dem Datenlauf
- **Account-Übersicht (Dashboard):** „Demo Hauptkonto (De…" und „CopyTrading, ResolutionFar…"
abgeschnitten, während rechts neben „Overall P/L" rund 300 px ungenutzt bleiben. Dasselbe Muster
wie B-11.
- **Warnungen & Fehler (Dashboard):** Die Spalte „Nachricht" ist so schmal, dass keine Meldung
vollständig lesbar ist.
- **Leerzustände** melden nichts. Wo ResolutionFarming für ein Konto ohne Kandidaten steht, bleibt
die Fläche leer — ein Hinweis „Keine Kandidaten für dieses Konto" würde die Frage beantworten,
ob gefiltert oder gar nichts geladen wurde. (Die Filterung selbst arbeitet korrekt, geprüft.)
## Empfehlung
Die Befunde B-11, B-13 und B-14 sind **Layoutarbeit an einer Stelle** und sollten zusammen
angegangen werden — am besten mit eingespielten Testdaten, weil sich Spaltenbreiten nur so
sinnvoll festlegen lassen. Das Verfahren ist reproduzierbar:
[TESTUMGEBUNG-Linux-VM.md](../TESTUMGEBUNG-Linux-VM.md) §4.7 plus `testdaten-ui.sql`.