Diagramma Mermaid del Nuovo Flusso

sequenceDiagram
    participant User
    participant ScannerTab
    participant AppState
    participant BacktestOrchestrator
    participant BacktestWorker

    alt Flusso Scanner (Nuovo)
        User->>ScannerTab: Click su Risultato
        ScannerTab->>AppState: emit(strategy_visualization_requested)
        AppState->>BacktestOrchestrator: on_external_backtest_requested(ticker, path, params)
        BacktestOrchestrator->>BacktestOrchestrator: run_backtest_headless(ticker, path, params...)
    else Flusso Classico
        User->>BacktestTab: Click "Run Backtest"
        BacktestTab->>AppState: emit(request_backtest)
        AppState->>BacktestOrchestrator: on_backtest_requested()
        BacktestOrchestrator->>BacktestTab: get_current_parameters()
        BacktestOrchestrator->>StrategyEditor: get_current_path()
        BacktestOrchestrator->>BacktestOrchestrator: run_backtest_headless(...)
    end

    BacktestOrchestrator->>BacktestWorker: Start Worker

Una nota importante: L’orchestratore ha bisogno di controls_panel (BacktestTabWidget) per segnalare errori (controls_panel.on_backtest_error) e risultati (controls_panel.on_backtest_finished). Questo va bene, perché anche se il backtest parte dallo Scanner, vogliamo che i risultati finiscano nel pannello Backtest (che diventerà attivo).