- T55: Setup APScheduler with AsyncIOScheduler and @scheduled_job decorator - T56: Implement hourly usage stats sync from OpenRouter API - T57: Implement daily API key validation job - T58: Implement weekly cleanup job for old usage stats - Add usage_stats_retention_days config option - Integrate scheduler with FastAPI lifespan events - Add 26 unit tests for scheduler, sync, and cleanup tasks - Add apscheduler to requirements.txt The background tasks now automatically: - Sync usage stats every hour from OpenRouter - Validate API keys daily at 2 AM UTC - Clean up old data weekly on Sunday at 3 AM UTC
5.9 KiB
5.9 KiB
TODO - OpenRouter API Key Monitor
✅ Completato (MVP Backend)
- Setup progetto e struttura (T01-T05)
- Database e Models SQLAlchemy (T06-T11)
- Servizi di sicurezza (AES-256, bcrypt, JWT) (T12-T16)
- Autenticazione utenti (register, login, logout) (T17-T22)
- Gestione API Keys OpenRouter (CRUD) (T23-T29)
- Dashboard e statistiche (T30-T34)
- API Pubblica v1 con rate limiting (T35-T40)
- Gestione Token API (T41-T43)
- Documentazione base (README)
- Docker support (Dockerfile, docker-compose.yml)
🔄 In Progress / TODO Prossimi Passi
🔧 Backend - Miglioramenti (T44-T54)
Background Tasks (T55-T58) - ALTA PRIORITÀ
-
T55: Setup APScheduler per task periodici
- Installare e configurare APScheduler
- Creare struttura task base
- Scheduler configurabile (interval, cron)
-
T56: Task sincronizzazione OpenRouter
- Chiamare API OpenRouter ogni ora per ogni API key
- Recuperare usage stats (richieste, token, costi)
- Salvare in UsageStats table
- Gestire rate limiting di OpenRouter
-
T57: Task validazione API keys
- Verificare validità API keys ogni giorno
- Aggiornare flag is_active
- Notificare utente se key invalida
-
T58: Task cleanup dati vecchi
- Rimuovere UsageStats più vecchi di X giorni (configurabile)
- Mantenere solo dati aggregati
- Log operazioni
🎨 Frontend Web (T44-T54) - MEDIA PRIORITÀ
Setup Frontend (T44-T46)
-
T44: Configurare FastAPI per servire static files
- Mount directory /static
- Configurare Jinja2 templates
- Struttura templates/ directory
-
T45: Creare base template HTML
- Layout base con header, footer
- Include CSS framework (Bootstrap, Tailwind, o Pico.css)
- Meta tags, favicon
-
T46: Configurare HTMX
- Aggiungere HTMX CDN
- Configurare CSRF token
- Setup base per richieste AJAX
Pagine Autenticazione (T47-T49)
-
T47: Pagina Login (/login)
- Form email/password
- Validazione client-side
- Redirect dopo login
- Messaggi errore
-
T48: Pagina Registrazione (/register)
- Form completo
- Validazione password strength
- Conferma registrazione
-
T49: Pagina Logout
- Conferma logout
- Redirect a login
Pagine Principali (T50-T54)
-
T50: Dashboard (/dashboard)
- Card riepilogative
- Grafici utilizzo (Chart.js o ApexCharts)
- Tabella modelli più usati
- Grafico andamento temporale
-
T51: Gestione API Keys (/keys)
- Tabella keys con stato
- Form aggiunta key
- Bottone test validità
- Modifica/Eliminazione inline con HTMX
-
T52: Statistiche Dettagliate (/stats)
- Filtri per data, key, modello
- Tabella dettagliata
- Esportazione CSV
- Paginazione
-
T53: Gestione Token API (/tokens)
- Lista token con ultimo utilizzo
- Form generazione nuovo token
- Mostrare token SOLO al momento creazione
- Bottone revoca
-
T54: Profilo Utente (/profile)
- Visualizzazione dati
- Cambio password
- Eliminazione account
🔐 Sicurezza & Hardening (Opzionale)
- Implementare CSRF protection per form web
- Aggiungere security headers (HSTS, CSP)
- Rate limiting più granulari (per endpoint)
- Audit log per operazioni critiche
- 2FA (Two Factor Authentication)
- Password reset via email
📊 Monitoring & Logging (Opzionale)
- Configurare logging strutturato (JSON)
- Aggiungere Prometheus metrics
- Dashboard Grafana per monitoring
- Alerting (email/Slack) per errori
- Health checks avanzati
🚀 DevOps & Deploy (Opzionale)
-
CI/CD Pipeline:
- GitHub Actions per test automatici
- Build e push Docker image
- Deploy automatico
-
Deploy Produzione:
- Configurazione Nginx reverse proxy
- SSL/TLS con Let's Encrypt
- Backup automatico database
- Monitoring con Prometheus/Grafana
-
Scalabilità:
- Supporto PostgreSQL (opzionale al posto di SQLite)
- Redis per caching e rate limiting
- Load balancing
📱 Feature Aggiuntive (Wishlist)
-
Notifiche:
- Email quando costo supera soglia
- Alert quando API key diventa invalida
- Report settimanale/mensile
-
Integrazioni:
- Webhook per eventi
- Slack/Discord bot
- API v2 con più funzionalità
-
Multi-team (Fase 3 dal PRD):
- Organizzazioni/Team
- Ruoli e permessi (RBAC)
- Billing per team
-
Mobile App:
- PWA (Progressive Web App)
- Responsive design completo
- Push notifications
🐛 Bug Conosciuti / Fix necessari
- Verificare warning
datetime.utcnow()deprecato (usaredatetime.now(UTC)) - Fix test routers che falliscono per problemi di isolation DB
- Aggiungere gestione errori più specifica per OpenRouter API
- Ottimizzare query statistiche per grandi dataset
📚 Documentazione da Completare
- API Documentation (OpenAPI/Swagger già disponibile su /docs)
- Guida contributori (CONTRIBUTING.md)
- Changelog (CHANGELOG.md)
- Documentazione deploy produzione
- Tutorial video/guida utente
🎯 Priorità Consigliate
Settimana 1-2: Background Tasks (Fondamentale)
- Implementare T55-T58 (sincronizzazione automatica)
- Test integrazione con OpenRouter
- Verificare funzionamento end-to-end
Settimana 3-4: Frontend Base (Importante)
- Setup frontend (T44-T46)
- Pagine auth (T47-T49)
- Dashboard base (T50)
Settimana 5+: Polish & Deploy
- Completare pagine frontend rimanenti
- Bug fixing
- Deploy in produzione
📊 Metriche Obiettivo
- Coverage test > 95%
- Load test: supportare 100 utenti concorrenti
- API response time < 200ms (p95)
- Zero vulnerabilità di sicurezza critiche
🤝 Contributi Richiesti
- Frontend developer per UI/UX
- DevOps per pipeline CI/CD
- Beta tester per feedback
Ultimo aggiornamento: $(date +%Y-%m-%d)
Stato: MVP Backend Completato 🎉 Prossimo milestone: Frontend Web + Background Tasks