Este proyecto sigue una arquitectura modular en FastAPI, separando responsabilidades en capas como rutas, configuración, acceso a datos, modelos, esquemas, repositorios y servicios.
api_retail/
├─ app/
│ ├─ __init__.py
│ ├─ main.py
│ ├─ api/
│ │ ├─ __init__.py
│ │ └─ v1/
│ │ ├─ __init__.py
│ │ └─ routers/
│ │ ├─ __init__.py
│ │ ├─ health.py
│ │ ├─ customers.py
│ │ ├─ products.py
│ │ ├─ orders.py
│ │ └─ metrics.py
│ ├─ core/
│ │ ├─ __init__.py
│ │ ├─ config.py
│ │ └─ logging.py
│ ├─ db/
│ │ ├─ __init__.py
│ │ ├─ base.py
│ │ └─ session.py
│ ├─ models/
│ │ ├─ __init__.py
│ │ ├─ customer.py
│ │ ├─ department.py
│ │ ├─ category.py
│ │ ├─ product.py
│ │ ├─ order.py
│ │ └─ order_item.py
│ ├─ schemas/
│ │ ├─ __init__.py
│ │ ├─ common.py
│ │ ├─ customer.py
│ │ ├─ product.py
│ │ ├─ order.py
│ │ └─ metrics.py
│ ├─ repositories/
│ │ ├─ __init__.py
│ │ ├─ customers.py
│ │ ├─ products.py
│ │ ├─ orders.py
│ │ └─ metrics.py
│ └─ services/
│ ├─ __init__.py
│ ├─ customers.py
│ ├─ products.py
│ ├─ orders.py
│ └─ metrics.py
├─ .env.example
├─ requirements.txt
└─ README.md
app/
Contiene el código fuente principal de la aplicación.
• main.py: punto de entrada de la aplicación FastAPI.
• init.py: marca el directorio como paquete Python.
app/api/
Agrupa las versiones de la API y sus rutas.
app/api/v1/routers/
Contiene los endpoints organizados por dominio funcional.
• health.py: rutas de verificación del estado de la API.
• customers.py: endpoints relacionados con clientes.
• products.py: endpoints relacionados con productos.
• orders.py: endpoints relacionados con pedidos.
• metrics.py: endpoints para métricas e indicadores del negocio.
app/core/
Contiene configuraciones globales y componentes transversales.
• config.py: variables de configuración de la aplicación.
• logging.py: configuración de logs y trazabilidad.
app/db/
Gestiona la conexión y configuración de la base de datos.
• base.py: definición base para los modelos ORM.
• session.py: creación y gestión de sesiones de base de datos.
app/models/
Define las entidades del sistema usando ORM.
• customer.py: modelo de clientes.
• department.py: modelo de departamentos.
• category.py: modelo de categorías.
• product.py: modelo de productos.
• order.py: modelo de pedidos.
• order_item.py: modelo de detalle de pedidos.
app/schemas/
Contiene los esquemas de validación y serialización con Pydantic.
• common.py: esquemas compartidos o utilitarios.
• customer.py: esquemas para clientes.
• product.py: esquemas para productos.
• order.py: esquemas para pedidos.
• metrics.py: esquemas para métricas.
app/repositories/
Implementa la capa de acceso a datos.
• customers.py: consultas y operaciones de clientes.
• products.py: consultas y operaciones de productos.
• orders.py: consultas y operaciones de pedidos.
• metrics.py: consultas para métricas del negocio.
app/services/
Contiene la lógica de negocio de la aplicación.
• customers.py: reglas de negocio para clientes.
• products.py: reglas de negocio para productos.
• orders.py: reglas de negocio para pedidos.
• metrics.py: lógica para el cálculo de métricas.