2. Le Regole di “Buona Cittadinanza”

L’adozione delle pratiche di “buona cittadinanza” garantisce che l’estensione sia coerente con il Design System di FIRE, manutenibile nel tempo e integrata nativamente nelle funzionalità di sistema (come il cambio tema).

1. Accesso ai Dati (Data Sovereignty)

L’estensione deve interagire con i dati di mercato esclusivamente tramite il DataManager interno.

  • Cosa: Utilizzo di context.data.fetch().
  • Come: df = context.data.fetch(ticker, start_date, end_date, timeframe).
  • Perché serve: Garantisce l’uso della cache locale, il rispetto delle rettifiche prezzi (Split/Dividendi) impostate dall’utente e la normalizzazione dei formati. Evita l’overhead di librerie esterne (es. yfinance) e il rischio di conflitti di versione.

2. UI Semantica (Dashboard API)

La costruzione dell’interfaccia deve avvenire tramite componenti astratti forniti dall’SDK, evitando la scrittura di HTML/CSS manuale.

  • Cosa: Astrazione del layout tramite ScriptDashboard.
  • Come:
    1. dash = context.ui.create_dashboard("Titolo Analisi")
    2. dash.add_metric(label, value, variant="success")
    3. context.ui.show_dashboard(dash)
  • Perché serve: Abilita l’Adaptive Mode (cambio Dark/Light automatico) e assicura che card, font e spaziature siano identiche al “Gold Standard” di FIRE.

Varianti Semantiche:

  • info: Accento Brand (Arancione).
  • success: Trading Bullish/Sicurezza (Verde).
  • warning: Cautela (Giallo/Arancio).
  • danger: Rischio Critico (Rosso).

3. Smart Style per Grafici Plotly

I grafici generati esternamente devono essere processati dal motore estetico di FIRE.

  • Cosa: Metodo apply_fire_style.
  • Come: fig = context.ui.apply_fire_style(fig, is_report=True).
  • Perché serve: Implementa lo Smart Contrast (regola il colore di font e griglie per la leggibilità su sfondo chiaro/scuro), inserisce la firma del brand e attiva gli script di resize responsivo.

4. Gestione delle Risorse

Utilizzo del ResourceManager centralizzato per elementi grafici personalizzati.

  • Cosa: ResourceManager.get_icon().
  • Come: btn.setIcon(ResourceManager.get_icon("custom-icon.svg")).
  • Perché serve: Sfrutta il Dynamic Tinting (colora automaticamente gli SVG di bianco o nero in base al tema) e il caching in RAM per massimizzare le performance della UI.

💡 Nota operativa: Uno script che non utilizza la Dashboard API risulterà visivamente alieno al resto della piattaforma e richiederà manutenzione manuale a ogni aggiornamento del Design System.