Servicio: priority-blocks
Información General
- Propósito: Gestión de bloques constructivos prioritarios. Mantiene un listado clasificado de bloques según su urgencia de certificación, permitiendo filtrar por estado y por etiqueta.
- Tecnología: Go 1.23 / Gin
- Puerto:
:8087(local/dev interno). URL externa: implícita víaapi-bimtrazer - Módulo:
src/bimtrazer/priority-blocks - CI/CD:
update-docker.sh
Propósito de Negocio
En la gestión de obra, no todos los bloques tienen la misma urgencia. Este servicio mantiene una vista curada de bloques ordenados por prioridad para guiar al equipo de certificación. Permite:
- Ver qué bloques deben certificarse primero
- Clasificar bloques por categorías (ej: atrasados, en progreso, completados)
- Actualizar el valor ejecutado de un bloque
- Deshabilitar bloques que ya no aplican
Endpoints Expuestos
| Método | Path | Descripción |
|---|---|---|
GET |
/:projectId |
Obtener todos los bloques prioritarios del proyecto |
GET |
/classified-blocks/:projectId |
Bloques clasificados por categoría |
GET |
/blocks-to-certify/:projectId |
Bloques pendientes de certificación |
POST |
/filtered-blocks/:projectId |
Bloques filtrados por etiqueta (con body de filtros) |
PUT |
/cron-update/:projectId |
Actualización periódica de prioridades (cron) |
PUT |
/executed |
Actualizar valor ejecutado de un bloque |
DELETE |
/blocks |
Deshabilitar bloques prioritarios |
GET /:projectId — Retorna todos los bloques del proyecto con su estado de prioridad. Incluye metadatos de certificación y fechas de avance.
GET /classified-blocks/:projectId — Agrupa los bloques en categorías como: completados, en progreso, atrasados, bloqueados. Usado para dashboards de seguimiento.
GET /blocks-to-certify/:projectId — Filtra solo los bloques que están pendientes de certificación formal.
PUT /cron-update/:projectId — Endpoint diseñado para ser llamado por un cron job. Recalcula y actualiza el orden de prioridad de todos los bloques del proyecto basándose en el estado actual de avance, fechas y dependencias.
DELETE /blocks — Desactiva bloques prioritarios (no los elimina físicamente de MongoDB).
Estructura del Proyecto
priority-blocks/
├── main.go
├── go.mod
├── databases/
│ └── (conexión MongoDB)
├── env/
│ ├── setEnv.go
│ └── useEnv.go
└── server/
├── router/
│ ├── prod/prodRoutes.go
│ └── sandbox/sandboxRoutes.go
├── handlers/
│ └── prod/
│ ├── get/
│ ├── post/
│ ├── put/
│ └── delete/
├── controllers/
├── helpers/
├── metrictime/
├── middlewares/
└── structs/
Base de Datos
- Motor: MongoDB v1.13.1 (go driver)
- Patrón: Cliente único (
GetMongoClient()) - Colecciones:
blockIfc(lectura y escritura de estado de prioridad)
Variables de Entorno
| Variable | Descripción |
|---|---|
ENVIRONMENT |
Ambiente activo |
{ENV}_PORT |
Puerto HTTP |
{ENV}_DB_* |
Credenciales MongoDB |
Middlewares
- CORS: restringido a dominios
apibt.bimtrazer.com gin.Recovery(),gin.Logger()CheckIp— comentado (desactivado)
Dependencias (go.mod)
| Librería | Propósito |
|---|---|
gin-gonic/gin |
Framework HTTP |
gin-contrib/cors |
CORS |
go.mongodb.org/mongo-driver |
MongoDB |
Rol en el Sistema
- Llamado por:
api-bimtrazer(rutas/priority/*y/blocks/priority/*) - Lee de:
blockIfcen la BD del proyecto - Escribe en: estado de prioridad y
val_executedenblockIfc - Actualización periódica: endpoint
/cron-updatedebe ser llamado externamente (cron)
Alertas Técnicas
- Sin autenticación propia — depende del middleware
Auth()deapi-bimtrazer - El endpoint
cron-updateno tiene protección especial contra llamadas no autorizadas si se accede directamente al servicio - Rutas duplicadas con
api-bimtrazer: existe versión antigua (/priority/blocks) y v2 (/blocks/priority) con la misma lógica