Saltar a contenido

Bolsa de Horas (Hours Bank)

Sistema para gestionar las horas realizadas y pendientes de los empleados.


📚 Documentación

Archivo Audiencia Descripción
API_FRONTEND.md Frontend Documentación de endpoints y ejemplos de uso
ARCHITECTURE.md Backend Arquitectura v2 y decisiones técnicas

Descripción General

La Bolsa de Horas permite: - Registrar horas extra trabajadas (horas realizadas) - Registrar horas que el empleado debe (horas pendientes) - Compensación automática entre ambos tipos - Historial de transacciones por curso escolar


Endpoints Disponibles

Método Endpoint Descripción Estado
GET /api/v2/hours-bank/:employeeId Obtener bolsa de horas ✅ Implementado
POST /api/v2/hours-bank/:employeeId/completed Agregar horas realizadas ✅ Implementado
POST /api/v2/hours-bank/:employeeId/pending Agregar horas pendientes ✅ Implementado
PUT /api/v2/hours-bank/transactions/:transactionId Editar transacción ✅ Implementado
DELETE /api/v2/hours-bank/transactions/:transactionId Eliminar transacción ✅ Implementado

Estructura de Archivos

src/
├── domain/
│   ├── entities/      
│   │   └── HoursBank.ts              # Entidad de dominio
│   └── repositories/
│       └── DomainHoursBankRepository.ts  # Interface del repositorio
├── application/
│   └── use-cases/
│       └── hours-bank/
│           └── GetEmployeeHoursBankUseCase.ts  # Caso de uso: obtener horas
├── infrastructure/
│   ├── adapters/
│   │   └── persistence/
│   │       └── HoursBankRepositoryImpl.ts  # Implementación del repositorio
│   ├── controllers/
│   │   └── hoursBank.controller.ts   # Controlador HTTP
│   └── http/
│       └── routes/
│           └── hoursBank.routes.ts   # Rutas
└── models/
    └── hours-bank/
        ├── HoursBankModel.ts         # Modelo Sequelize
        └── HoursTransaction.ts       # Modelo de transacciones

Modelos de Base de Datos

hours_bank

Campo Tipo Descripción
id INT Primary key
employeeId INT FK a employees
schoolCourseId INT FK a schoolCourses (nullable)
totalPendingHours DECIMAL Total horas pendientes
totalCompletedHours DECIMAL Total horas realizadas

hours_transactions

Campo Tipo Descripción
id INT Primary key
hoursBankId INT FK a hours_bank
schoolCourseId INT FK a schoolCourses (nullable)
transactionDate DATE Fecha de la transacción
type ENUM COMPLETED, PENDING, REVERSAL
totalHours DECIMAL Horas de la operación
pendingAffected DECIMAL Impacto en pendientes
completedAffected DECIMAL Impacto en realizadas
reason TEXT Motivo de la transacción
isActive BOOLEAN Si está activa (para reversiones)

Última actualización: 2025-12-04