Especificación · SIG

Infraestructura tecnológica

El SIG es una aplicación del monorepo de PlanItOne desplegada en el mismo servidor que el resto de la suite, pero con su propio dominio y su propio proceso. Esta página describe cada pieza y por qué está donde está.

La pila, de fuera hacia dentro

Proxy inverso con certificado

El dominio completo llega al proxy, que termina el cifrado y reenvía al proceso de la aplicación. La única excepción es /contaduria/, que se desvía al micrositio del programa de Contaduría Pública, alojado en el mismo servidor con otro proceso.

sigunitropico.co · www.sigunitropico.co → aplicación SIG

Servidor de aplicación

Express sobre Node con módulos ES. Sirve las vistas, los archivos estáticos, la API pública y la API del chatbot. Se ejecuta bajo un gestor de procesos que lo reinicia si cae y lo levanta al arrancar el servidor.

proceso «sig» · puerto interno 3106 · directorio apps/sig

Base de datos en tiempo real

Guarda el catálogo documental, las carpetas, el registro de descargas y las conversaciones. Es en tiempo real por diseño: cuando un administrador publica un documento, el listado se actualiza en las pantallas abiertas sin recargar.

proyecto sigunitropico · nodo raíz «sig»

Almacenamiento de archivos

Los binarios no viven en la base de datos. Se suben a un bucket con la misma jerarquía que el catálogo —/sig/archivos/{proceso}/{carpeta}/{nombre}— y al publicarlos se guarda la dirección de descarga. Cada objeto lleva además una cabecera de descarga con su nombre original, para que el archivo llegue bien nombrado aunque tenga tildes.

bucket sigunitropico.appspot.com

Autenticación

Inicio de sesión con Google. El servicio de identidad es compartido con el resto de la suite, de modo que el rol de una persona se lee del mismo registro de usuarios que usan las demás aplicaciones.

Google Sign-In · registro compartido de usuarios

Modelo del asesor virtual

El chatbot llama a un modelo de lenguaje con llamada a funciones. Trabaja con dos herramientas que consultan el catálogo real, de modo que las respuestas se apoyan en datos y no en la memoria del modelo.

gpt-4o-mini · function calling · dos herramientas

Correo saliente

Cuando alguien pide atención humana desde el chat, se envía un aviso a la División del SIG con el enlace directo al hilo. Se usa el mismo relé de correo que el resto de la suite.

relé SMTP compartido · remitente «Chatbot SIG · Oso Calidoso»
Sobre el modelo del chatbot. Está fijado deliberadamente a un modelo económico y rápido. La cuota de tokens por minuto de la cuenta es limitada, y subir a un modelo mayor provoca errores de límite de tasa en horas de uso normal. No cambiarlo sin revisar la cuota primero.

Qué pasa al publicar un documento

Es la operación que toca más piezas a la vez, y sirve para ver cómo encajan.

1

El navegador sube el binario al almacenamiento

Con carga reanudable y barra de progreso. Se adjuntan metadatos: nombre original, tipo de contenido y la cabecera que fuerza la descarga con el nombre correcto.

2

Se obtienen la dirección de descarga y los metadatos definitivos

Tamaño real, hash y fechas los aporta el almacenamiento, no el navegador: así el registro refleja el objeto tal como quedó guardado.

3

Se deriva la etiqueta de formato de la extensión

.docx → Word, .xlsx → Excel, .pdf → PDF. Si la extensión no está en la tabla, se usa en mayúsculas tal cual.

4

Se escribe el registro bajo el proceso

Se genera una clave nueva y se guardan nombre, carpeta, formato, peso, fecha, ruta, dirección y metadatos, más la identidad de quien publicó, que queda para trazabilidad interna.

5

El listado se actualiza solo

Las pantallas suscritas reciben el cambio y repintan las píldoras y las tarjetas. No hay recarga ni paso de publicación.

Diagrama de despliegue
Esquema con el proxy, el proceso de la aplicación, la base de datos, el almacenamiento, el servicio de identidad y el modelo del chatbot, y las flechas entre ellos.
Espacio para screenshot

Decisiones de rendimiento

Vistas en caché

Cada vista se lee de disco una vez, se le inyecta el widget del chat y se guarda en memoria. Las siguientes peticiones no tocan el disco.

Caché en la API

El mapa de procesos se cachea un minuto y los archivos por proceso treinta segundos, además de la caché de cinco minutos que se anuncia al cliente.

Suscripción, no sondeo

El listado de documentos se suscribe a los cambios en lugar de preguntar cada pocos segundos.

Descarga directa

Los binarios se sirven desde el almacenamiento, sin pasar por el servidor de la aplicación. El proceso no se convierte en cuello de botella.

Puntos de atención operativa

PuntoQué vigilar
Modelo del chatbot La cuota de tokens por minuto. Cambiar a un modelo mayor provoca errores de límite en uso normal.
Catálogo del chatbot Es una foto del repositorio. Tras una carga grande hay que regenerarlo o el asesor no conocerá lo nuevo.
Caché de vistas Se llena al arrancar. Un cambio en una vista requiere reiniciar el proceso para que se vea.
Ausencia de papelera Eliminar un documento borra registro y binario. No hay restauración.
Certificado del dominio Renovación automática; conviene comprobar que sigue vigente tras cambios en el proxy.
Identidad compartida El rol se lee del registro de usuarios de la suite: un cambio ahí afecta también al SIG.

Por dónde seguir

Modelo de datos

Qué guarda exactamente cada nodo.

Rutas de acceso

Cómo se resuelve una petición.

Oso Calidoso

La base de conocimiento y las herramientas.

Autenticación

Cómo se resuelve la identidad y el rol.