1.9 KiB
1.9 KiB
Schema LOG
Log inmutable de mensajes del sistema TZZR.
Tabla: log.messages
Registra todos los mensajes entre usuarios y agentes IA.
| Campo | Tipo | Descripción |
|---|---|---|
| id | BIGSERIAL | Índice incremental |
| hash | CHAR(64) | SHA256 único del mensaje |
| session_hash | CHAR(64) | SHA256 de la sesión |
| sender_type | ENUM | Tipo de emisor: user, agent, orchestrator, system, tool |
| sender_id | CHAR(64) | Hash del emisor (referencia a players) |
| receiver_type | ENUM | Tipo de receptor: user, agent, orchestrator, system, tool |
| receiver_id | CHAR(64) | Hash del receptor (referencia a players) |
| leader_id | CHAR(64) | Hash del coordinador en multiagente (nullable) |
| role | TEXT | Rol del emisor en el contexto |
| content | TEXT | Contenido del mensaje |
| attachments | JSONB | Adjuntos (archivos, datos) |
| prev_hash | CHAR(64) | Hash del mensaje anterior (cadena de integridad) |
| context_hashes | CHAR(64)[] | Hashes de mensajes incluidos como contexto |
| hashtags | CHAR(64)[] | Hashes de etiquetas asociadas |
| ambient | JSONB | Contexto ambiental (nullable, solo cuando aplica) |
| created_at | TIMESTAMPTZ | Timestamp de creación |
Inmutabilidad
- INSERT: Permitido
- UPDATE: Bloqueado por trigger
- DELETE: Bloqueado por trigger
Cadena de integridad
Cada mensaje referencia al anterior via prev_hash:
msg1.hash = SHA256(msg1)
msg2.prev_hash = msg1.hash
msg2.hash = SHA256(msg2)
msg3.prev_hash = msg2.hash
...
Primer mensaje de sesión: prev_hash = NULL
Índices
session_hash- Buscar mensajes de una sesiónsender_id- Mensajes enviados por un actorreceiver_id- Mensajes recibidos por un actorprev_hash- Seguir cadena de integridadcreated_at- Ordenar cronológicamentehashtags(GIN) - Buscar por etiquetas
Relaciones externas
sender_idyreceiver_idreferencian hashes decore.playershashtagsreferencian hashes decore.hashtags