Files
openrouter-watcher/export/progress.md
Luca Sacchi Ricciardi 02473bc39e feat(schemas): T17 add Pydantic auth schemas
Add authentication schemas for user registration and login:
- UserRegister: email, password (with strength validation), password_confirm
- UserLogin: email, password
- UserResponse: id, email, created_at, is_active (orm_mode=True)
- TokenResponse: access_token, token_type, expires_in
- TokenData: user_id, exp

Includes field validators for password strength and password confirmation matching.

Test coverage: 19 tests for all schemas
2026-04-07 13:52:33 +02:00

201 lines
7.1 KiB
Markdown

# Progress Tracking
## Feature: Fase 1 - MVP OpenRouter API Key Monitor
---
## 📊 Stato Generale
| Metrica | Valore |
|---------|--------|
| **Stato** | 🟢 Security Services Completati |
| **Progresso** | 23% |
| **Data Inizio** | 2024-04-07 |
| **Data Target** | TBD |
| **Task Totali** | 74 |
| **Task Completati** | 17 |
| **Task In Progress** | 0 |
---
## 🎯 Obiettivi Fase 1 (MVP)
### Core Features
1.**Autenticazione utenti** (registrazione/login JWT)
2.**CRUD API key** (cifrate AES-256)
3.**Dashboard statistiche base** (aggregazione dati)
4.**API pubblica autenticata** (sola lettura)
### Requisiti Non Funzionali
- [ ] Tempo di risposta web < 2 secondi
- [ ] API response time < 500ms
- [ ] Supporto 100+ utenti concorrenti
- [ ] Test coverage >= 90%
- [ ] Sicurezza: AES-256, bcrypt, JWT, rate limiting
---
## 📋 Task Pianificate
### 🔧 Setup Progetto (T01-T05) - 5/5 completati
- [x] T01: Creare struttura cartelle progetto (2024-04-07)
- [x] T02: Inizializzare virtual environment e .gitignore (2024-04-07)
- [x] T03: Creare requirements.txt con dipendenze (2024-04-07)
- [x] T04: Setup file configurazione (.env, config.py) (2024-04-07)
- [x] T05: Configurare pytest e struttura test (2024-04-07)
### 🗄️ Database & Models (T06-T11) - 6/6 completati
- [x] T06: Creare database.py (connection & session) - ✅ Completato (2026-04-07 11:00)
- [x] T07: Creare model User (SQLAlchemy) - ✅ Completato (2026-04-07 11:15)
- [x] T08: Creare model ApiKey (SQLAlchemy) - ✅ Completato (2026-04-07 11:15)
- [x] T09: Creare model UsageStats (SQLAlchemy) - ✅ Completato (2026-04-07 11:15)
- [x] T10: Creare model ApiToken (SQLAlchemy) - ✅ Completato (2026-04-07 11:15)
- [x] T11: Setup Alembic e creare migrazione iniziale - ✅ Completato (2026-04-07 11:20)
### 🔐 Servizi di Sicurezza (T12-T16) - 5/5 completati
- [x] T12: Implementare EncryptionService (AES-256) - ✅ Completato (2026-04-07 12:00, commit: 2fdd9d1)
- [x] T13: Implementare password hashing (bcrypt) - ✅ Completato (2026-04-07 12:15, commit: 54e8116)
- [x] T14: Implementare JWT utilities - ✅ Completato (2026-04-07 12:30, commit: 781e564)
- [x] T15: Implementare API token generation - ✅ Completato (2026-04-07 12:45, commit: 649ff76)
- [x] T16: Scrivere test per servizi di sicurezza - ✅ Completato (test inclusi in T12-T15)
**Progresso sezione:** 100% (5/5 task)
**Test totali servizi:** 71 test passanti
**Coverage servizi:** 100%
### 👤 Autenticazione Utenti (T17-T22) - 1/6 completati
- [x] T17: Creare Pydantic schemas auth (register/login) - ✅ Completato (2026-04-07 14:30)
- [ ] T18: Implementare endpoint POST /api/auth/register - 🟡 In progress
- [ ] T19: Implementare endpoint POST /api/auth/login
- [ ] T20: Implementare endpoint POST /api/auth/logout
- [ ] T21: Creare dipendenza get_current_user
- [ ] T22: Scrivere test per auth endpoints
### 🔑 Gestione API Keys (T23-T29) - 0/7 completati
- [ ] T23: Creare Pydantic schemas per API keys
- [ ] T24: Implementare POST /api/keys (create)
- [ ] T25: Implementare GET /api/keys (list)
- [ ] T26: Implementare PUT /api/keys/{id} (update)
- [ ] T27: Implementare DELETE /api/keys/{id}
- [ ] T28: Implementare servizio validazione key
- [ ] T29: Scrivere test per API keys CRUD
### 📊 Dashboard & Statistiche (T30-T34) - 0/5 completati
- [ ] T30: Creare Pydantic schemas per stats
- [ ] T31: Implementare servizio aggregazione stats
- [ ] T32: Implementare endpoint GET /api/stats
- [ ] T33: Implementare endpoint GET /api/usage
- [ ] T34: Scrivere test per stats endpoints
### 🌐 Public API v1 (T35-T43) - 0/9 completati
- [ ] T35: Creare dipendenza verify_api_token
- [ ] T36: Implementare POST /api/tokens (generate)
- [ ] T37: Implementare GET /api/tokens (list)
- [ ] T38: Implementare DELETE /api/tokens/{id}
- [ ] T39: Implementare GET /api/v1/stats
- [ ] T40: Implementare GET /api/v1/usage
- [ ] T41: Implementare GET /api/v1/keys
- [ ] T42: Implementare rate limiting su public API
- [ ] T43: Scrivere test per public API
### 🎨 Frontend Web (T44-T54) - 0/11 completati
- [ ] T44: Setup Jinja2 templates e static files
- [ ] T45: Creare base.html (layout principale)
- [ ] T46: Creare login.html
- [ ] T47: Creare register.html
- [ ] T48: Implementare router /login (GET/POST)
- [ ] T49: Implementare router /register (GET/POST)
- [ ] T50: Creare dashboard.html
- [ ] T51: Implementare router /dashboard
- [ ] T52: Creare keys.html
- [ ] T53: Implementare router /keys
- [ ] T54: Aggiungere HTMX per azioni CRUD
### ⚙️ Background Tasks (T55-T58) - 0/4 completati
- [ ] T55: Configurare APScheduler
- [ ] T56: Implementare task sync usage stats
- [ ] T57: Implementare task validazione key
- [ ] T58: Integrare scheduler in startup app
### 🔒 Sicurezza & Hardening (T59-T63) - 0/5 completati
- [ ] T59: Implementare security headers middleware
- [ ] T60: Implementare rate limiting auth endpoints
- [ ] T61: Implementare CORS policy
- [ ] T62: Audit: verificare cifratura API keys
- [ ] T63: Audit: verificare SQL injection prevention
### 🧪 Testing & QA (T64-T68) - 0/5 completati
- [ ] T64: Scrivere test unitari per models
- [ ] T65: Scrivere test integrazione auth flow
- [ ] T66: Scrivere test integrazione API keys
- [ ] T67: Verificare coverage >= 90%
- [ ] T68: Eseguire security scan dipendenze
### 📝 Documentazione (T69-T71) - 0/3 completati
- [ ] T69: Scrivere README.md completo
- [ ] T70: Documentare API con OpenAPI
- [ ] T71: Creare esempi curl per API
### 🚀 Deployment (T72-T74) - 0/3 completati
- [ ] T72: Creare Dockerfile
- [ ] T73: Creare docker-compose.yml
- [ ] T74: Scrivere script avvio produzione
---
## 📈 Grafico Progresso
```
Progresso MVP Fase 1
TODO [████████████████████████████ ] 85%
IN PROGRESS [ ] 0%
REVIEW [ ] 0%
DONE [██████ ] 15%
0% 25% 50% 75% 100%
```
---
## 🔥 Blockers
*Nessun blocker attivo*
| ID | Descrizione | Impatto | Data Apertura | Data Risoluzione |
|----|-------------|---------|---------------|------------------|
| - | - | - | - | - |
---
## 📝 Decisioni Log
| Data | Decisione | Motivazione | Stato |
|------|-----------|-------------|-------|
| 2024-01-15 | Stack: FastAPI + SQLite + HTMX | MVP semplice, zero-config | ✅ Approvata |
| 2024-01-15 | Cifratura: AES-256-GCM | Requisito sicurezza PRD | ✅ Approvata |
| 2024-01-15 | Auth: JWT con cookie | Semplice per web + API | ✅ Approvata |
---
## 🐛 Issue Tracking
*Issue riscontrati durante lo sviluppo*
| ID | Descrizione | Severità | Stato | Assegnato | Note |
|----|-------------|----------|-------|-----------|------|
| - | - | - | - | - | - |
---
## 📚 Risorse
- PRD: `/home/google/Sources/LucaSacchiNet/openrouter-watcher/prd.md`
- Architettura: `/home/google/Sources/LucaSacchiNet/openrouter-watcher/export/architecture.md`
- Kanban: `/home/google/Sources/LucaSacchiNet/openrouter-watcher/export/kanban.md`
---
*Ultimo aggiornamento: 2026-04-07*
*Prossimo aggiornamento: Fase Security Services (T12-T16)*