Files
mockupAWS/prompt/prompt-v0.4.0-planning.md
Luca Sacchi Ricciardi a5fc85897b
Some checks failed
E2E Tests / Run E2E Tests (push) Has been cancelled
E2E Tests / Visual Regression Tests (push) Has been cancelled
E2E Tests / Smoke Tests (push) Has been cancelled
feat: implement v0.4.0 - Reports, Charts, Comparison, Dark Mode, E2E Testing
Backend (@backend-dev):
- Add ReportService with PDF/CSV generation (reportlab, pandas)
- Implement Report API endpoints (POST, GET, DELETE, download)
- Add ReportRepository and schemas
- Configure storage with auto-cleanup (30 days)
- Rate limiting: 10 downloads/minute
- Professional PDF templates with charts support

Frontend (@frontend-dev):
- Integrate Recharts for data visualization
- Add CostBreakdown, TimeSeries, ComparisonBar charts
- Implement scenario comparison page with multi-select
- Add dark/light mode toggle with ThemeProvider
- Create Reports page with generation form and list
- Add new UI components: checkbox, dialog, tabs, label, skeleton
- Implement useComparison and useReports hooks

QA (@qa-engineer):
- Setup Playwright E2E testing framework
- Create 7 test spec files with 94 test cases
- Add visual regression testing with baselines
- Configure multi-browser testing (Chrome, Firefox, WebKit)
- Add mobile responsive tests
- Create test fixtures and helpers
- Setup GitHub Actions CI workflow

Documentation (@spec-architect):
- Create detailed kanban-v0.4.0.md with 27 tasks
- Update progress.md with v0.4.0 tracking
- Create v0.4.0 planning prompt

Features:
 PDF/CSV Report Generation
 Interactive Charts (Pie, Area, Bar)
 Scenario Comparison (2-4 scenarios)
 Dark/Light Mode Toggle
 E2E Test Suite (94 tests)

Dependencies added:
- Backend: reportlab, pandas, slowapi
- Frontend: recharts, date-fns, @radix-ui/react-checkbox/dialog/tabs
- Testing: @playwright/test

27 tasks completed, 100% v0.4.0 implementation
2026-04-07 16:11:47 +02:00

14 KiB

Prompt: Pianificazione v0.4.0 - Reports, Charts & Comparison

Progetto: mockupAWS - Backend Profiler & Cost Estimator
Versione Target: v0.4.0
Focus: Report Generation, Data Visualization, Scenario Comparison
Stima Tempo: 2-3 settimane
Priorità: P1 (High)


🎯 Obiettivi v0.4.0

Goals Principali

  1. Report Generation - Generazione report PDF e CSV professionali
  2. Data Visualization - Grafici interattivi con Recharts
  3. Scenario Comparison - Confronto side-by-side tra scenari multipli
  4. Dark/Light Mode - Toggle tema UI completo
  5. Testing E2E - Setup testing end-to-end con Playwright

Metriche di Successo

  • Report PDF generati in <3 secondi
  • CSV export funzionante con tutti i dati
  • 3+ tipi di grafici interattivi
  • Confronto 2-4 scenari simultaneamente
  • Code coverage >70%
  • Zero regressioni v0.3.0

📋 Feature Breakdown

1. Report Generation System 📝

Backend (BE-RPT-001 → BE-RPT-005)

BE-RPT-001: Report Service Implementation

  • Implementare ReportService con metodi:
    • generate_pdf(scenario_id: UUID) -> Report
    • generate_csv(scenario_id: UUID) -> Report
    • compile_metrics(scenario_id: UUID) -> dict
  • Librerie: reportlab (PDF), pandas (CSV)
  • Template PDF con logo, header, footer, pagine numerate
  • Includere:
    • Summary scenario (nome, regione, periodo, stato)
    • Cost breakdown per servizio (SQS, Lambda, Bedrock)
    • Metriche aggregate (totali, medie, picchi)
    • Top 10 logs più costosi
    • PII violations summary
    • Grafici embedded (se PDF lo supporta)

BE-RPT-002: Report Generation API

  • Endpoint: POST /api/v1/scenarios/{id}/reports
  • Request body:
    {
      "format": "pdf" | "csv",
      "include_logs": boolean,
      "date_from": "ISO8601" | null,
      "date_to": "ISO8601" | null,
      "sections": ["summary", "costs", "metrics", "logs", "pii"]
    }
    
  • Response: 202 Accepted con report_id
  • Background task per generazione (Celery oppure async FastAPI)
  • Progress tracking via GET /api/v1/reports/{id}/status

