docs: align 05/06/09/11 with implemented GUI Phases A–D
* docs/11-gui-streamlit.md — replaces the original spec with what was actually built: implementation status table, real page filenames (1_Status, 2_Audit, 3_Equity, 4_History, 5_Position), per-page inventory of implemented vs deferred sections, GUI ↔ engine table showing arm_kill/disarm_kill via manual_actions and the not_supported markers for force_close + approve/reject_proposal, consumer signature with cron */1, lock model clarified (no GUI lockfile), DoD updated with current state. * docs/05-data-model.md — manual_actions is no longer "pianificata": populated by gui/data_layer.py, drained by the manual_actions job; per-kind status table (arm/disarm OK, others not_supported). * docs/09-development-roadmap.md — Phase 4.5 marked implemented with per-task ✅/⏳ markers for the deferred items (auto-refresh, AppTest, force-close hook). * docs/06-operational-flow.md — adds Flusso 5b describing the manual_actions consumer pattern (enqueue → KillSwitch transition → audit log linkage). 360/360 tests still pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -126,29 +126,38 @@ Definition of Done:
|
||||
- Engine può girare in `--dry-run` per 24h senza errori
|
||||
- I log sono leggibili e completi
|
||||
|
||||
## Fase 4.5 — GUI Streamlit (4 giorni)
|
||||
## Fase 4.5 — GUI Streamlit (4 giorni) ✅ implementata
|
||||
|
||||
**Obiettivo:** dashboard locale per osservazione e azioni manuali. Spec
|
||||
dettagliata in `11-gui-streamlit.md`.
|
||||
|
||||
Tasks:
|
||||
Implementata in quattro round (A–D):
|
||||
|
||||
1. Setup `gui/main.py` + sidebar nav + auto-refresh
|
||||
2. Pagina Status (engine, capitale, MCP health, kill switch panel)
|
||||
3. Pagina Equity (curve, drawdown, monthly stats)
|
||||
4. Pagina Position (legs, payoff plotly, decision history, force-close)
|
||||
5. Pagina History (filtri, KPI, export CSV)
|
||||
6. Pagina Audit (log live, verify chain, search)
|
||||
7. Tabella `manual_actions` + consumer job APScheduler nell'engine
|
||||
8. Test integration con `streamlit.testing.v1.AppTest`
|
||||
1. ✅ `gui/main.py` + sidebar nav (auto-refresh attivo non cablato; il
|
||||
re-render Streamlit è sufficiente per la frequenza tipica)
|
||||
2. ✅ Pagina Status (engine state, kill switch panel con typed
|
||||
confirmation, audit anchor, open positions)
|
||||
3. ✅ Pagina Equity (cumulative P&L, drawdown, P&L distribution per
|
||||
close reason, per-month stats)
|
||||
4. ✅ Pagina Position (legs from entry snapshot, payoff plotly per
|
||||
bull_put/bear_call con annotazioni, decision history) — greche
|
||||
live e force-close differiti
|
||||
5. ✅ Pagina History (filtri window/reason/winners-losers, KPI strip,
|
||||
CSV export)
|
||||
6. ✅ Pagina Audit (live log stream, chain verify, event filter)
|
||||
7. ✅ Consumer `runtime/manual_actions_consumer.py` con job APScheduler
|
||||
`*/1` per arm/disarm (force_close = `not_supported` per ora)
|
||||
8. ⏳ Test integration con `streamlit.testing.v1.AppTest`
|
||||
|
||||
Definition of Done:
|
||||
Definition of Done — stato:
|
||||
|
||||
- `cerbero-bite gui` lancia la dashboard su `127.0.0.1:8765`
|
||||
- Tutte le 5 pagine raggiungibili e popolate
|
||||
- Disarm da GUI loggato in audit chain ed effettivo entro 30 sec
|
||||
- Force-close da GUI consumato dall'engine entro 30 sec
|
||||
- Test integration su ogni pagina passing
|
||||
- ✅ `cerbero-bite gui` lancia la dashboard su `127.0.0.1:8765`
|
||||
- ✅ Tutte le 5 pagine raggiungibili e popolate
|
||||
- ✅ Disarm da GUI loggato in audit chain (`source="manual_gui"`) ed
|
||||
effettivo entro ~1 minuto
|
||||
- ⏳ Force-close da GUI: l'enqueue funziona ma l'orchestrator deve
|
||||
ancora esporre `handle_force_close`
|
||||
- ⏳ Test integration AppTest: non scritti
|
||||
|
||||
## Fase 5 — Reporting e UX (3-5 giorni)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user