Propósito: Bot de WhatsApp con capacidades de asistente IA. Recibe mensajes de WhatsApp (vía webhook) y ejecuta acciones en BimTrazER: certificar bloques, enviar fotografías, consultar datos de obra y registrar en bitácora.
Convierte WhatsApp en un canal de interacción con la plataforma BimTrazER. Un usuario de obra puede:
Preguntar al asistente IA sobre el estado del proyecto
Certificar bloques enviando fotografías
Consultar bloques prioritarios
Registrar entradas en la bitácora de obra
Obtener datos de worktables y reportes
El bot actúa como intermediario entre el protocolo de WhatsApp y la API de BimTrazER, aprovechando un asistente de OpenAI entrenado con el contexto del proyecto.
Endpoints Expuestos
Webhook WhatsApp
Método
Path
Descripción
POST
/whatsapp-bot/webhook
Recibir eventos de WhatsApp (mensajes entrantes)
Endpoints para Asistentes IA (POST)
Método
Path
Descripción
POST
/for-assistants/resources-data
Obtener datos de recursos para el asistente
POST
/for-assistants/get-general-data
Obtener datos generales del proyecto
POST
/for-assistants/get-certification-history
Obtener historial de certificación
POST
/for-assistants/certify-blocks
Certificar bloques vía asistente
POST
/for-assistants/send-photographs
Enviar fotografías de avance
POST
/for-assistants/logbook-registration
Registrar entrada en bitácora
Endpoints para Asistentes IA (GET)
Método
Path
Descripción
GET
/for-assistants/project-info/:projectId
Información general del proyecto
GET
/for-assistants/priority-data/:projectId
Datos de bloques prioritarios
GET
/for-assistants/worktables-data/:projectId
Datos de worktables
GET
/for-assistants/get-blocks/:projectId
Lista de bloques del proyecto
GET
/for-assistants/get-labels/:projectId
Lista de etiquetas del proyecto
GET
/for-assistants/get-current-date-time
Fecha y hora actuales
Flujo del Webhook
[Usuario] → [WhatsApp] → [Proveedor WhatsApp (wuzapi/whatsmeow)]
│
▼ POST /whatsapp-bot/webhook
[whatsapp-bot]
│
├── Parsea el mensaje
├── Identifica al usuario (chatId)
├── Determina la intención
│
├── Si es texto → [open-ai / asistente]
│ └── El asistente llama a /for-assistants/*
│
├── Si es imagen → POST /for-assistants/send-photographs
│ └── Certifica el bloque con la imagen
│
└── Responde al usuario vía WhatsApp
Base de Datos
Motor: MongoDB v1.17.1 (go driver)
Patrón:DatabasePool (pool de conexiones)
Colecciones: Lee de blockIfc, labels, blockMsgs, blockImgs, worktables, etc. según el endpoint solicitado por el asistente
Variables de Entorno
Variable
Descripción
PORT
Puerto HTTP
DB_*
Credenciales y hosts MongoDB
OPENAI_API_KEY
Clave de OpenAI (probable)
WUZAPI_*
Credenciales de proveedor WhatsApp
Dependencias (go.mod)
Librería
Propósito
gin-gonic/gin
Framework HTTP
gin-contrib/cors
CORS
go.mongodb.org/mongo-driver
MongoDB
tomasen/realip
Obtener IP real del cliente (detrás de proxies)
Rol en el Sistema
[WhatsApp Provider (wuzapi/whatsmeow)]
│ POST /whatsapp-bot/webhook
▼
[whatsapp-bot]
│
├── Lee datos → MongoDB directamente
├── Llama → [open-ai service] para procesar respuesta del asistente
├── Llama → [api-bimtrazer] para certificar bloques
└── Llama → [media/registry] para almacenar imágenes
Los endpoints /for-assistants/* son consumidos directamente por el asistente de OpenAI como function calls (tool use) durante la conversación con el usuario.
Alertas Técnicas
CORS completamente abierto — cualquier origen puede acceder
Sin autenticación propia — todos los endpoints son públicos
El webhook de WhatsApp es un punto de entrada sin autenticación — sin validación de firma del proveedor
Los endpoints /for-assistants/certify-blocks y /for-assistants/send-photographs permiten certificar bloques sin validación de permisos del usuario
AuthMiddleware comentado — intención de agregar autenticación pero no implementada