Orchestrator — Server-side
Nieuw model
OrderRecord toegevoegd — velden: OrderId, Side, Price, Size, Fee, PnL, PnLPct, Timestamp
orchestrator/BbFit.Orchestrator/Models/OrderRecord.cs
StateHub uitgebreid
List<OrderRecord> _tradeHistory bijgehouden (max 20, thread-safe)
NotifyTradeAsync(OrderRecord) — voegt toe, pusht naar alle clients
OnConnectedAsync override — stuurt volledige history + Portfolio bij nieuwe verbinding
OrderManager koppeling
- Na succesvolle order:
OrderRecord aanmaken en NotifyTradeAsync() aanroepen
- PnL berekend voor sell-orders op basis van
EntryPrice
Dashboard — Client-side
OrchestratorHubService uitgebreid
OrderRecord model gespiegeld in dashboard (Models/TradeModels.cs)
- Luistert naar
TradeExecuted(OrderRecord) via SignalR
List<OrderRecord> TradeHistory property bijgehouden
TradeHistory.razor
- Tabel: Side | Prijs | Size | PnL ($) | PnL% | Timestamp — nieuwste eerst, max 20
- Kleurcodering: groen = winstgevende sell, rood = verliesgevende sell, neutraal = buy
- "Geen trades nog" lege state
OrderBook.razor — Recent Orders
- Laatste 5 orders — kolommen: Side | Prijs | Size | Status | Tijd
- Status-chips: ✓ geplaatst / ✗ mislukt
Acceptatiecriteria (Must)
- Build slaagt met 0 errors en 0 warnings
- TradeHistory toont bestaande trades direct na verbinding (push op
OnConnectedAsync)
- Nieuwe trade verschijnt in TradeHistory zonder pagina-refresh
- PnL-berekening correct voor sell-orders
- Geen polling — uitsluitend SignalR push
- Bestaande componenten (Portfolio, SignalDisplay, HealthStatus) blijven werken — geen regressies
Buiten scope
- Authenticatie
- Historische data ophalen via REST
- OHLC-grafiek
- Live order book van Kraken (bids/asks)
- Fase 3 integratie + E2E tests