Propósito: Gestión de archivos IFC (Industry Foundation Classes) — el estándar abierto para modelos BIM. Maneja carga, versionamiento, integración con Autodesk y creación de bloques desde el modelo.
Tecnología: Go 1.24.0 / Gin v1.10.0
Puerto::8101
Módulo:ifc
Propósito de Negocio
IFC (Industry Foundation Classes) es el formato estándar ISO para intercambio de modelos BIM. Este servicio: - Recibe y versiona archivos IFC de modelos de construcción - Detecta cambios entre versiones mediante hash SHA1 - Integra con Autodesk Platform Services (URN para visualización 3D) - Crea y actualiza la colección maestra de bloques (blockIfc) a partir del modelo - Coordina con otros servicios tras cada nueva versión del modelo
Endpoints Expuestos
Path
Descripción
GET /ifc/:projectId
Listar modelos IFC cargados en el proyecto
POST /ifc/evaluate-ifc
Versionar IFC, evaluar casos de manejo (multipart, máx 2MB)
PUT /ifc/assign-blocks-description
Mapear descripciones con códigos de bloque
PUT /ifc/assign-blocks-dbIds
Relacionar geometrías (GUIDs) con dbIds de Autodesk
PUT /ifc/urn
Actualizar URN de Autodesk Platform Services
PUT /ifc/blocks-ifc
Crear/actualizar colección maestra de bloques
DELETE /ifc/abortUploading
Cancelar versionamiento en curso
Base de Datos
Motor: MongoDB
Conexión: Pool dinámico por proyecto + base manager
Colecciones Usadas
Colección
Base de Datos
Descripción
ifc
{projectId}
Metadatos de modelos IFC cargados
blockIfc
{projectId}
Bloques extraídos del modelo (colección maestra)
blockIfc_description
{projectId}
Mapeo descripción → código
labels
{projectId}
Etiquetas (referencia)
project_config
{projectId}
Configuración del proyecto
Estructura de Documento IFC
{"_id":"ObjectId","name_ifc":"string","name_storage":"string","date_storage":"time","size_storage":"string","name_user":"string","hash":"string (SHA1 del archivo)","urn":"string (referencia Autodesk)","order":"int","valid":true}
Variables de Entorno
Variable
Descripción
ENVIRONMENT
Ambiente: dev, qa, prod
{ENV}_PORT
Puerto HTTP (:8101)
{ENV}_API_URL
URL de la API central
{ENV}_DB_USER
Usuario MongoDB
{ENV}_DB_PASSWORD
Contraseña MongoDB (sensible)
Proceso de Evaluación IFC
Cuando llega POST /ifc/evaluate-ifc: 1. Recibe archivo IFC (multipart, máx 2 MB) 2. Calcula hash SHA1 del archivo 3. Compara con último hash almacenado en ifc 4. Determina caso: new (nuevo modelo) / update (actualización) / conflict (hash diferente al esperado) 5. Almacena archivo en directorio local ./file/ 6. Crea documento en colección ifc con metadatos 7. Triggers en cascada a otros servicios
Integración con Autodesk Platform Services
Recibe URN desde el frontend (Autodesk genera el URN al procesar el IFC)
PUT /ifc/urn almacena el URN en el documento IFC de MongoDB
El URN permite a digitaltwin referenciar el modelo para visualización 3D
PUT /ifc/assign-blocks-dbIds mapea elementos del modelo con dbIds de Autodesk Viewer
Dependencias Externas (Llamadas HTTP salientes)
Servicio
Endpoint
Propósito
sequences
POST /sequences
Recalcular dependencias tras nuevo IFC
projects
POST /blocks/create-codes
Asignar códigos a nuevos bloques
projects
DELETE /priority/blocks
Limpiar prioridades anteriores
registry
GET /certification
Esperar tarea de certificación
Nota de seguridad: Las llamadas a otros servicios incluyen un JWT hardcodeado en el helper SendAPI.go.
Almacenamiento Local
Directorio ./file/ dentro del contenedor Docker
El Dockerfile crea este directorio explícitamente
Archivos temporales del proceso de evaluación
Middlewares
CORS restringido a dominios específicos de bimtrazer.com