Es un MVC (Modelo-Vista-Controlador) extendido:
backend/
├───database/ # Configuración de la base de datos y conexión
│ └───scripts/
│ └───test/
├───exports/ # Archivos exportados, como reportes o datos de asistencias
├───logs/ # Archivos de logs para monitoreo y depuración
├───metrics/ # Métricas de asistencias, puntualidad, etc.
├───models/ # Modelos (M)
├───reports/ # Reportes generados a partir de los datos de asistencias
├───repositories/ # Repositorios para acceso a datos
├───routers/ # Controladores, rutas o endpoints de la API (V, C)
├───schemas/ # Esquemas para validación y serialización de datos
├───services/ # Servicios, para la lógica de negocio
├───sockets/ # WebSockets para comunicación en tiempo real (si se implementa)
├───uploads/ # Archivos subidos por los usuarios, como Excels de asistencias
├───utils/ # Funciones de utilidad, como seguridad, autenticación, etc.
└───main.py # Punto de entrada de la aplicación (Ruta principal)
EL MVC tradicional se compone de:
- Modelos: Representan las entidades de la base de datos (tablas) y se definen usando SQLAlchemy.
- Vistas: En FastAPI, las vistas se implementan como rutas o endpoints que manejan las solicitudes HTTP y devuelven respuestas.
- Controladores: Las rutas de la API.
Extensión del MVC:
- Repositorios: Encapsulan la lógica de acceso a datos, osea, las operaciones CRUD (Crear, Leer, Actualizar, Eliminar) que se pueden hacer en la Base de Datos.
- Servicios: Lógica de negocio. Aquí se ejecutan los métodos de los repositorios y se aplican algunas validaciones.
- Esquemas (Schemas): Definen la estructura de los datos que se reciben y se envían a través de la API, usando Pydantic para validación y serialización.
- Utilidades: Funciones que se pueden usar para inyectar dependencias en las rutas, como la conexión a la base de datos, la seguridad o la autenticación de usuarios. Están en la carpeta
utils/. - Otros módulos
- Motor de Base de Datos: PostgreSQL
- Sistema de Gestión de Base de Datos (SGBD, osea, UI): pgAdmin
- Framework: FastAPI
- Versión de Python: Python
3.14.3 - Entorno de Desarrollo para Python: Anaconda (opcional)
Renombrar el archivo
base.enva.env.
- Crear un entorno virtual con Anaconda
cd backend
conda create -n asistencias python=3.14.3python=3: Especifica que se va a usar la última versión de Python 3 disponible en Anaconda
- Activar el entorno virtual
conda activate asistencias- Instalar las dependencias
pip install -r requirements.txt
pip install -r requirements-conda.txtrequirements.txt: Contiene las dependencias principales del proyectorequirements-conda.txt: Contiene las dependencias exactas usadas con la versión específica de Python usadas con Anaconda
-
Configurar la base de datos PostgreSQL y actualizar las variables de entorno en el archivo
.envcon las credenciales correspondientes. -
Ejecutar el servidor de desarrollo
uvicorn main:app --reload--reload: Permite que el servidor se reinicie automáticamente cada vez que se realicen cambios en el código
- Crear un entorno virtual
cd backend
python -m venv asistencias- Activar el entorno virtual
- En Windows:
asistencias\Scripts\activate- En macOS/Linux:
source asistencias/bin/activate- Instalar las dependencias
pip install -r requirements.txt-
Configurar la base de datos PostgreSQL y actualizar las variables de entorno en el archivo
.envcon las credenciales correspondientes. -
Ejecutar el servidor de desarrollo
uvicorn main:app --reloadFastAPI genera una documentacioón automática de la API que se puede acceder a través de:
http://localhost:8000/docs
pandas: para la manipulación y análisis de datos, especialmente útil para manejar los datos de asistencias y generar reportes.numpy: para operaciones numéricas y manejo de arrays, que pueden ser útiles para cálculos relacionados con la puntualidad y los retardos.openpyxl: para leer y escribir archivos Excel, lo que facilita la importación de datos de asistencias desde archivos.xlsxy la generación de reportes en formato Excel.