Servicio: registry
Información General
- Propósito: Motor de certificación de bloques de construcción. Gestiona el registro de avance de obra, valida dependencias entre bloques, y desencadena actualizaciones en cascada en múltiples servicios.
- Tecnología: Go 1.24.1 / Gin (inferido por estructura)
- Puerto:
:8110 - Módulo:
registry - CI/CD: GitLab CI/CD
Propósito de Negocio
La certificación es el proceso por el cual un inspector o coordinador de obra registra el avance real de un elemento constructivo (bloque). Este servicio: - Valida que el usuario tiene permisos de certificación - Verifica que las dependencias preladas están completadas - Registra el avance con trazabilidad completa - Notifica a otros sistemas del cambio
Endpoints Expuestos
| Path | Descripción |
|---|---|
POST /registry | Certificar un bloque (avance) |
PUT /certification | Actualizar certificación existente (agregar imagen) |
PUT /cronCertification | Endpoint para cron: recalcula reportes y etiquetas |
Base de Datos
- Motor: MongoDB v1.17.3
- Conexión: Servidor centralizado (
54.92.218.217:27017) - Pool: Min=100, Max=250 (el más grande del sistema, dado el volumen de operaciones)
Colecciones Usadas
| Colección | Base de Datos | Descripción |
|---|---|---|
blockIfc |
{projectId} |
Bloques (lectura y escritura de estado de ejecución) |
labels |
{projectId} |
Etiquetas con pesos de bloques |
projects |
master |
Información del proyecto |
manager_person |
master |
Datos de usuarios y permisos de certificación |
certification_queue |
{projectId} |
Cola de certificaciones (auditoría) |
execution_history |
{projectId} |
Historial completo de cambios |
label_report |
{projectId} |
Reportes precalculados (actualización post-certificación) |
Variables de Entorno / Configuración
- Usa
config.jsonestático (no variables de entorno del SO) - Puerto:
"8110" - MongoDB: host configurado en
config.json(contiene configuración sensible) MsgError: 20+ mensajes de error predefinidos en españolMsgTxt: Plantillas para SMS/WhatsApp con variables~CERTBLOQ,~VALUEBLOQ
Dependencias Externas (Llamadas HTTP salientes)
| Servicio | Endpoint | Propósito | Sincronía |
|---|---|---|---|
lbp |
POST /leanbim/blocks/map-and-update |
Sincronizar Lean BIM | Síncrono (espera respuesta) |
messages |
POST / |
Registrar evento de auditoría | Síncrono |
worktables |
PUT /worktables/update-label-report |
Recalcular reportes | Síncrono |
| API Gateway | PUT /priority/{typeservice} |
Actualizar prioridades | Síncrono |
manager.bimtrazer.com |
GET /sync/leanbim/update |
Alternativa a LBP | Síncrono |
Lógica de Negocio Clave
Validación de Dependencias Preladas
Antes de certificar un bloque al 100%, el servicio valida:
Para cada bloque en dependence[]:
Si el bloque dependiente tiene val_executed < 99% → BLOQUEADO
Si hay bloques bloqueantes, la certificación se rechaza con la lista de bloques que deben completarse primero.
Excepción: Si val_executed < 100% (certificación parcial), no se validan dependencias.
Cálculo de Avances Ponderados
Después de certificar:
avance_etiqueta = Σ (bloque.val_executed × bloque.weight)
Se recalcula en cascada hacia etiquetas padre.
Sistema de Permisos
Un usuario puede certificar solo si: 1. Está en scope[] del proyecto (UserScope.code = projectId) 2. Su registro en manager_person tiene certify = true o permissions.certify = true 3. Su status en el scope está activo
Notificaciones WhatsApp/SMS
- Plantillas configuradas para notificar a responsables vía
~CERTBLOQy~VALUEBLOQ - [inferido] Se envían al certificar eventos críticos
Structs Principales
| Struct | Propósito |
|---|---|
Block |
Bloque certificable (code, val_executed, certified_user, dependence[], exec_date) |
BsonLabels |
Etiqueta con bloques anidados y pesos |
BsonExecutionHistory |
Registro de auditoría de cada cambio |
BsonProjectClient |
Información del cliente contratista |
Permissions |
Permisos del usuario: certify (bool), whatsappAssistant (bool) |
Middlewares
- CORS:
AllowedOrigins: ["*"],AllowedMethods: ["PUT", "OPTIONS"](Gorilla handlers)
Rol en Casos de Uso
| Caso de Uso | Rol |
|---|---|
| CU-05: Certificación de Bloque | Servicio principal |
| CU-06: Carga de Fotografía | Recibe la imagen y la asocia al bloque antes de certificar |