Documentos & KPIsUTN x Natura AloeLiberia, Guanacaste, CR2025

NaturalAloe — Gestión documental y KPIs

API centrada en consistencia y trazabilidad para documentos normativos (POEs, Políticas, Registros Maestros), con KPIs calculados en MySQL 8, versionado/obsolescencia y carga de PDFs.

Rol
Backend / API Engineer (KPIs & Documentos)
Empresa
Natura Aloe
Estado
En producción
Stack
Node.jsExpressMySQL 8SwaggerJWTMulter

Descripción

Diseñé e implementé el backend para gestionar documentos normativos con ciclo de vida completo (creación, versionado, obsolescencia) y KPIs operativos. Los KPIs de POEs, Políticas y Registros Maestros se calculan mediante procedimientos almacenados y se exponen a dashboards por medio de tablas materializadas y vistas dedicadas. La documentación con Swagger/OpenAPI agiliza QA y las pruebas automatizadas.

Impacto

En producción
Despliegue
Implementación estable, sin incidentes de release
POEs • Políticas • RM
KPIs
Refresco vía SP y tablas materializadas
Swagger 3.0
Contratos API
Esquemas + ejemplos reutilizables
  • • Flujo de versionado/obsolescencia que mantiene la vigencia documental bajo control.
  • • KPIs consistentes con refresco programado y consultas rápidas para dashboards.
  • • Contratos claros entre frontend/QA gracias a Swagger con ejemplos realistas.

Módulos

  • POEs, Políticas, Registros Maestros: CRUD + versionado + obsolescencia.
  • KPIs: métricas para seguimiento de cumplimiento y estado documental.
  • Gestión de archivos: carga de PDFs con Multer y metadatos asociados.
  • Catálogos base: áreas, departamentos, puestos (CRUDs completos).

Optimización

  • • Índices compuestos orientados a KPIs y trazabilidad temporal.
  • • Reducción de N+1 con agregaciones y vistas dedicadas.
  • Tablas materializadas + SP de refresco para acelerar dashboards.
  • • Migraciones idempotentes y seeds controlados.

KPIs principales

  • % POEs vigentes: POEs activos ÷ POEs totales × 100
  • % Políticas vigentes: Políticas activas ÷ Políticas totales × 100
  • % Registros Maestros vigentes: RM activos ÷ RM totales × 100
  • Documentos obsoletos: obsoletos ÷ totales × 100

Arquitectura & Decisiones

  • • Modelo relacional normalizado (FK, índices, auditoría created_by/updated_by).
  • • SPs con validaciones y mensajes de negocio descriptivos.
  • • Vistas/Tablas materializadas para lectura de dashboards.
  • • Swagger/OpenAPI 3: esquemas, responses y ejemplos.

Optimización de KPIs

Inicialmente implementé una vista que calculaba KPIs en tiempo real, pero esto generaba carga computacional excesiva con cada consulta del frontend.

Solución: Creé una tabla que materializa los datos de la vista, con un SP que vacía y rellena la tabla con data fresca. El SP se ejecuta automáticamente cuando ocurren cambios que afectan los KPIs, más un evento programado como respaldo para casos no contemplados. Resultado: consultas instantáneas desde la tabla en lugar de cálculos costosos en cada request.

Seguridad

  • • Autenticación con JWT
  • • Validación de roles/permisos por módulo.
  • • Validación y sanitización de payloads; manejo uniforme de errores.

Mi rol

  • • Definí la estructura de base de datos y convenciones SQL.
  • • Implementé SPs de KPIs y el mecanismo de tablas materializadas.
  • • Desarrollé CRUDs de áreas, departamentos y puestos.
  • • Implementé autenticación JWT, validación de roles y carga de PDFs con Multer.
  • • Documenté la API con Swagger y coordiné handoff con QA.
  • • Participé en reuniones con la empresa para alinear requisitos y priorizar entregas.

Implementado en producción sin incidentes de despliegue. Próximos pasos: ampliar KPIs y extender funcionalidades.