feat: v0.2.0 — API REST, TTS support, documentazione completa e UI mobile-first

✨ Nuove funzionalità:
- Nuovo endpoint API REST /api/v1/query (GET+POST) per consumo programmatico
- Campo speakable_text ottimizzato per sintesi vocale (Alexa, Google Home)
- Funzione strip_markdown() per conversione Markdown → plain text TTS
- Supporto CORS per accesso cross-origin
- UI responsive mobile-first con micro-interazioni e stati
- Nuovo pulsante 'Nuova ricerca' e metadata bar

📚 Documentazione completa:
- docs/ARCHITECTURE.md — architettura di sistema, stack, componenti
- docs/FLOW.md — diagrammi Mermaid della pipeline e flussi
- docs/API.md — documentazione endpoint REST con esempi curl
- docs/WIKI.md — FAQ, glossario, roadmap
- docs/DEPLOYMENT.md — guida deployment (Gunicorn, Nginx, Docker, systemd)
- docs/CONTRIBUTING.md — guida alla contribuzione

🔧 Migliorie tecniche:
- Pipeline di ricerca condivisa in _run_search_pipeline()
- Gestione errori Gemini migliorata con _clean_error()
- Sanitizzazione HTML con allowlist per prevenzione XSS
- .env.example completo con commenti

🧪 Test: 109/109 passati
This commit is contained in:
Sibilla committed 2026-07-18 10:05:46 +00:00
1 parent f3fe13c60e
commit 76bc667adf
20 files changed
+3385 -245

No files matched your search

+29 -12
View File
@@ -1,21 +1,38 @@
# Google AI API Key — ottenila da https://aistudio.google.com/apikey
GOOGLE_API_KEY=your-api-key-here
# ═══════════════════════════════════════════════════════════════
# Sibilla Configuration Template
# ═══════════════════════════════════════════════════════════════
#
# Copia questo file in .env e modifica i valori:
# cp .env.example .env
# ── Search backends (cascading: Degoog → SearXNG → DuckDuckGo) ──
# Google Gemini API key (obbligatoria)
# Ottienila gratis: https://aistudio.google.com/apikey
GOOGLE_API_KEY=la-tua-api-key
# Degoog (primary) — self-hosted metasearch, default port 4444
# Flask secret key (cambiala in produzione!)
# Generane una con: python -c "import secrets; print(secrets.token_hex(32))"
SECRET_KEY=dev-secret-key-change-me
# ── Server ───────────────────────────────────────────────────
# Host e porta del server Flask
SIBILLA_HOST=127.0.0.1
SIBILLA_PORT=5000
# Debug mode (0 = off, 1 = on)
# ⚠️ NON usare SIBILLA_DEBUG=1 in produzione!
SIBILLA_DEBUG=1
# ── Search Engines ────────────────────────────────────────────
# Degoog (primary) — motore di ricerca self-hosted
# Avvia con: docker run -d --name degoog -p 4444:4444 ghcr.io/degoog-org/degoog:latest
DEGOOG_URL=http://localhost:4444
# SearXNG (fallback 1) — self-hosted metasearch, default port 8080
# SearXNG (secondary, fallback) — motore di ricerca self-hosted
# Avvia con: docker run -d -p 8080:8080 searxng/searxng
SEARXNG_URL=http://localhost:8080
# DuckDuckGo (fallback 2) — nessun server richiesto
# DuckDuckGo fallback (1 = on, 0 = off)
# Funziona senza server — scraping HTML, nessuna API key necessaria
SIBILLA_DDG_FALLBACK=1
# ── Flask ──
SECRET_KEY=change-me-to-a-random-string
SIBILLA_HOST=127.0.0.1
SIBILLA_PORT=5000
SIBILLA_DEBUG=1