Manuale Comandi
Tutti i comandi utili — dal setup al deploy, dal backup all'interrogazione del DB
Setup iniziale (locale)
Prima installazione
./install.sh # installa venv + dipendenze + init DB cp .env.example .env && nano .env # configura API keys e credenziali
Avvio agent (locale)
Modalità di esecuzione
./run.sh # scheduling continuo (ogni 5 min) ./run.sh --once # esegui una volta sola e fermati ./run.sh --ticker AAPL # analizza solo un ticker ./run.sh --ticker AAPL --once # analizza un ticker una volta sola
Dashboard locale
Avvio
./dashboard.sh # porta default → http://localhost:8000 ./dashboard.sh 9000 # porta personalizzata
Apre automaticamente il browser. Premi Ctrl+C per fermare.
Deploy su VPS
Comandi
./deploy.sh ubuntu@204.216.210.168 # primo deploy (setup completo) ./deploy.sh ubuntu@204.216.210.168 --update # aggiorna codice + riavvia servizi
--update è il comando da usare per ogni aggiornamento ordinario: copia i file via rsync, copia il
.env e riavvia agent + dashboard.
Servizi systemd (sul VPS)
financial-agent
sudo systemctl status financial-agent sudo systemctl start financial-agent sudo systemctl stop financial-agent sudo systemctl restart financial-agent
financial-dashboard
sudo systemctl status financial-dashboard sudo systemctl start financial-dashboard sudo systemctl stop financial-dashboard sudo systemctl restart financial-dashboard
Log
Lettura log in tempo reale (sul VPS)
sudo journalctl -u financial-agent -f # agent sudo journalctl -u financial-dashboard -f # dashboard sudo journalctl -u financial-agent -n 50 # ultime 50 righe
File di log (locale e VPS)
tail -f logs/agent_$(date +%Y%m%d).log # log file giornaliero ls -lh logs/ # elenco file di log
Scarica DB dalla VPS
fetch-db.sh
./fetch-db.sh ubuntu@204.216.210.168 # scarica e sostituisce data/financial_news.db ./fetch-db.sh ubuntu@204.216.210.168 --backup # scarica + copia con timestamp in backups/
Prima di sovrascrivere il DB locale, lo script salva automaticamente una copia in
backups/financial_news.db.pre-fetch-<timestamp>.
Esegue anche un WAL checkpoint sul server per garantire consistenza.
Interroga il DB (locale)
query_db.py — CLI interattiva
./query_db.py # menu interattivo ./query_db.py stats # statistiche generali ./query_db.py news # tutte le news (ultimi 7 giorni) ./query_db.py news ORCL # news per ticker ./query_db.py sentiment # tutte le analisi sentiment ./query_db.py sentiment ORCL # sentiment per ticker ./query_db.py recommendations # tutte le raccomandazioni ./query_db.py recommendations ORCL # raccomandazioni per ticker
Backup
backup.sh
./backup.sh # backup in backups/ (default) ./backup.sh /Volumes/Esterno/backups # backup su percorso personalizzato
Esclude automaticamente:
venv/, .git/, data/*.db, logs/, __pycache__/.
Mostra a fine esecuzione gli ultimi 5 backup disponibili.
Configurazione rapida
File principali
nano config.json # watchlist, soglie scoring, provider, intervalli nano .env # API keys e credenziali (mai su git)
| Chiave config.json | Default | Descrizione |
|---|---|---|
| sentiment_analysis.provider | openai | Algoritmo: openai / finbert / hybrid |
| sentiment_analysis.hybrid_gpt_threshold | 0.80 | Confidence FinBERT sotto cui si chiama GPT |
| sentiment_analysis.threshold_buy | 0.70 | Score minimo per segnale BUY |
| sentiment_analysis.threshold_sell | -0.50 | Score massimo per segnale SELL |
| agent.check_interval_minutes | 5 | Frequenza ciclo di analisi |
| watchlist.stocks | array | Ticker da monitorare |
| notifications.language | it | Lingua risposte GPT: it / en |
Cambia provider sentiment
Da terminale (senza aprire il file)
# Solo OpenAI GPT (default) sed -i 's/"provider": ".*"/"provider": "openai"/' config.json # Solo FinBERT locale (zero costo API) sed -i 's/"provider": ".*"/"provider": "finbert"/' config.json # Hybrid: FinBERT + GPT se confidence < 0.80 sed -i 's/"provider": ".*"/"provider": "hybrid"/' config.json # Poi riavvia il servizio sudo systemctl restart financial-agent
Endpoint REST
Base URL locale:
http://localhost:8000 — VPS: http://204.216.210.168:8000
| Metodo | Endpoint | Descrizione |
|---|---|---|
| GET | / | Dashboard HTML |
| GET | /how-it-works | Spiegazione pipeline di scoring |
| GET | /api/stats | Statistiche DB (contatori per tabella) |
| GET | /api/tickers | Lista ticker presenti nel DB |
| GET | /api/config | Config pubblica (watchlist, modello, lingua) |
| GET | /api/watchlist | Watchlist con segnale e stato analisi |
| POST | /api/watchlist/add | Aggiunge ticker {"ticker":"AAPL"} |
| POST | /api/watchlist/analyse/{ticker} | Avvia analisi background |
| GET | /api/watchlist/status/{ticker} | Stato analisi (polling) |
| DELETE | /api/watchlist/remove/{ticker} | Rimuove ticker dalla watchlist |
| GET | /api/recommendations?ticker=&days= | Raccomandazioni filtrate |
| GET | /api/recommendations/latest | Ultima raccomandazione per ticker |
| GET | /api/news?ticker=&days=&limit= | News con sentiment e provider |
| GET | /api/sentiment/history?ticker=&days= | Storico score sentiment |
| GET | /api/indicators/history?ticker=&days= | Prezzo, RSI 14, OBV |
| DELETE | /api/data/ticker/{ticker} | Cancella dati di un ticker |
| DELETE | /api/data/all | Svuota tutto il DB |