DD-MARKET-INSIGHTS.md
Versione: 1.0 Data: 2025-10-27 Scopo: Descrivere l’architettura reattiva e il flusso di dati del sottosistema Market Insights. Documento Principale: FIRE 25.07 - ARCHITECTURE-OVERVIEW
1. Panoramica e Principi di Design
Il “Market Insights” è il “microscopio” di FIRE. Il suo scopo è fornire un’analisi quantitativa approfondita (statistiche descrittive, riconoscimento di pattern) su un singolo ticker, fungendo da cruscotto dinamico per comprenderne la “personalità” storica.
Il principio di design fondamentale di questo sottosistema è la reattività totale. A differenza di altri pannelli che richiedono un’azione esplicita dell’utente (es. “Run Scan”), il Market Insights è progettato per aggiornarsi automaticamente in risposta ai cambiamenti del contesto globale.
2. Architettura e Componenti Chiave
-
MarketInsightsWidget(Componente UI Reattivo):- Responsabilità: È il contenitore principale dei risultati. La sua responsabilità chiave è ascoltare i segnali di cambiamento emessi da
AppState. Quando rileva un cambiamento nel ticker o nell’intervallo di date globale, avvia automaticamente un’analisi in background. Non contiene controlli di input manuali.
- Responsabilità: È il contenitore principale dei risultati. La sua responsabilità chiave è ascoltare i segnali di cambiamento emessi da
-
DataAnalysisWorker(Worker Asincrono):- Responsabilità: Eseguire tutti i calcoli statistici e di pattern recognition in un thread separato per non bloccare mai la UI. Riceve i parametri (ticker, date, tipo di analisi) dal
MarketInsightsWidget.
- Responsabilità: Eseguire tutti i calcoli statistici e di pattern recognition in un thread separato per non bloccare mai la UI. Riceve i parametri (ticker, date, tipo di analisi) dal
-
AppState(Fonte di Verità):- Responsabilità: Agisce come trigger per l’intero sottosistema. I segnali
ticker_changedeglobal_date_range_changeddiAppStatesono il motore che guida il funzionamento reattivo del pannello.
- Responsabilità: Agisce come trigger per l’intero sottosistema. I segnali
-
PandasTableModel(Modello Dati):- Responsabilità: Un modello Qt standard che funge da ponte tra i dati tabellari prodotti dal worker (in formato
pandas.DataFrame) e laQTableViewdella UI, garantendo performance e una corretta visualizzazione.
- Responsabilità: Un modello Qt standard che funge da ponte tra i dati tabellari prodotti dal worker (in formato
3. Flusso dei Dati (Architettura Reattiva)
- Trigger (Evento Globale): L’utente compie un’azione che modifica lo stato globale. Ad esempio:
- Seleziona un nuovo ticker nel
Watchlist Manager. - Cambia le date nella toolbar principale.
- Seleziona un nuovo ticker nel
- Reazione (Segnale e Slot):
AppStateemette un segnale (es.ticker_changed). IlMarketInsightsWidget, che è connesso a questo segnale, esegue il suo slot_trigger_analysis. - Orchestrazione (Thread Principale): Lo slot
_trigger_analysislegge il contesto attuale daAppState(il nuovo ticker, le nuove date) e il tipo di analisi selezionato nella sua UI. Quindi, istanzia e avvia ilDataAnalysisWorkerin un nuovo thread. - Esecuzione (Thread in Background): Il worker recupera i dati tramite il
DataManager, esegue i calcoli e, al termine, emette un segnalefinishedcon i risultati. - Visualizzazione (UI): Lo slot
on_analysis_finishednelMarketInsightsWidgetriceve i risultati, li passa alPandasTableModele aggiorna laQTableView, presentando i nuovi dati all’utente senza che questi abbia dovuto cliccare alcun pulsante.