BE-RPT-003: Report Download API

  • Endpoint: GET /api/v1/reports/{id}/download
  • Response: File stream con headers corretti
  • Supporto Content-Disposition: attachment
  • Mime types: application/pdf, text/csv
  • Rate limiting: 10 download/minuto

BE-RPT-004: Report Storage

  • Tabella reports già esistente
  • Salvare file in filesystem (o S3 in futuro)
  • Path: ./storage/reports/{scenario_id}/{report_id}.{format}
  • Cleanup automatico dopo 30 giorni (configurabile)
  • Max file size: 50MB

BE-RPT-005: Report Templates

  • Template HTML per PDF (usare Jinja2 + WeasyPrint oppure ReportLab diretto)
  • Stile professionale coerente con brand
  • Header con logo mockupAWS
  • Colori coerenti (primario: #0066CC)
  • Font: Inter o Roboto
  • Tabelle formattate con zebra striping

Frontend (FE-RPT-001 → FE-RPT-004)

FE-RPT-001: Report Generation UI

  • Nuova pagina: /scenarios/:id/reports
  • Sezione "Generate Report" con form:
    • Select formato (PDF/CSV toggle)
    • Checkbox: include_logs, sections
    • Date range picker (optional)
    • Preview dati che saranno inclusi
  • Bottone "Generate" con loading state
  • Toast notification quando report pronto

FE-RPT-002: Reports List

  • Tabella reports generati per scenario
  • Colonne: Data, Formato, Dimensione, Stato, Azioni
  • Azioni: Download, Delete, Rigenera
  • Badge stato: Pending, Processing, Completed, Failed
  • Sorting per data (default: newest first)
  • Pagination se necessario

FE-RPT-003: Report Download Handler

  • Download file con nome appropriato: {scenario_name}_YYYY-MM-DD.{format}
  • Axios con responseType: 'blob'
  • Creare ObjectURL per trigger download
  • Cleanup dopo download
  • Error handling con toast

FE-RPT-004: Report Preview

  • Preview CSV in tabella (primi 100 record)
  • Info box con summary prima di generare
  • Stima dimensione file
  • Costo stimato basato su metriche

2. Data Visualization 📊

Frontend (FE-VIZ-001 → FE-VIZ-006)

FE-VIZ-001: Recharts Integration

  • Installare: recharts, date-fns
  • Setup tema coerente con Tailwind/shadcn
  • Color palette per grafici (primario, secondario, accenti)
  • Responsive containers

FE-VIZ-002: Cost Breakdown Chart

  • Tipo: Pie Chart o Donut Chart
  • Dati: Costo per servizio (SQS, Lambda, Bedrock)
  • Percentuali visualizzate
  • Legend interattiva (toggle servizi)
  • Tooltip con valori esatti ($)
  • Posizione: Dashboard e Scenario Detail

FE-VIZ-003: Time Series Chart

  • Tipo: Area Chart o Line Chart
  • Dati: Metriche nel tempo (requests, costi cumulativi)
  • X-axis: Timestamp
  • Y-axis: Valore (count o $)
  • Multi-line per diversi tipi di metriche
  • Zoom e pan (se supportato da Recharts)
  • Posizione: Scenario Detail (tab "Metrics")

FE-VIZ-004: Comparison Bar Chart

  • Tipo: Grouped Bar Chart
  • Dati: Confronto metriche tra scenari
  • X-axis: Nome scenario
  • Y-axis: Valore metrica
  • Selettore metrica: Costo totale, Requests, SQS blocks, Tokens
  • Posizione: Compare Page

FE-VIZ-005: Metrics Distribution Chart

  • Tipo: Histogram o Box Plot (se Recharts supporta)
  • Dati: Distribuzione dimensioni log, tempi risposta
  • Posizione: Scenario Detail (tab "Analysis")

FE-VIZ-006: Dashboard Overview Charts

  • Mini charts nella lista scenari (sparklines)
  • Ultimi 7 giorni di attività
  • Quick stats con trend indicator (↑ ↓)

3. Scenario Comparison 🔍

Backend (BE-CMP-001 → BE-CMP-003)

BE-CMP-001: Comparison API

  • Endpoint: POST /api/v1/scenarios/compare
  • Request body:
    {
      "scenario_ids": ["uuid1", "uuid2", "uuid3"],
      "metrics": ["total_cost", "total_requests", "sqs_blocks", "tokens"]
    }
    
  • Response:
    {
      "scenarios": [...],
      "comparison": {
        "total_cost": { "baseline": 100, "variance": [0, +15%, -20%] },
        "metrics": [...]
      }
    }
    
  • Max 4 scenari per confronto
  • Validazione: tutti scenari esistono e user ha accesso

BE-CMP-002: Delta Calculation

  • Calcolare variazione percentuale vs baseline (primo scenario)
  • Evidenziare miglioramenti/peggioramenti
  • Ordinare scenari per costo totale
  • Export comparison come CSV/PDF

BE-CMP-003: Comparison Cache

  • Cache risultati per 5 minuti (in-memory)
  • Cache key: hash degli scenario_ids ordinati

Frontend (FE-CMP-001 → FE-CMP-004)

FE-CMP-001: Comparison Selection UI

  • Checkbox multi-selezione nella lista scenari
  • Bottone "Compare Selected" (enabled quando 2-4 selezionati)
  • Modal confirmation con lista scenari
  • Visualizzazione "Comparison Mode" indicator

FE-CMP-002: Compare Page

  • Nuova route: /compare
  • Layout side-by-side (2 colonne per 2 scenari, 4 per 4 scenari)
  • Responsive: su mobile diventa scroll orizzontale
  • Header con nome scenario, regione, stato
  • Summary cards affiancate

FE-CMP-003: Comparison Tables

  • Tabella dettagliata con metriche affiancate
  • Color coding: verde (migliore), rosso (peggiore), grigio (neutro)
  • Delta column con trend arrow
  • Export comparison button

FE-CMP-004: Visual Comparison

  • Grouped bar chart per confronto visivo
  • Highlight scenario selezionato
  • Toggle metriche da confrontare

4. Dark/Light Mode Toggle 🌓

Frontend (FE-THM-001 → FE-THM-004)

FE-THM-001: Theme Provider Setup

  • Theme context o Zustand store
  • Persistenza in localStorage
  • Default: system preference (media query)
  • Toggle button in Header

FE-THM-002: Tailwind Dark Mode Configuration

  • Aggiornare tailwind.config.js:
    darkMode: 'class'
    
  • Wrapper component con dark class sul root
  • Transition smooth tra temi

FE-THM-003: Component Theme Support

  • Verificare tutti i componenti shadcn/ui supportino dark mode
  • Aggiornare classi custom per dark variant:
    • bg-whitebg-white dark:bg-gray-900
    • text-gray-900text-gray-900 dark:text-white
    • Bordi, shadow, hover states

FE-THM-004: Chart Theming

  • Recharts tema dark (colori assi, grid, tooltip)
  • Colori serie dati visibili su entrambi i temi
  • Background chart trasparente o temizzato

5. Testing E2E Setup 🧪

QA (QA-E2E-001 → QA-E2E-004)

QA-E2E-001: Playwright Setup

  • Installare: @playwright/test
  • Configurare playwright.config.ts
  • Scripts: test:e2e, test:e2e:ui, test:e2e:debug
  • Setup CI (GitHub Actions oppure locale)

QA-E2E-002: Test Scenarios

  • Test: Creazione scenario completo
  • Test: Ingestione log e verifica metriche
  • Test: Generazione e download report
  • Test: Navigazione tra pagine
  • Test: Responsive design (mobile viewport)

QA-E2E-003: Test Data

  • Fixtures per scenari di test
  • Seed database per test
  • Cleanup dopo ogni test
  • Parallel execution config

QA-E2E-004: Visual Regression

  • Screenshot testing per UI critica
  • Baseline images in repo
  • Fallimento test se diff > threshold

🎨 UI/UX Requirements

Design Principles

  • Consistency: Usare stessi pattern v0.3.0
  • Feedback: Loading states, toast notifications, progress indicators
  • Accessibility: WCAG 2.1 AA compliance
  • Mobile: Responsive design per tutte le feature

Componenti UI da Aggiungere

  • DateRangePicker - Per filtro report
  • FileDownload - Componente download con progress
  • ComparisonCard - Card per confronto scenari
  • ChartContainer - Wrapper responsive per Recharts
  • ThemeToggle - Toggle dark/light mode

Animazioni

  • Page transitions (React Router + Framer Motion opzionale)
  • Chart animations (Recharts built-in)
  • Toast slide-in
  • Loading skeletons

🏗️ Technical Architecture

Backend Changes

src/
├── api/v1/
│   └── reports.py              # NUOVO: Report endpoints
├── services/
│   └── report_service.py       # NUOVO: PDF/CSV generation
├── core/
│   └── storage.py              # NUOVO: File storage abstraction
└── tasks/                      # NUOVO: Background tasks
    └── report_tasks.py

Frontend Changes

frontend/src/
├── pages/
│   ├── Reports.tsx             # NUOVO: Reports management
│   └── Compare.tsx             # NUOVO: Scenario comparison
├── components/
│   ├── charts/                 # NUOVO: Chart components
│   │   ├── CostBreakdown.tsx
│   │   ├── TimeSeries.tsx
│   │   └── ComparisonChart.tsx
│   ├── reports/                # NUOVO: Report components
│   │   ├── ReportGenerator.tsx
│   │   └── ReportList.tsx
│   └── ui/
│       └── theme-toggle.tsx    # NUOVO
├── hooks/
│   ├── useReports.ts           # NUOVO
│   └── useComparison.ts        # NUOVO
└── lib/
    └── theme.ts                # NUOVO: Theme utilities

📅 Timeline Suggerita (2-3 settimane)

Week 1: Foundation & Reports

  • Giorno 1-2: BE-RPT-001, BE-RPT-002 (Report service e API)
  • Giorno 3: BE-RPT-003, FE-RPT-001, FE-RPT-002 (Download e UI)
  • Giorno 4: BE-RPT-004, BE-RPT-005 (Storage e templates)
  • Giorno 5: Testing reports, bug fixing

Week 2: Charts & Comparison

  • Giorno 6-7: FE-VIZ-001 → FE-VIZ-004 (Recharts integration)
  • Giorno 8: BE-CMP-001, BE-CMP-002 (Comparison API)
  • Giorno 9: FE-CMP-001 → FE-CMP-004 (Comparison UI)
  • Giorno 10: FE-VIZ-005, FE-VIZ-006 (Additional charts)

Week 3: Polish & Testing

  • Giorno 11-12: FE-THM-001 → FE-THM-004 (Dark mode)
  • Giorno 13: QA-E2E-001 → QA-E2E-004 (Testing setup)
  • Giorno 14: Bug fixing, performance optimization, documentation
  • Giorno 15: Final review, demo, release v0.4.0

Acceptance Criteria

Report Generation

  • PDF generato correttamente con tutte le sezioni richieste
  • CSV contiene tutti i log e metriche in formato tabellare
  • Download funziona su Chrome, Firefox, Safari
  • File size < 50MB per scenari grandi
  • Report deleted dopo 30 giorni (cleanup)

Charts

  • Tutti i grafici sono responsive (resize corretto)
  • Tooltip mostra dati corretti
  • Animazioni smooth (no jank)
  • Funzionano in entrambi i temi (dark/light)
  • Performance: <100ms per renderizzare

Comparison

  • Confronto 2-4 scenari simultaneamente
  • Variazioni percentuali calcolate correttamente
  • UI responsive su mobile
  • Export comparison disponibile
  • Color coding intuitivo

Dark Mode

  • Toggle funziona istantaneamente
  • Persistenza dopo refresh
  • Tutti i componenti visibili in entrambi i temi
  • Charts adeguatamente temizzati
  • Nessun contrasto illeggibile

Testing

  • E2E tests passano in CI
  • Coverage >70% (backend)
  • Visual regression baseline stabilita
  • Zero regressioni v0.3.0
  • Documentazione testing aggiornata

🚧 Rischi e Mitigazioni

Rischio Probabilità Impatto Mitigazione
ReportLab complesso Media Alto Usare WeasyPrint (HTML→PDF) come alternativa
Performance charts con molti dati Media Medio Virtualization, data sampling, pagination
Dark mode inconsistente Bassa Medio Audit visivo completo, design tokens
E2E tests flaky Media Medio Retry logic, deterministic selectors, wait conditions
Scope creep Alta Medio Strict deadline, MVP first, nice-to-have in backlog

📝 Notes per Implementazione

Libraries Consigliate

# Backend
pip install reportlab pandas xlsxwriter  # Reports
pip install celery redis                  # Background tasks (optional)

# Frontend
npm install recharts date-fns             # Charts
npm install @playwright/test              # E2E testing
npm install zustand                       # State management (optional, for theme)

Pattern da Seguire

  • Report Generation: Async task con status polling
  • Charts: Container/Presentational pattern
  • Comparison: Derive state, non duplicare dati
  • Theme: CSS variables + Tailwind dark mode

Performance Considerations

  • Lazy load chart components
  • Debounce resize handlers
  • Virtualize long lists (reports)
  • Cache comparison results
  • Optimize re-renders (React.memo)

🎯 Definition of Done

  • Tutti i task P1 completati
  • Code review passato
  • Tests passanti (unit + integration + e2e)
  • Documentation aggiornata (README, API docs)
  • Demo funzionante
  • CHANGELOG.md aggiornato
  • Tag v0.4.0 creato
  • Deploy su staging verificato

Assegnato a: @frontend-dev (lead), @backend-dev (supporto API), @qa-engineer (testing)
Reviewer: @spec-architect
Deadline: 3 settimane dalla data di inizio
Dependencies: v0.3.0 completata ()


Prompt generato per pianificazione v0.4.0
Data: 2026-04-07