Add complete mockupAWS platform for AWS cost estimation: - FastAPI backend with scenario management - PostgreSQL database schema for scenarios, metrics, logs - AWS pricing table with real pricing data - React frontend dashboard (planned) - PII detection and token counting - Report generation (PDF/CSV) - Complete test suite with pytest - Docker Compose setup - Documentation: README, PRD, Architecture - OpenCode configuration (.opencode/)
32 KiB
Product Requirements Document (PRD)
Prodotto: mockupAWS - Backend Profiler & Cost Estimator
Versione: 0.2.0
Data: 2026-04-07
Stato: In sviluppo
1. Overview
mockupAWS è un ambiente di simulazione locale (homelab) progettato per replicare i layer di ingestion ed elaborazione cloud del progetto LogWhispererAI. Lo scopo principale non è analizzare i log, ma profilare il traffico e calcolare i driver di costo dei servizi AWS (SQS, Lambda, Bedrock/LLM) prima del deploy in produzione.
1.1 Problema
Gli utenti di LogWhispererAI non hanno visibilità sui costi AWS che genereranno in produzione basati sul loro volume di log. Inviare log reali ad AWS senza stima preventiva può generare costi imprevisti e elevati. Inoltre, manca uno strumento per:
- Confrontare scenari di costo diversi nel tempo
- Archiviare e consultare stime passate
- Generare report professionali da condividere con il team
1.2 Soluzione
Un simulatore locale con interfaccia web che:
- Riceve log tramite endpoint HTTP (compatibile Logstash)
- Permette di definire e salvare scenari di simulazione
- Calcola metriche di costo accurate usando prezzi AWS reali
- Storicizza tutti gli scenari in database
- Genera report dettagliati e condivisibili
- Identifica problemi di sicurezza (PII leaks)
- Fornisce una dashboard web per gestione e consultazione
2. Obiettivi
2.1 Business
- Ridurre il rischio di costi AWS imprevisti per gli utenti LogWhispererAI
- Fornire stime di costo accurate con margine di errore < 5%
- Accelerare il ciclo di sviluppo testando localmente prima del deploy
- Identificare ottimizzazioni di costo (batching, deduplicazione)
- Fornire report storici per analisi trend costi nel tempo
- Facilitare la comunicazione costi tra team DevOps e Management
2.2 Utente
- Creare e gestire scenari di simulazione con parametri personalizzabili
- Consultare lo storico di tutti gli scenari eseguiti
- Generare e scaricare report PDF/CSV dei costi stimati
- Ottenere una stima immediata dei costi AWS basata sul traffico reale
- Identificare log che contengono dati sensibili prima dell'invio al cloud
- Valutare l'impatto di ottimizzazioni (batch size, frequenza invio)
- Simulare scenari "what-if" con diversi volumi di traffico
- Confrontare scenari tra loro per decisioni data-driven
2.3 KPI (Key Performance Indicators)
| Metrica | Target | Descrizione |
|---|---|---|
| Accuratezza stima costi | > 95% | Confronto tra stima mockupAWS e costi AWS reali |
| Latenza endpoint | < 100ms | Tempo di risposta per ingestion singolo log |
| Detection PII | > 90% | Rilevamento pattern email nei log |
| Throughput | > 1000 RPS | Richieste al secondo gestibili |
| Test Coverage | > 80% | Copertura test automatici |
| Tempo generazione report | < 5s | Generazione report completo scenario |
| Persistenza scenari | 100% | Nessuna perdita dati scenari salvati |
3. User Stories
US-001: Creazione Scenario
Come DevOps engineer,
voglio creare un nuovo scenario di simulazione specificando nome, descrizione e parametri,
per organizzare le mie stime di costo in sessioni distinte e tracciabili.
Acceptance Criteria:
- Posso creare uno scenario via UI web con nome, descrizione e tag
- Posso impostare parametri: regione AWS, tier servizi, durata simulazione
- Lo scenario viene salvato in database con timestamp creazione
- Ricevo uno scenario ID univoco per riferimento
US-002: Esecuzione Simulazione Scenario
Come DevOps engineer,
voglio inviare log a uno scenario specifico,
per accumulare metriche di costo isolate da altri scenari.
Acceptance Criteria:
- Posso specificare lo scenario ID nell'header o query parameter
- I log vengono associati allo scenario corretto
- Le metriche vengono aggregate per scenario
- Posso vedere metriche in tempo reale durante la simulazione
US-003: Storicizzazione Scenari
Come system architect,
voglio consultare tutti gli scenari passati con i loro dati,
per analizzare l'evoluzione dei costi nel tempo.
Acceptance Criteria:
- Lista scenari ordinata per data (più recenti prima)
- Filtri per data, tag, nome, stato
- Visualizzazione dettaglio singolo scenario
- Possibilità di archiviare/eliminare scenari vecchi
US-004: Tabella Costi AWS
Come cloud cost manager,
voglio che il sistema usi i prezzi AWS reali aggiornati,
per avere stime accurate e confrontabili con la fattura reale.
Acceptance Criteria:
- Tabella prezzi AWS SQS, Lambda, Bedrock configurabile
- Supporto multi-regione (us-east-1, eu-west-1, ecc.)
- Possibilità di aggiornare i prezzi manualmente
- Storico variazioni prezzi nel tempo
US-005: Generazione Report
Come team lead,
voglio generare report PDF/CSV dettagliati di uno scenario,
per condividerli con il management o il cliente.
Acceptance Criteria:
- Report include: riepilogo costi, dettaglio per servizio, grafici
- Formato PDF professionalmente formattato
- Formato CSV per analisi in Excel
- Possibilità di includere note e raccomandazioni
US-006: Interfaccia Web Dashboard
Come utente non-tecnico,
voglio una dashboard web intuitiva,
per creare scenari e visualizzare report senza usare API.
Acceptance Criteria:
- UI responsive (desktop, tablet, mobile)
- Form creazione scenario guidato
- Dashboard metriche in tempo reale con grafici
- Lista scenari con azioni rapide (view, duplicate, delete)
- Dark/Light mode
US-007: Confronto Scenari
Come decision maker,
voglio confrontare due o più scenari side-by-side,
per valutare l'impatto di diverse configurazioni.
Acceptance Criteria:
- Selezione multipla scenari da confrontare
- Vista comparativa costi totali e per servizio
- Indicatore delta (costo maggiore/minore) con percentuale
- Export confronto in PDF
US-008: Rilevamento Data Leak
Come security engineer,
voglio che il sistema rilevi automaticamente email nei log,
per prevenire l'esposizione di PII ai servizi cloud.
Acceptance Criteria:
- Il sistema identifica pattern email (es.
user@example.com) - Incrementa un contatore di violazioni safety
- Il contatore è visibile nel report dello scenario
- Possibilità di configurare pattern PII custom
US-009: Simulazione Batching
Come system architect,
voglio simulare l'effetto della deduplicazione sui costi LLM,
per valutare se implementare dedup in produzione.
Acceptance Criteria:
- Posso inviare log multipli a uno scenario
- Il sistema conta i token solo per messaggi unici (deduplicazione)
- Vedo nel report il numero di invocazioni Lambda simulate
- Posso confrontare costi con/senza deduplicazione
4. Requisiti Funzionali
4.1 Gestione Scenari
REQ-001: Creazione Scenario
Priorità: Alta
Descrizione: Sistema per creare e gestire scenari di simulazione isolati.
Criteri di Accettazione:
- Modello dati Scenario: id, nome, descrizione, tag[], stato, created_at, updated_at
- Parametri configurabili: regione AWS, tier servizi, durata stimata
- API POST
/scenariosper creazione - Validazione nome univoco per utente
REQ-002: Associazione Log a Scenario
Priorità: Alta
Descrizione: I log ingestiti devono essere associati a uno scenario specifico.
Criteri di Accettazione:
- Header
X-Scenario-IDo query paramscenario_idnell'endpoint/ingest - Se non specificato, crea scenario "default" o rifiuta
- Metriche aggregate per scenario in database
- Isolamento completo dati tra scenari diversi
REQ-003: Stati Scenario
Priorità: Media
Descrizione: Gestione del ciclo di vita di uno scenario.
Criteri di Accettazione:
- Stati:
draft,running,completed,archived - Transizioni: draft→running→completed→archived
- Solo scenari
runningaccettano nuovi log - Scenari
archivedin sola lettura
4.2 Database e Persistenza
REQ-004: Modello Dati Scenari
Priorità: Alta
Descrizione: Tabella/Collection per salvare i metadati degli scenari.
Criteri di Accettazione:
scenarios (
id: UUID PK,
name: VARCHAR(255) NOT NULL,
description: TEXT,
tags: JSON ARRAY,
status: ENUM('draft', 'running', 'completed', 'archived'),
region: VARCHAR(50), -- es. 'us-east-1'
created_at: TIMESTAMP,
updated_at: TIMESTAMP,
completed_at: TIMESTAMP NULL,
total_requests: INTEGER DEFAULT 0,
total_cost_estimate: DECIMAL(10,4)
)
REQ-005: Modello Dati Metriche
Priorità: Alta
Descrizione: Tabella per salvare le metriche dettagliate per scenario.
Criteri di Accettazione:
scenario_metrics (
id: UUID PK,
scenario_id: UUID FK,
timestamp: TIMESTAMP,
metric_type: VARCHAR(50), -- 'sqs', 'lambda', 'bedrock', 'safety'
metric_name: VARCHAR(100),
value: DECIMAL(15,4),
unit: VARCHAR(20), -- 'count', 'bytes', 'tokens', 'usd'
metadata: JSON -- dettagli aggiuntivi
)
REQ-006: Modello Dati Log Ricevuti
Priorità: Media
Descrizione: Storage dei log ricevuti (opzionale, configurabile retention).
Criteri di Accettazione:
scenario_logs (
id: UUID PK,
scenario_id: UUID FK,
received_at: TIMESTAMP,
message_hash: VARCHAR(64), -- SHA256 per deduplicazione
message_preview: VARCHAR(500), -- troncato per privacy
source: VARCHAR(100),
size_bytes: INTEGER,
has_pii: BOOLEAN,
token_count: INTEGER,
sqs_blocks: INTEGER
)
4.3 Tabella Costi AWS
REQ-007: Tabella Prezzi Servizi AWS
Priorità: Alta
Descrizione: Tabella configurabile con i prezzi reali dei servizi AWS per regione.
Criteri di Accettazione:
aws_pricing (
id: UUID PK,
service: VARCHAR(50), -- 'sqs', 'lambda', 'bedrock'
region: VARCHAR(50), -- 'us-east-1', 'eu-west-1'
tier: VARCHAR(50), -- 'standard', 'on-demand'
price_per_unit: DECIMAL(10,8),
unit: VARCHAR(20), -- 'request', 'token', 'gb-second'
effective_from: DATE,
effective_to: DATE NULL,
is_active: BOOLEAN DEFAULT true,
source_url: VARCHAR(500) -- link documentazione AWS
)
Prezzi Iniziali (Esempio):
| Servizio | Regione | Tier | Prezzo | Unità |
|---|---|---|---|---|
| SQS | us-east-1 | Standard | $0.40 | per milione richieste |
| Lambda | us-east-1 | x86 | $0.0000166667 | per GB-second |
| Lambda | us-east-1 | Request | $0.20 | per milione richieste |
| Bedrock | us-east-1 | Claude 3 Sonnet | $0.003 | per 1K token input |
| Bedrock | us-east-1 | Claude 3 Sonnet | $0.015 | per 1K token output |
REQ-008: Calcolo Costi con Prezzi Reali
Priorità: Alta
Descrizione: Calcolo automatico dei costi usando i prezzi dalla tabella aws_pricing.
Criteri di Accettazione:
- Calcolo costo SQS:
blocks * price_per_million / 1000000 - Calcolo costo Lambda:
invocations * price_per_request + gb_seconds * price_per_gb_second - Calcolo costo Bedrock:
input_tokens * price_per_1k_input / 1000 + output_tokens * price_per_1k_output / 1000 - Supporto multi-regione (prezzi diversi per regione)
- Totale costo stima aggregato per scenario
REQ-009: Aggiornamento Prezzi
Priorità: Media
Descrizione: Interfaccia per aggiornare i prezzi AWS manualmente o via API.
Criteri di Accettazione:
- API CRUD per gestione prezzi (protetta da auth)
- Validazione prezzi > 0
- Storico prezzi (effective_from/to)
- Possibilità di importare prezzi da CSV
4.4 Interfaccia Web
REQ-010: Dashboard Principale
Priorità: Alta
Descrizione: Pagina principale con overview di tutti gli scenari.
Criteri di Accettazione:
- Lista scenari con: nome, stato, data creazione, costo totale stimato
- Filtri rapidi: tutti, running, completati, archiviati
- Grafico trend costi ultimi 30 giorni
- Card riepilogo: totale scenari, costo medio, scenario più costoso
- Bottone "Nuovo Scenario" prominente
REQ-011: Form Creazione Scenario
Priorità: Alta
Descrizione: Form guidato per creare nuovo scenario.
Criteri di Accettazione:
- Step 1: Info base (nome, descrizione, tag)
- Step 2: Configurazione AWS (regione, tier servizi)
- Step 3: Parametri simulazione (durata, volume atteso)
- Validazione campi obbligatori
- Preview costo base stimato
- Bottone "Crea e Avvia"
REQ-012: Vista Dettaglio Scenario
Priorità: Alta
Descrizione: Pagina dettaglio con tutte le metriche di uno scenario.
Criteri di Accettazione:
- Header: nome, stato, date, azioni (start, stop, archive, delete)
- Tab "Overview": metriche principali, grafici tempo reale
- Tab "Costi": breakdown per servizio, grafici a torta/barre
- Tab "Logs": lista log ricevuti (paginata, con filtri)
- Tab "PII": report violazioni sicurezza rilevate
- Tab "Report": generazione e download report
REQ-013: Confronto Scenari
Priorità: Media
Descrizione: Vista comparativa di multipli scenari.
Criteri di Accettazione:
- Selezione multipla scenari da lista (checkbox)
- Vista side-by-side o tabella comparativa
- Grafici comparativi: costo totale, costo per servizio
- Indicatori delta: +15% più costoso, -10% più economico
- Bottone "Export Confronto PDF"
REQ-014: Pagina Report
Priorità: Media
Descrizione: Generazione e gestione report.
Criteri di Accettazione:
- Configurazione report: formato (PDF/CSV), data range, dettaglio
- Preview report prima del download
- Download diretto
- Storico report generati
- Possibilità di aggiungere note personalizzate
REQ-015: Impostazioni Sistema
Priorità: Bassa
Descrizione: Pagina configurazione applicazione.
Criteri di Accettazione:
- Tab "Prezzi AWS": visualizzazione e modifica tabella prezzi
- Tab "Database": info storage usato, retention policy
- Tab "API": gestione API keys, webhook
- Tab "Tema": dark/light mode, accent color
4.5 API Backend (Aggiunte)
REQ-016: API Scenari
Priorità: Alta
Criteri di Accettazione:
GET /api/v1/scenarios- Lista scenari (con paginazione, filtri)POST /api/v1/scenarios- Crea nuovo scenarioGET /api/v1/scenarios/{id}- Dettaglio scenarioPUT /api/v1/scenarios/{id}- Aggiorna scenarioDELETE /api/v1/scenarios/{id}- Elimina scenarioPOST /api/v1/scenarios/{id}/start- Avvia scenarioPOST /api/v1/scenarios/{id}/stop- Ferma scenarioPOST /api/v1/scenarios/{id}/archive- Archivia scenario
REQ-017: API Report
Priorità: Media
Criteri di Accettazione:
POST /api/v1/scenarios/{id}/reports- Genera nuovo reportGET /api/v1/scenarios/{id}/reports- Lista report generatiGET /api/v1/reports/{report_id}/download- Download reportGET /api/v1/scenarios/compare?ids=id1,id2- Confronto scenari
REQ-018: API Costi
Priorità: Media
Criteri di Accettazione:
GET /api/v1/pricing- Lista prezzi AWS configuratiPUT /api/v1/pricing/{id}- Aggiorna prezzoPOST /api/v1/pricing/bulk-update- Aggiornamento multiploGET /api/v1/scenarios/{id}/cost-breakdown- Dettaglio costi scenario
4.6 Funzionalità Esistenti (v0.1)
REQ-019: Endpoint Ingestion (Aggiornato)
Priorità: Alta
Descrizione:
Endpoint HTTP POST /ingest aggiornato per supportare scenari.
Criteri di Accettazione:
- Accetta header
X-Scenario-ID: <uuid> - Se scenario non trovato o non running → HTTP 400
- Log salvato in database associato allo scenario
- Metriche aggiornate in tempo reale
REQ-020: Calcolo Metriche (Persistenza)
Priorità: Alta
Descrizione: Le metriche calcolate devono essere salvate in database.
Criteri di Accettazione:
- Ogni log salvato in
scenario_logs - Metriche aggregate salvate in
scenario_metrics - Aggiornamento costo totale in
scenarios.total_cost_estimate - Deduplicazione basata su hash messaggio
5. Requisiti Non Funzionali
5.1 Performance
- Throughput: Supporto per almeno 1000 richieste/secondo
- Latenza: P95 < 100ms per endpoint
/ingest - Latenza UI: P95 < 2s per caricamento pagine web
- Memoria: Uso memoria < 1GB per traffico normale
- Generazione Report: < 5s per scenario con 100k log
- CPU: Basso overhead rispetto a semplice pass-through
5.2 Sicurezza
- Validazione input: Sanitizzazione payload JSON e parametri UI
- PII Detection: Rilevamento pattern email nei log
- Persistenza: Crittografia dati sensibili in database (hash messaggi)
- Autenticazione: JWT o session-based per UI web
- Autorizzazione: Ruoli (admin, user, readonly)
- API Keys: Per accesso programmatico protetto
5.3 Affidabilità
- Disponibilità: 99.9% uptime
- Backup: Backup giornaliero database
- Recovery: Restore database < 1 ora
- Test Coverage: > 80% copertura test automatici
5.4 Manutenibilità
- Codice: Type hints obbligatori, follow PEP8
- Documentazione: Docstring per tutte le funzioni pubbliche
- TDD: Test scritti prima dell'implementazione
- Git: Conventional Commits (
feat:,fix:,test:) - Migrazioni: Alembic per schema database
5.5 Usabilità
- UI: Responsive design (mobile, tablet, desktop)
- Temi: Dark/Light mode
- Accessibilità: WCAG 2.1 AA compliance
- I18n: Preparazione per multi-lingua (italiano/inglese)
- Errori: Messaggi chiari, log dettagliati
6. Stack Tecnologico
6.1 Backend
| Componente | Tecnologia | Versione | Motivazione |
|---|---|---|---|
| Framework Web | FastAPI | >=0.110.0 | Async nativo, validazione Pydantic, docs auto |
| Server ASGI | Uvicorn | >=0.29.0 | Performance, supporto async |
| Validazione | Pydantic | >=2.7.0 | Type safety, serializzazione |
| Tokenizer | tiktoken | >=0.6.0 | Compatibile OpenAI/Bedrock |
| Testing | pytest | >=8.1.1 | TDD, fixtures, coverage |
| HTTP Client | httpx | >=0.27.0 | Async testing |
| Package Manager | uv | latest | Veloce, gestione dipendenze moderna |
| Python | CPython | >=3.11 | Type hints avanzati, performance |
6.2 Database
| Componente | Tecnologia | Versione | Motivazione |
|---|---|---|---|
| Database | PostgreSQL | >=15 | ACID, JSON support, performance |
| ORM | SQLAlchemy | >=2.0 | Standard de-facto, async support |
| Migrazioni | Alembic | latest | Gestione schema database |
| Driver | asyncpg | latest | Driver async per PostgreSQL |
6.3 Frontend
| Componente | Tecnologia | Versione | Motivazione |
|---|---|---|---|
| Framework | React | >=18 | Component-based, ecosystem |
| Build Tool | Vite | latest | Veloce, HMR |
| UI Library | Tailwind CSS | >=3.4 | Utility-first, customizzabile |
| Componenti | shadcn/ui | latest | Accessible, customizable |
| Charts | Recharts | latest | React-native, D3-based |
| State | React Query | latest | Server state management |
| HTTP Client | Axios | latest | Standard, interceptors |
6.4 DevOps
| Componente | Tecnologia | Versione | Motivazione |
|---|---|---|---|
| Container | Docker | latest | Isolamento, portabilità |
| Compose | Docker Compose | latest | Multi-container dev |
| Reverse Proxy | Nginx | latest | Static files, SSL |
7. Principi di Design
7.1 Safety First
Tutti i payload in ingresso vengono validati. I log contenenti possibili dati sensibili (PII) vengono identificati e tracciati senza bloccare il flusso. I dati persistenti sono minimizzati (hash al posto di contenuti completi).
7.2 Little Often
Il processamento avviene in piccoli batch frequenti, simulando l'approccio ottimale per Lambda e minimizzando i costi. I report sono generati on-demand e non in background per risparmiare risorse.
7.3 Double Check
Ogni calcolo critico (token count, billing blocks, costi) è verificato con test specifici. Le stime devono essere accurate al 95%+ rispetto ai costi AWS reali. I prezzi AWS sono verificabili e aggiornabili.
7.4 Data-Driven Decisions
L'interfaccia web facilita il confronto tra scenari per supportare decisioni basate sui dati. Ogni scenari è tracciabile e confrontabile nel tempo.
8. Architettura di Alto Livello
┌─────────────────────────────────────────────────────────────────────────┐
│ CLIENT LAYER │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────────────┐ │
│ │ Logstash │ │ React Web UI │ │ API Consumers │ │
│ │ (o Client) │ │ (Browser) │ │ (CI/CD, Scripts) │ │
│ └────────┬────────┘ └────────┬────────┘ └────────────┬────────────┘ │
└───────────┼────────────────────┼────────────────────────┼──────────────┘
│ │ │
│ HTTP POST │ HTTPS │ API Key
│ /ingest │ /api/v1/* │ /api/v1/*
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ API LAYER (FastAPI) │
│ ┌────────────────────────────────────────────────────────────────────┐ │
│ │ Authentication & Authorization (JWT / API Key) │ │
│ └────────────────────────────────────────────────────────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌──────────────────┐ │
│ │ /scenarios │ │ /ingest │ │ /reports │ │ /pricing │ │
│ │ CRUD │ │ (scenario) │ │ generate │ │ CRUD │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └────────┬─────────┘ │
└─────────┼───────────────┼───────────────┼─────────────────┼────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ SERVICE LAYER │
│ ┌────────────────┐ ┌────────────────┐ ┌──────────────────────────────┐ │
│ │ Scenario │ │ Ingestion │ │ Cost Calculator │ │
│ │ Service │ │ Service │ │ (AWS Pricing) │ │
│ │ - CRUD │ │ - Queue │ │ - SQS cost │ │
│ │ - Lifecycle │ │ - Batch │ │ - Lambda cost │ │
│ │ - Validation │ │ - Deduplicate │ │ - Bedrock cost │ │
│ └────────────────┘ └────────────────┘ └──────────────────────────────┘ │
│ ┌────────────────┐ ┌────────────────┐ ┌──────────────────────────────┐ │
│ │ Report │ │ PII Detector │ │ Tokenizer │ │
│ │ Generator │ │ (Safety) │ │ (tiktoken) │ │
│ │ - PDF │ │ - Email check │ │ - cl100k_base │ │
│ │ - CSV │ │ - Pattern │ │ - Token count │ │
│ └────────────────┘ └────────────────┘ └──────────────────────────────┘ │
└─────────┬───────────────────────────────────────────────────┬───────────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────────────────────────────┐
│ DATABASE LAYER (PostgreSQL) │
│ ┌────────────────┐ ┌────────────────┐ ┌──────────────────────────────┐ │
│ │ scenarios │ │ scenario_logs │ │ aws_pricing │ │
│ │ - metadata │ │ - logs │ │ - prices │ │
│ │ - config │ │ - metrics │ │ - history │ │
│ └────────────────┘ └────────────────┘ └──────────────────────────────┘ │
│ ┌────────────────┐ ┌────────────────┐ │
│ │ scenario_ │ │ reports │ │
│ │ metrics │ │ - generated │ │ │
│ │ - aggregated │ │ - metadata │ │ │
│ └────────────────┘ └────────────────┘ │
└─────────────────────────────────────────────────────────────────────────┘
9. Criteri di Accettazione Release
v0.2.0 - Scenari e Persistenza
- Database PostgreSQL configurato e funzionante
- Tabelle scenarios, scenario_logs, scenario_metrics create
- API CRUD scenari complete (/scenarios)
- Associazione log a scenario funzionante
- Tabella aws_pricing con dati reali popolata
- Calcolo costi usando prezzi dalla tabella
- Storicizzazione automatica metriche
- Test coverage > 80%
- Documentazione API (OpenAPI)
v0.3.0 - Interfaccia Web
- Dashboard React funzionante
- Form creazione scenario
- Vista dettaglio scenario con metriche
- Lista scenari con filtri
- Dark/Light mode
- Responsive design
- Export report CSV
v0.4.0 - Report e Confronto
- Generazione report PDF
- Pagina confronto scenari
- Grafici interattivi (Recharts)
- API confronto scenari
- Export confronto PDF
v1.0.0 - Produzione
- Autenticazione e autorizzazione
- API Keys management
- Backup automatico database
- Monitoraggio e alerting
- Documentazione utente completa
- Performance test superati
10. Roadmap
Q2 2026
- Maggio: Database, API scenari, persistenza metriche
- Giugno: Tabella prezzi AWS, calcolo costi, test integrazione
Q3 2026
- Luglio: Frontend React base, dashboard, lista scenari
- Agosto: Form creazione, vista dettaglio, grafici
- Settembre: Report PDF, confronto scenari, polish UI
Q4 2026
- Ottobre: Auth, security, API keys
- Novembre: Performance optimization, caching
- Dicembre: Bug fixing, documentazione, release v1.0
Future Releases (post-v1.0)
- Supporto multi-utente con workspace
- Integration test con vero account AWS (read-only)
- Machine learning per predizione costi
- Alerting automatico se costo supera soglia
- Supporto Azure e GCP oltre ad AWS
11. Appendici
11.1 Schema Database Completo (ER Diagram)
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ scenarios │ │ scenario_metrics │ │ scenario_logs │
├─────────────────┤ ├──────────────────┤ ├─────────────────┤
│ PK id │◄──────┤ FK scenario_id │ │ FK scenario_id │
│ name │ │ timestamp │ │ received_at │
│ description │ │ metric_type │ │ message_hash │
│ tags[] │ │ metric_name │ │ preview │
│ status │ │ value │ │ source │
│ region │ │ unit │ │ size_bytes │
│ created_at │ │ metadata │ │ has_pii │
│ updated_at │ └──────────────────┘ │ token_count │
│ total_cost │ └─────────────────┘
└─────────────────┘
│
│
▼
┌─────────────────┐ ┌──────────────────┐
│ aws_pricing │ │ reports │
├─────────────────┤ ├──────────────────┤
│ PK id │ │ PK id │
│ service │ │ FK scenario_id │
│ region │ │ format │
│ tier │ │ file_path │
│ price │ │ generated_at │
│ unit │ │ metadata │
│ effective_ │ └──────────────────┘
│ from/to │
│ is_active │
└─────────────────┘
11.2 Esempio Flusso Completo
-
Creazione Scenario:
POST /api/v1/scenarios { "name": "Produzione Q2", "description": "Simulazione traffico produzione", "region": "us-east-1", "tags": ["production", "q2"] } → Response: { "id": "uuid-scenario-123" } -
Invio Log:
POST /ingest Header: X-Scenario-ID: uuid-scenario-123 Body: { "message": "Error: connection timeout", "source": "api" } -
Visualizzazione Web:
- User apre dashboard
- Seleziona scenario "Produzione Q2"
- Vede metriche in tempo reale
- Grafici costi per servizio
-
Generazione Report:
POST /api/v1/scenarios/uuid-scenario-123/reports { "format": "pdf", "include_logs": false }→ Download report completo
Documento mantenuto dal team LogWhispererAI. Ultimo aggiornamento: 2026-04-07