Propósito: Gestión del ciclo de vida de proyectos de construcción. Creación, configuración, asignación de usuarios y provisión de datos de dashboard.
Tecnología: Go 1.24.0 / Gin
Puerto::8099
Módulo:projects
CI/CD: GitLab CI/CD
Endpoints Expuestos
Path
Descripción
GET /projects
Lista todos los proyectos activos
GET /projects/:projectId
Datos específicos de un proyecto
GET /projects/general/:projectId
Datos para vista Dashboard (general-data)
GET /projects/chart/:projectId/:labelId
Datos de gráfico de proyección por etiqueta
POST /projects
Crear/registrar nuevo proyecto
POST /projects/DashboardLabels
Agregar o quitar etiqueta del dashboard
DELETE /projects
Eliminar un proyecto
PUT /projects
Desactivar un proyecto
PUT /assign
Asignar proyecto a usuario(s)
PUT /update-all
Actualizar todos los proyectos (endpoint cron)
Base de Datos
Motor: MongoDB v1.17.2
Lógica de selección de servidor:
Si projectId == "managerv2" → conecta a managerv2.bimtrazer.com
Si isCentralized == true → conecta al servidor centralizado
Default → conecta a {projectId}.bimtrazer.com:27017
Colecciones Usadas
Colección
Base de Datos
Descripción
projects
master
Registro maestro de proyectos
project_config
{projectId}
Configuración específica del proyecto
blockIfc
{projectId}
Bloques (se crea el índice único aquí)
labels
{projectId}
Etiquetas (se crea el índice aquí)
users
{projectId}
Usuarios con acceso al proyecto
history_delete_project
{projectId}
Auditoría de eliminaciones
Variables de Entorno
Variable
Descripción
ENVIRONMENT
Ambiente: dev, qa, prod, local
{ENV}_PORT
Puerto HTTP (:8099)
{ENV}_API_URL
URL de la API central
{ENV}_DISPLACEMENTS_URL
URL del servicio displacements
{ENV}_DB_USER
Usuario MongoDB
{ENV}_DB_PASSWORD
Contraseña MongoDB (sensible)
{ENV}_DB_HOST
Host MongoDB
{ENV}_DB_PORT
Puerto MongoDB
Dependencias Externas
Servicio
Llamada
Propósito
API central (users)
POST {API_URL}/users/by-email
Validar usuario creador al asignar proyecto
Nota de seguridad: La llamada a la API central incluye un Bearer token hardcodeado.
Lógica de Creación de Proyecto
Cuando se crea un proyecto (POST /projects): 1. Valida nombre y email del creador 2. Genera código único de proyecto (BringBlockCode) 3. Normaliza a mayúsculas: nombre, empresa, país, ciudad 4. Crea timestamps con zona horaria del proyecto 5. Inserta en master.projects 6. Crea base de datos {projectCode} con colecciones e índices: - blockIfc: índice único en campo code - labels: índice en lbl_blocks.code 7. Inserta configuración inicial en {projectCode}.project_config 8. Asigna bucket S3 si se provee