Servicios Go/Gin

Servicio: messages

Información General


Propósito de Negocio

Messages actúa como log de auditoría centralizado: - Registra quién hizo qué y cuándo en cada bloque - Permite consultar el historial de eventos por bloque o etiqueta - Clasificar eventos por tipo, importancia y usuario - Base para reportes de compliance y trazabilidad de obra

Importante: Este servicio es un consumidor pasivo. No hace llamadas HTTP a otros servicios. Solo recibe eventos de media, registry y otros.


Endpoints Expuestos

PathDescripción
POST /Crear nuevo mensaje/evento en un bloque
POST /messages/RBlockMsgLeer mensajes de bloques con filtros
POST /messages/get-filteredMensajes filtrados por etiquetas y operadores AND/OR
PUT /messages/UpdateBlockMsgActualizar mensaje (modificar contenido o marcar como leído)

Base de Datos

Colecciones Usadas

Colección Base de Datos Descripción
blockMsgs {projectId} Mensajes/notificaciones de bloques
labels {projectId} Estructura de etiquetas para filtrado

Estructura de blockMsgs

{
  "code": "string (código del bloque)",
  "message": "string (contenido del evento)",
  "certified_type": "string (tipo: imagen, video, notificación, etc.)",
  "certified_user": "string (usuario que generó el evento)",
  "certified_date": "timestamp",
  "status": "bool (leído/no leído)",
  "labels": ["string (etiquetas del bloque)"],
  "eventType": ["Image | Video | Manual | ..."],
  "system": "bool (generado por sistema vs usuario)",
  "importance": "L | M | H (Low/Medium/High)",
  "CreatedAt": "timestamp"
}

Variables de Entorno

Variable Descripción
ENVIRONMENT Ambiente: dev, qa, prod, local
{ENV}_PORT Puerto HTTP (:8113)
{ENV}_DB_USER Usuario MongoDB
{ENV}_DB_PASSWORD Contraseña MongoDB (sensible)
{ENV}_DB_HOST Host MongoDB
{ENV}_DB_PORT Puerto MongoDB
{ENV}_ALLOWED_IPS IPs permitidas
{ENV}_ALLOWED_HOSTS Hosts permitidos (incluye messages.bimtrazer.com)

Filtrado de Mensajes

El endpoint POST /messages/get-filtered soporta: - Filtro AND (intersección): el mensaje debe estar en TODAS las etiquetas - Filtro OR (unión): el mensaje está en CUALQUIERA de las etiquetas - Recursividad de etiquetas: busca en etiquetas contenidas - Orden: descendente por certified_date


Validación de Clientes

La función GetDataClient() valida el usuario contra el registro de clientes del proyecto. Si el usuario está en el registro de clientes, puede reemplazarse el nombre en el mensaje.


Notas Técnicas


Middlewares


Rol en Casos de Uso

Caso de Uso Rol
CU-05: Certificación Recibe notificación de registry con el evento
CU-06: Carga de Fotografía Recibe notificación de media con el evento de imagen