127 lines
2.1 KiB
Markdown
127 lines
2.1 KiB
Markdown
# Observer Right Rail V1
|
|
|
|
Ten dokument opisuje kompaktowy widget `Bot State Machine` w prawej kolumnie visualizera.
|
|
|
|
## Cel
|
|
|
|
Prawy panel ma pokazywać operatorowi stale widoczny summary stanu bota bez przełączania na dolny tab `Bot`.
|
|
|
|
Widget nie zastępuje pełnego panelu debugowego na dole.
|
|
|
|
Podział odpowiedzialności:
|
|
- prawa kolumna: aktualny stan operacyjny bota
|
|
- dolny tab `Bot`: szczegóły, event feed, feature snapshot, debug
|
|
|
|
## Źródło danych
|
|
|
|
Widget używa dokładnie tego samego payloadu co dolny panel:
|
|
|
|
- `GET /api/v1/bots?limit=100`
|
|
- `GET /api/v1/bots/:id/state`
|
|
- `GET /api/v1/bots/:id/events?limit=24`
|
|
|
|
Nie wprowadza nowych endpointów.
|
|
|
|
## Schema summary
|
|
|
|
Widget czyta tylko podzbiór istniejącego kontraktu `bot_state.state`.
|
|
|
|
### `bot_config`
|
|
|
|
- `id`
|
|
- `name`
|
|
- `market_name`
|
|
- `mode`
|
|
- `kill_switch`
|
|
|
|
### `bot_state`
|
|
|
|
- `last_heartbeat_at`
|
|
- `last_error`
|
|
- `state`
|
|
|
|
### `bot_state.state`
|
|
|
|
Pola używane w prawym panelu:
|
|
|
|
```json
|
|
{
|
|
"status": "observe",
|
|
"mode": "observe",
|
|
"observe_only": true,
|
|
"last_snapshot": {
|
|
"query_latency_ms": 82,
|
|
"data_age_ms": 214
|
|
},
|
|
"last_gates": {
|
|
"fresh": true,
|
|
"spread_ok": true,
|
|
"slippage_ok": true,
|
|
"depth_ok": true,
|
|
"all": true
|
|
},
|
|
"last_decision": {
|
|
"side": "long",
|
|
"confidence": 0.72,
|
|
"target_notional_usd": 500,
|
|
"skip_reason": null
|
|
},
|
|
"counters": {
|
|
"loops": 1012,
|
|
"errors": 1
|
|
}
|
|
}
|
|
```
|
|
|
|
## Sekcje widgetu
|
|
|
|
### 1. State Machine
|
|
|
|
Stała linia etapów:
|
|
|
|
- `off`
|
|
- `observe`
|
|
- `paper`
|
|
- `trade`
|
|
- `panic`
|
|
|
|
Aktywny etap wybieramy z:
|
|
1. `state.status`
|
|
2. `state.mode`
|
|
3. `bot.mode`
|
|
|
|
Jeśli `kill_switch === true`, etap `panic` ma priorytet wizualny.
|
|
|
|
### 2. Runtime Summary
|
|
|
|
- `desired mode`
|
|
- `runtime status`
|
|
- `heartbeat age`
|
|
- `data age`
|
|
- `query latency`
|
|
|
|
### 3. Decision Summary
|
|
|
|
- `side`
|
|
- `confidence`
|
|
- `target_notional_usd`
|
|
- `skip_reason` jeśli istnieje
|
|
|
|
### 4. Gates
|
|
|
|
Kompaktowe chipy:
|
|
- `fresh`
|
|
- `spread`
|
|
- `slippage`
|
|
- `depth`
|
|
|
|
## Zakres V1
|
|
|
|
V1 dodaje tylko read-only summary do prawej kolumny.
|
|
|
|
Poza zakresem:
|
|
- mutacje `mode`
|
|
- `kill-switch` z UI
|
|
- event feed po prawej
|
|
- pełna historia decyzji po prawej
|