Node.js

Servicio: blocklist

Información General


Propósito de Negocio

Cuando se importa un nuevo modelo IFC o se carga una lista de bloques desde una fuente externa, es necesario saber cuáles bloques ya existen en el sistema y cuáles son nuevos. Este servicio hace esa clasificación consultando directamente MongoDB.

Soporta dos arquitecturas de base de datos del ecosistema BimTrazER:


Endpoints Expuestos

Método Path Descripción
POST /api/blocks/check-existence Clasificar lista de bloques contra la BD del proyecto

POST /api/blocks/check-existence

Request Body:

{
  "blocks": [
    {
      "name": "string (opcional si hay description)",
      "description": "string (opcional si hay name)",
      "start": "fecha inicio",
      "finish": "fecha fin"
    }
  ],
  "projectType": "centralizado | tradicional",
  "projectId": "código del proyecto"
}

Respuesta exitosa (200):

{
  "error": false,
  "message": "Blocks classified successfully",
  "data": {
    "summary": {
      "totalReceived": 10,
      "existingCount": 6,
      "newCount": 4,
      "invalidCount": 0
    },
    "blocks": [
      {
        "index": 0,
        "description": "NOMBRE DEL BLOQUE",
        "start": "2024-01-01",
        "finish": "2024-03-31",
        "status": "existing | new | invalid"
      }
    ]
  }
}

Lógica de Clasificación

  1. Valida que blocks sea array no vacío, y que projectType y projectId estén presentes
  2. Resuelve la URI de MongoDB según projectType
  3. Conecta a MongoDB en tiempo real (sin pool, conexión nueva por request)
  4. Obtiene todos los bloques de la colección blockIfc
  5. Por cada bloque recibido: resuelve el nombre (prioriza name, luego description), normaliza (elimina acentos, convierte a mayúsculas) y busca coincidencia exacta por nombre normalizado en blockIfc
  6. Si hay algún bloque invalid → responde 400 con detalles
  7. Cierra la conexión MongoDB en el bloque finally

Base de Datos

ProjectId Host por Defecto
00 00.bimtrazer.com:27017
4257 {id}.bimtrazer.com:27017
36dev, 00dev hosts dev

Variables de Entorno

Variable Descripción Default
PORT Puerto del servidor 3000
MONGO_USERNAME Usuario MongoDB admin
MONGO_PASSWORD Contraseña MongoDB (sensible) hardcodeado
MONGO_URI_CENTRAL URI MongoDB centralizado construido con host fijo
MONGO_URI_TRAD_{ID} URI de proyecto tradicional construido con {id}.bimtrazer.com

Middlewares


Alertas Técnicas