Stored Procedures: empleados y movimientos (DB)
Bitácora de desarrollo Control de Vacaciones
Sesión 1 Implementación completa de DB, API y Web (empleados y movimientos)
Fecha: 25-26 de abril de 2026
Hora de inicio: 09:00 pm
Hora de fin: 12:21 am
Horas trabajadas: 3h
Descripción de avances
- Stored Procedures DB: Se implementaron los SP de empleados (`spEmployee_GetAll`, `spEmployee_Insert`, `spEmployee_Update`, `spEmployee_DeleteLogical`, `spEmployee_GetById`) y movimientos (`spMovement_GetByEmployee`, `spMovement_Insert`) siguiendo el estándar del curso, con trazabilidad, `BEGIN TRY/CATCH`, `@outResultCode` y validación de saldo negativo.
- Fix seed UTF-8: Se corrigió `seed_xml.sql` para resolver problemas de codificación con tildes y ñ al cargar datos desde XML.
- DatabaseService y JWT Guard: Se agregaron los métodos del `DatabaseService` en NestJS para invocar cada SP, y se creó `jwt.guard.ts` para proteger los endpoints con validación de token Bearer.
- CRUD empleados y movimientos (API): Se implementaron controladores, servicios y DTOs (`CreateEmployeeDto`, `UpdateEmployeeDto`, `CreateMovimientoDto`) con validaciones de entrada y extracción de usuario autenticado e IP para trazabilidad completa.
- Cliente API y login (Web): Se centralizó la comunicación HTTP en `apps/web/lib/api.ts` con manejo automático del token JWT. Se reescribió la pantalla de login con verificación de disponibilidad del backend y mensajes de error del catálogo.
- Páginas de empleados y movimientos (Web): Se implementaron las vistas principales con listado, filtros, modales de inserción/edición/borrado y la página de movimientos por empleado, sin exponer IDs internos al usuario.
Problemas encontrados
- El script de seed fallaba con caracteres especiales en español debido a codificación incorrecta.
- En entorno local, NestJS recibía la IP como `::1` (IPv6 loopback) en lugar de `127.0.0.1`.
- El componente `MovimientosPage` fallaba en SSR porque `useSearchParams` requiere un boundary `Suspense` en Next.js App Router.
Solución aplicada
- Se corrigió el encoding de `seed_xml.sql` para compatibilidad UTF-8 con SQL Server.
- Se normalizó la IP en el servicio: si llega `::1` o `::ffff:127.0.0.1` se reemplaza por `127.0.0.1` antes de pasarla al SP.
- Se envolvió `MovimientosContent` en un `<Suspense>` dentro del componente raíz `MovimientosPage`.
Próximos pasos
- Verificar que todos los eventos requeridos se registren en `BitacoraEvento`.
- Implementar bloqueo de login por intentos fallidos.
- Ejecutar los casos de prueba del checklist (Fase 6).
- Documentar instrucciones de ejecución local.
Comentarios
Publicar un comentario