Servicios Go/Gin

Servicio: ifc

Información General


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

PathDescripción
GET /ifc/:projectIdListar modelos IFC cargados en el proyecto
POST /ifc/evaluate-ifcVersionar IFC, evaluar casos de manejo (multipart, máx 2MB)
PUT /ifc/assign-blocks-descriptionMapear descripciones con códigos de bloque
PUT /ifc/assign-blocks-dbIdsRelacionar geometrías (GUIDs) con dbIds de Autodesk
PUT /ifc/urnActualizar URN de Autodesk Platform Services
PUT /ifc/blocks-ifcCrear/actualizar colección maestra de bloques
DELETE /ifc/abortUploadingCancelar versionamiento en curso

Base de Datos

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


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


Middlewares


Rol en Casos de Uso

Caso de Uso Rol
CU-02: Carga de Modelo IFC Servicio principal
CU-07: Gemelo Digital Provee URN de Autodesk para visualización