Skip to content

Latest commit

 

History

History
258 lines (208 loc) · 7.3 KB

File metadata and controls

258 lines (208 loc) · 7.3 KB

✅ Checklist de Validación del Proyecto

I. Estrategia de Despliegue y Persistencia

Plataforma de Despliegue

  • Archivo render.yaml creado para Render
  • Configuración de servicio Backend (Python)
  • Configuración de servicio Frontend (Static)
  • Variables de entorno definidas

Persistencia Efímera

  • Base de datos en memoria implementada (database.py)
  • No hay dependencias de archivos en disco
  • Estado se reinicia con cada deploy
  • Perfecto para testing automatizado

II. Usuarios Pre-definidos

Implementación

  • 5 usuarios hardcodeados en constants.py
  • Sistema de autenticación JWT en auth.py
  • Endpoint /api/auth/login funcional
  • Endpoint /api/auth/users para listar usuarios

Comportamientos Implementados

Usuario Password Comportamiento Implementado
standard_user pizza123 Normal
locked_out_user pizza123 Error 403 login
problem_user pizza123 Imágenes rotas, precios $0
performance_glitch_user pizza123 Delay 3s en API
error_user pizza123 Error 500 aleatorio

III. Arquitectura Multi-Mercado

Header X-Country-Code

  • Middleware implementado en middleware.py
  • Validación obligatoria del header
  • Error 400 si no se envía
  • Soporte para MX, US, CH, JP

Lógica por País

🇲🇽 México (MX)

  • Moneda: $ MXN
  • Campo requerido: colonia
  • Campo opcional: propina
  • Impuestos: 0%

🇺🇸 USA (US)

  • Moneda: $ USD
  • Campo requerido: zip_code (5 dígitos)
  • Validación de formato ZIP
  • Impuestos: 8% (Sales Tax)

🇨🇭 Suiza (CH)

  • Moneda: CHF
  • Campo requerido: plz
  • Impuestos: 0%
  • Soporte multi-idioma (de, fr)

🇯🇵 Japón (JP)

  • Moneda: ¥ JPY
  • Sin decimales en precios
  • Campo requerido: prefectura
  • Impuestos: 0%

IV. Requisitos de las Pantallas

Pantallas Implementadas

1. Login

  • Formulario de login funcional
  • Selector de usuarios pre-definidos
  • Manejo de errores (locked_out_user)
  • Responsive (mobile/desktop)
  • data-testid en elementos

2. Home/Catálogo

  • Grid de pizzas responsive
  • Precios según país seleccionado
  • Conversión automática de divisas
  • Agregar al carrito funcional
  • data-testid en cards y botones

3. Burger Menu / Navbar

  • Visible en web (mobile/desktop)
  • Menú hamburguesa en mobile
  • Selector de país
  • Perfil de usuario
  • Logout funcional

4. Checkout

  • Formulario dinámico por país
  • Validaciones específicas
  • Resumen de orden
  • Confirmación exitosa
  • data-testid en todos los inputs
  • Cart hydration desde GET /api/cart al cargar (web + mobile)

Hooks de Automatización

Web (data-testid)

  • username-input, password-input
  • login-button, logout-button
  • pizza-card-{id}, add-to-cart-{id}
  • checkout-name-input, etc.
  • country-selector, select-country-{code}

IV-B. Session Setup & Cart Hydration

Endpoints de Session

  • POST /api/store/market — establecer mercado
  • POST /api/cart — inyectar items al carrito (con size opcional)
  • GET /api/cart — carrito enriquecido (join con catálogo, precios por mercado)
  • POST /api/session/reset — reiniciar sesión
  • GET /api/session — leer estado de sesión

Cart Hydration (API State Injection)

  • GET /api/cart implementado en backend (test_api.py)
  • Enriched response con name, price, image, currency del catálogo
  • Frontend web (Checkout.jsx) llama GET /api/cart al montar
  • Frontend mobile (CheckoutScreen.tsx) llama GET /api/cart al montar
  • Flujo E2E: POST /api/cart → navegar a /checkout → carrito hidratado

