Servicio: blocks
Información General
- Propósito: Gestión centralizada de bloques (elementos de trabajo/actividades) del proyecto BIM. Punto central de consulta, modificación y análisis de bloques constructivos.
- Tecnología: Go 1.24.0 / Gin v1.11.0
- Puerto:
:8104 - Módulo:
blocks - CI/CD: GitLab CI/CD (
.gitlab-ci.yml)
Endpoints Expuestos (31 totales)
GET
| Path | Descripción |
|---|---|
GET /executed-blocks/:projectId |
Bloques ejecutados (vista 4D) |
GET /blocks/by-project/:projectId |
Todos los bloques de un proyecto |
GET /blocks/:projectId/:blockCode |
Bloque específico por código |
GET /blocks/priority/:projectId |
Bloques con sus prioridades |
GET /blocks/priority/classified/:projectId |
Bloques clasificados por prioridad |
GET /blocks/priority/to-certify/:projectId |
Bloques pendientes de certificación |
GET /label-intersection/:projectId |
Intersección de bloques por etiqueta |
GET /blocks/uncertified/:projectId |
Bloques sin certificar del proyecto |
GET /blocks/uncertified/:projectId/:label |
Bloques sin certificar de una etiqueta |
GET /blocks/label-intersection/:projectId/get-xls |
Exporta intersección a Excel |
GET /blocks/label-intersection/:projectId/get-criticality-xls |
Exporta criticidad a Excel |
GET /blocks/dashboard-data/:projectId/:labelCode |
Datos para dashboard por etiqueta |
GET /blocks/sequences-execution-error-report/:projectId |
Reporte de errores de secuencias |
GET /blocks/history-errors/:projectId |
Historial de errores |
GET /fixed-weights/:projectId |
Pesos fijos configurados del proyecto |
GET /last-date/:projectId |
Última fecha de actividad registrada |
GET /data-for-prioritization/:projectId |
Datos para proceso de priorización |
POST
| Path | Descripción |
|---|---|
POST /blocks/duplicate-with-prefix |
Duplica bloques con un prefijo dado |
POST /blocks/map-and-copy-execution-by-prefix |
Copia estado de ejecución entre proyectos por prefijo |
POST /blocks/create-codes |
Obtiene códigos de bloques disponibles del Master |
POST /blocks/priority/by-label |
Bloques con prioridad filtrados por etiqueta |
POST /blocks/filtered/by-label |
Bloques filtrados por etiqueta |
POST /blocks/label-intersection |
Intersección de etiquetas (POST con body) |
POST /blocks/uncertified/label-intersection |
Bloques sin certificar en intersección de etiquetas |
PUT
| Path | Descripción |
|---|---|
PUT /blocks/blocks-Json |
Parametrizador de bloques IFC (actualización masiva) |
PUT /blocks/priority/executed |
Marca bloques como ejecutados en contexto de prioridad |
PUT /blocks/fix-history-errors |
Corrige errores en historial |
PUT /fixed-weights |
Actualiza pesos fijos |
PUT /fixed-weights/from-file |
Actualiza pesos fijos desde archivo |
PUT /blocks/copy-status |
Copia estado entre proyectos |
DELETE
| Path | Descripción |
|---|---|
DELETE /blocks/priority/disable |
Deshabilita bloques por código (prioridad) |
DELETE /blocks/by-codes |
Deshabilita bloques por lista de códigos |
DELETE /fixed-weights |
Elimina pesos fijos configurados |
Base de Datos
- Motor: MongoDB
- Conexión: Pool dinámico por proyecto (thread-safe)
- Hosts:
- Centralizado: servidor principal
- Por proyecto:
{projectId}.bimtrazer.com:27017
Colecciones Usadas
| Colección | Base de Datos | Descripción |
|---|---|---|
blockIfc |
{projectId} |
Bloques del proyecto |
labels |
{projectId} |
Etiquetas (referencia) |
Project |
{projectId} |
Configuración del proyecto |
Variables de Entorno
| Variable | Descripción |
|---|---|
ENVIRONMENT |
Ambiente activo: dev, qa, prod |
{ENV}_PORT |
Puerto HTTP (:8104) |
{ENV}_API_URL |
URL base de la API |
{ENV}_DB_USER |
Usuario de MongoDB |
{ENV}_DB_PASSWORD |
Contraseña de MongoDB (sensible) |
{ENV}_DB_HOST |
Host de MongoDB |
{ENV}_DB_PORT |
Puerto de MongoDB |
Dependencias Externas
- Otros servicios HTTP: Llama a la API central para operaciones de validación (
SendAPI.go) - No suscribe eventos: comunicación únicamente HTTP síncrona
Procesos Internos
- No tiene workers, cron jobs ni listeners de eventos
DatabasePool: gestiona conexiones MongoDB reutilizables por proyecto
Helpers de Negocio Clave
| Helper | Propósito |
|---|---|
calculatePriority.go |
Calcula prioridad de un bloque |
calculateSpi.go |
Calcula Schedule Performance Index |
checkCriticality.go |
Determina si un bloque está en ruta crítica |
getExpectedExecutionAndStatus.go |
Calcula ejecución esperada y estado actual |
getBlocksIntersection.go |
Intersección de bloques entre etiquetas |
getDelayAndDisplacement.go |
Calcula días de atraso y desplazamiento |
distanceToNow.go / distanceToTheEnd.go |
Cálculos de distancia temporal |
Librerías Especiales
| Librería | Uso |
|---|---|
xuri/excelize |
Generación de reportes Excel (.xlsx) |
gin-contrib/cors |
CORS permisivo (AllowAllOrigins: true) |
Middlewares
gin.Recovery()— recuperación ante panicsgin.Logger()— logging HTTPcors.New()— CORS abierto para todos los orígenesCheckIp— validación de IP de origen (disponible pero no activo en producción)
Structs Principales
| Struct | Propósito |
|---|---|
BsonListBlock |
Lista de bloques de MongoDB |
BsonBlocks |
Documento completo de un bloque |
BsonProjectConfig |
Configuración del proyecto |
InBlockCreateCodes |
Request para crear códigos de bloques |
Rol en Casos de Uso
| Caso de Uso | Rol |
|---|---|
| CU-02: Carga de IFC | Recibe códigos de bloques creados por ifc |
| CU-05: Certificación | Provee estado actual de bloques a registry |
| CU-07: Gemelo Digital | digitaltwin consulta datos de bloques |
| CU-08: Desplazamientos | displacements lee y escribe bloques |
| CU-15: Filtrado LBP | lbp lee desde colección blockIfc directamente |