Servicio: lblsref (Labels Reference)
Información General
- Propósito: Cálculo y propagación de referencias entre etiquetas jerárquicas. Se ejecuta como “finalizador” después de que el servicio
labelscalcula sus datos, propagando cambios de pesos en cascada hacia arriba en la jerarquía. - Tecnología: Go 1.24.1 / Gin v1.11.0
- Puerto:
:8099(QA/PROD) /:8106(DEV) - Módulo:
lblsref
Propósito de Negocio
Cuando una etiqueta contiene sub-etiquetas (jerarquía padre-hijo), los cambios en el avance de una etiqueta hija deben propagarse hacia la etiqueta padre. Este servicio: - Calcula pesos de referencia entre etiquetas en la jerarquía - Propaga cambios de pesos hacia arriba (bottom-up) - Actualiza el total_weight acumulado en cada nodo de la jerarquía - Se ejecuta siempre DESPUÉS de labels completa sus cálculos
Endpoints Expuestos
| Path | Descripción |
|---|---|
PUT /labels-calculation | Endpoint principal: recalcular referencias y pesos entre etiquetas |
Nota: Servicio muy reducido (1 endpoint), pero crítico para la consistencia de datos.
Base de Datos
- Motor: MongoDB
- Conexión: Pool dinámico por proyecto
Colecciones Usadas
| Colección | Base de Datos | Descripción |
|---|---|---|
labels |
{projectId} |
Lectura de etiquetas y jerarquía |
labels_ref |
{projectId} |
Almacena relaciones y referencias calculadas |
plan_records |
{projectId} |
Registros de planificación (lectura) |
Estructura de LblsLabelsRef
{
"codep": "string (código etiqueta padre)",
"code": "string (código etiqueta hijo)",
"weight": "float64 (peso en la relación padre-hijo)"
}Variables de Entorno
| Variable | Descripción |
|---|---|
ENVIRONMENT |
Ambiente: dev, qa, prod |
DEV_PORT |
Puerto DEV (:8106) |
QA_PORT / PROD_PORT |
Puerto QA/PROD (:8099) |
{ENV}_API_URL |
URL de la API |
{ENV}_DB_USER |
Usuario MongoDB |
{ENV}_DB_PASSWORD |
Contraseña MongoDB (sensible) |
Algoritmo de Propagación
PUT /labels-calculation ejecuta:
- Obtiene todas las etiquetas activas del proyecto
- Para cada etiqueta con sub-etiquetas (
lbl_labels[]no vacío):- Identifica relaciones padre-hijo
- Calcula peso propagado:
peso_hijo × peso_en_padre
- Recorre árbol de etiquetas (recursivamente con
DataRecursiveLabel) - Distingue tipos de nodo:
CanBlo = 0, CanLbl = 0: etiqueta vacíaCanBlo > 0, CanLbl = 0: etiqueta hoja (tiene bloques directamente)CanLbl > 0: nodo intermedio (tiene sub-etiquetas)
- Actualiza
total_weightacumulado en cada nodo - Almacena factores en
labels_ref
Controllers
| Archivo | Función |
|---|---|
getLabels.go |
QueryArrayLabelsAll() — todas las etiquetas activas |
getLabels.go |
QueryLabelsLbl() — relaciones etiqueta-etiqueta |
getLabels.go |
QueryBlockLabels() — bloques de etiquetas |
getLabels.go |
DataRecursiveLabel() — recorre árbol recursivamente |
Cors
Restringido a dominios específicos: - apibt.bimtrazer.com - apibt-dev.bimtrazer.com - apibt-qa.bimtrazer.com
Nota sobre Puertos
Este servicio usa el mismo puerto 8099 que projects en QA/PROD. Esto sugiere que se despliegan en ambientes separados o detrás de un proxy/API Gateway que los distingue por path o subdominio. [inferido]
Rol en Casos de Uso
| Caso de Uso | Rol |
|---|---|
| CU-04: Asignación de Bloques | Recibe llamada de labels para propagar cambios |
| CU-10: Recálculo de Gráficos | Recibe llamada de labels al final del proceso |
| CU-14: Actualización de Pesos | Propaga los cambios de peso hacia arriba |