Modelo de datos
El SIG guarda todo bajo un único nodo raíz con cuatro hijos. La estructura es deliberadamente plana: dos niveles para los documentos y ninguna relación implícita que haya que reconstruir en el cliente.
Vista general
sig/
├── archivos/{slug}/{clave} ← el catálogo documental
├── carpetas/{slug}/{id} ← carpetas creadas a mano por un administrador
├── descargas/{correo}/{id} ← registro de descargas con sesión iniciada
└── chatbot/conversaciones/{id} ← hilos del asesor virtual
├── meta ← estado, idioma, página, usuario, fechas
└── mensajes/{id} ← cada turno de la conversación
Los binarios no viven en la base de datos: se almacenan aparte, en un bucket de archivos, y el registro guarda la ruta y la dirección de descarga. Esa separación es lo que permite que el listado de un proceso se cargue al instante aunque el proceso tenga cientos de megabytes publicados.
archivos · el catálogo documental
sig/archivos/{slug}/{clave}
Un registro por documento publicado. El primer nivel es el slug del proceso
(gth, pet…) y el segundo una clave generada al publicar, que es la que
aparece en el enlace de descarga.
nombrecarpetaformatopesofechaSubidastoragePath/sig/archivos/{slug}/{carpeta}/{nombre}. Refleja la misma jerarquía que la base de datos.urlmetadatauploaderFR-IFO-01.02) vive dentro del
campo nombre; la clave del registro es un identificador opaco. Al publicar una versión nueva se crea un
registro con clave nueva, y por eso el enlace de la versión anterior deja de resolver. Ver
Enlaces de descarga.carpetas · las creadas a mano
sig/carpetas/{slug}/{id}
Registro de las carpetas que un administrador creó explícitamente escribiendo su nombre. Sirve para que aparezcan en el selector de carga aunque todavía no tengan documentos.
nombrecreatedAtcreatedBycarpeta de los documentos publicados. Una carpeta registrada pero vacía no aparece como
píldora; y una carpeta que existe solo porque alguien escribió su nombre al subir un archivo aparece igualmente
aunque no esté en este nodo.descargas · el uso real
sig/descargas/{correo saneado}/{id}
Un registro por descarga realizada con sesión iniciada. El primer nivel es el correo del usuario con los puntos sustituidos, porque las claves de la base de datos no admiten puntos.
fechaDescargaarchivoKeyslugnombre formato peso
chatbot · las conversaciones
sig/chatbot/conversaciones/{id}/meta
Estado y contexto del hilo.
statusactiva o cerrada.langpagecreatedAt lastActivity
needsAdmin needsAdminSince adminAssigned
closedAt closedBy
userId userEmail userName userPhoto
sig/chatbot/conversaciones/{id}/mensajes/{id}
Cada turno de la conversación, en orden cronológico.
roleuser o assistant.timestampcontentQué se publica y qué no
Esta documentación lee producción para mostrar cifras vivas. La proyección que hace es deliberadamente estrecha.
| Se publica | No se publica nunca |
|---|---|
| Conteos de documentos por proceso, tipo, carpeta y formato | Correo, nombre o identificador de quien subió un archivo |
| Volumen total del repositorio y fecha de la última publicación | Direcciones de descarga directa del almacenamiento |
| Número de descargas y número de personas distintas | Qué descargó cada persona |
| Conteos de conversaciones, mensajes, estados e idiomas | El contenido de las conversaciones |
| Páginas desde las que se abre el chat | Correo, nombre o foto de quien conversó |
| Estructura institucional: procesos, líderes y correos de dependencia | Cualquier dato que identifique a una persona natural |
talentohumano@, juridica@…), no direcciones personales. Están además
publicados en el propio sitio del SIG.Dos detalles del modelo que conviene conocer
Enlaces con y sin proceso
Existen documentos registrados directamente bajo sig/archivos/{clave}, sin nivel de proceso. Son
anteriores a la organización actual; la página de descarga los sigue resolviendo.
Correos como claves
El nodo de descargas usa el correo con los puntos sustituidos como clave, igual que el registro de usuarios de la suite. Es el puente entre ambos.