Servicios Go/Gin

Servicio: worktables

Información General


Propósito de Negocio

Una worktable (mesa de trabajo) es una vista configurada del proyecto que muestra: - Estado de bloques con filtros personalizados - Avance por etiqueta - Gráficos de proyección - Imágenes de evidencia de obra - Reportes PDF exportables


Endpoints Expuestos

PathDescripción
GET /worktables/:projectIdLista todas las worktables del proyecto
GET /worktables/data/:projectIdDatos de reportes de etiquetas (label_report)
GET /worktables/get-bi-data/:projectIdBusiness Intelligence: datos agregados
GET /report/cover-page-images/:projectId/:worktableNameImágenes para portada de reporte
GET /read-worktable-blocks/:projectIdLee bloques de una worktable
POST /worktables/filterAplica filtros dinámicos a una worktable
POST /get-progress-reportGenera reporte de progreso en JSON
POST /report/get-execution-dataDatos detallados de ejecución de bloques
POST /report/get-block-imagesImágenes asociadas a bloques
POST /report/generate-pdfGenera PDF completo del reporte
POST /Crear nueva worktable
POST /get-worktable-blocksBloques de una worktable (v1)
POST /get-worktable-blocks-v2Bloques de una worktable (v2 optimizada)
PUT /label-reportActualizar label_report (recálculo de avances)
PUT /worktables/update-worktableModificar estructura de worktable
PUT /worktables/order-rows-worktableReordenar filas
DELETE /worktables/:projectId/:WorktableIdEliminar una worktable

Base de Datos

Colecciones Usadas

Colección Base de Datos Descripción
worktables {projectId} Definición de mesas de trabajo
blockIfc {projectId} Bloques del proyecto
labels {projectId} Etiquetas para reportes
label_report {projectId} Reportes precalculados de avance
blockImgs {projectId} Imágenes de bloques
projects master Info del proyecto

Variables de Entorno

Variable Descripción
ENVIRONMENT Ambiente: dev, qa, prod
{ENV}_PORT Puerto HTTP
{ENV}_DB_HOST Host MongoDB
{ENV}_DB_HOST_SUFFIX Sufijo para {projectId}.{suffix}
{ENV}_DB_DEFAULT_PROJECT_ID ID proyecto master (opcional)
{ENV}_MAX_CONCURRENCY Número máximo de workers para queries paralelas
ROU_STORA Ruta base de almacenamiento
ROU_IMGS Ruta de imágenes
ROU_RESIZ Ruta de imágenes redimensionadas
ROU_FOTO Ruta de fotografías

Generación de PDF

El endpoint POST /report/generate-pdf usa wkhtmltopdf:

  1. Lee datos de bloques y etiquetas de MongoDB
  2. Lee imágenes de bloques desde /mnt/s3storage/
  3. Construye HTML dinámico (portada, índice, tablas, gráficos SVG)
  4. Llama al binario del sistema wkhtmltopdf para convertir HTML → PDF
  5. Comprime con gzip (CompressAndEncode())
  6. Codifica en base64
  7. Retorna PDF codificado en JSON

Requisito del sistema: Binario wkhtmltopdf debe estar instalado en el contenedor.


Endpoint label-report

PUT /label-report es llamado por registry después de cada certificación: 1. Invoca UpdateWorktableReports() con rootRepository 2. Recalcula porcentajes ponderados por etiqueta 3. Actualiza colección label_report con nuevos valores 4. Estos valores son leídos por GET /worktables/data/:projectId para el dashboard


Librerías Especiales

Librería Uso
go-wkhtmltopdf Generación de PDF desde HTML
disintegration/imaging Generación y redimensionamiento de thumbnails

Middlewares


Rol en Casos de Uso

Caso de Uso Rol
CU-05: Certificación Recibe notificación de registry para recalcular reportes
CU-09: Generación de Reporte PDF Servicio principal