V. Endpoints de Caos y Performance

Endpoints Implementados

  • GET /api/debug/latency-spike - Delay aleatorio 0.5-5s
  • GET /api/debug/cpu-load - Fibonacci(35) pesado
  • GET /api/debug/metrics - Formato Prometheus
  • GET /api/debug/info - Info de debug

Funcionalidad

  • Latency spike funcional
  • CPU load funcional
  • Métricas Prometheus exportables
  • Info de debug completa

VI. Entregables Esperados

1. Backend

  • Carpeta backend/ creada
  • FastAPI implementado (main.py)
  • Autenticación JWT (auth.py)
  • Base de datos en memoria (database.py)
  • Modelos Pydantic (models.py)
  • Middleware personalizado (middleware.py)
  • Constantes de configuración (constants.py)
  • Dockerfile para contenedor

2. Frontend

  • Carpeta frontend/ creada
  • React 18 con Vite
  • TailwindCSS para estilos
  • Zustand para estado global
  • Axios para HTTP client
  • React Router para navegación
  • Componentes responsivos
  • Dockerfile + Nginx

3. Infra

  • docker-compose.yml para desarrollo local
  • render.yaml para producción en Render
  • setup.sh script automatizado
  • .gitignore completo

4. Tests

  • Carpeta tests/ creada
  • Contract Tests con Schemathesis
  • Tests de validación de schema
  • Tests de flujo completo
  • Tests de comportamientos de usuario
  • Tests de endpoints de caos
  • tests/README.md con documentación

5. Documentación

  • README.md - Documentación principal completa
  • QUICKSTART.md - Guía de inicio rápido
  • API_EXAMPLES.md - Ejemplos de uso
  • CONTRIBUTING.md - Guía de contribución
  • LICENSE - Licencia MIT
  • PROJECT_SUMMARY.md - Resumen ejecutivo

VII. Validaciones Adicionales

Calidad de Código

  • Código Python sigue PEP 8
  • Código JavaScript usa ES6+
  • Type hints en Python
  • Comentarios y docstrings
  • Nombres descriptivos

Git

  • Repositorio inicializado
  • 7 commits con mensajes descriptivos
  • Conventional Commits format
  • .gitignore configurado

Seguridad

  • JWT para autenticación
  • Passwords no expuestos
  • CORS configurado
  • Validación de inputs

Performance

  • Código optimizado
  • Sin operaciones bloqueantes
  • Caché donde aplica
  • Build optimizado

VIII. Tests de Integración

Tests Manuales

  • Login con standard_user
  • Login con locked_out_user (debe fallar)
  • Ver catálogo en MX
  • Cambiar país a US
  • Agregar pizzas al carrito
  • Checkout en MX con colonia
  • Checkout en US con zip_code
  • Verificar impuestos en US (8%)
  • Probar latency spike endpoint
  • Probar CPU load endpoint

Tests Automatizados

  • Ejecutar pytest tests/test_contract.py -v
  • Verificar todos los tests pasan
  • Validar cobertura de endpoints

IX. Despliegue

Local (Docker Compose)

  • docker-compose up -d exitoso
  • Backend accesible en :8000
  • Frontend accesible en :3000
  • API Docs en :8000/api/docs

Render (Producción)

  • Blueprint detectado automáticamente
  • Backend desplegado correctamente
  • Frontend desplegado correctamente
  • URLs públicas funcionando

✅ Estado Final

COMPLETADO AL 100%

  • ✅ Todos los requisitos implementados
  • ✅ Documentación completa
  • ✅ Tests implementados
  • ✅ Configuración de despliegue lista
  • ✅ Código versionado en Git

Proyecto listo para uso en QA Testing 🍕🧪