3.1 KiB
3.1 KiB
Schema LOG
Log inmutable de mensajes del sistema TZZR.
Tabla 1: 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 |
| thread_hash | CHAR(64) | SHA256 del hilo (nullable) |
| owner_id | CHAR(64) | Emisor del mensaje (→ ply) |
| players_id | CHAR(64)[] | Receptores (→ ply) |
| master_player | CHAR(64) | Líder/coordinador (→ ply, nullable) |
| role | TEXT | Rol del emisor |
| content | TEXT | Contenido del mensaje |
| attachments | JSONB | Adjuntos |
| prev_hash | CHAR(64) | Hash mensaje anterior (cadena integridad) |
| hashtags | CHAR(64)[] | Etiquetas (→ hst) |
| flag_id | CHAR(64) | Jurisdicción (→ flg, nullable) |
| master_item_id | CHAR(64) | Item principal (→ itm, nullable) |
| item_id | CHAR(64)[] | Items relacionados (→ itm) |
| loc_id | CHAR(64) | Ubicación (→ loc, nullable) |
| ambient | JSONB | Contexto ambiental (nullable) |
| created_at | TIMESTAMPTZ | Timestamp |
Tabla 2: log.message_refs
Relaciona cada mensaje con su contexto y conocimiento.
| Campo | Tipo | Descripción |
|---|---|---|
| id | BIGSERIAL | Índice incremental |
| message_hash | CHAR(64) | Mensaje que se envía |
| ref_hash | CHAR(64) | Referencia (mensaje, registro contable, secretaría) |
| ref_type | ENUM | context, accountant, secretary |
| position | INT | Orden de la referencia |
| thread_hash | CHAR(64) | Hilo (nullable) |
Tipos de referencia
- context: Mensajes anteriores incluidos como contexto
- accountant: Registros de libros contables (conocimiento)
- secretary: Registros de secretaría (conocimiento)
Inmutabilidad
Ambas tablas:
- INSERT: Permitido
- UPDATE: Bloqueado por trigger
- DELETE: Bloqueado por trigger
Cadena de integridad
msg1.hash = SHA256(msg1)
msg2.prev_hash = msg1.hash
msg2.hash = SHA256(msg2)
...
Primer mensaje de sesión: prev_hash = NULL
Índices
log.messages
session_hash- Mensajes de una sesiónthread_hash- Mensajes de un hiloowner_id- Mensajes enviados pormaster_player- Mensajes con líderprev_hash- Cadena de integridadcreated_at- Orden cronológicohashtags(GIN) - Búsqueda por etiquetasplayers_id(GIN) - Búsqueda por receptoresitem_id(GIN) - Búsqueda por itemsflag_id- Filtrar por jurisdicciónloc_id- Filtrar por ubicación
log.message_refs
message_hash- Referencias de un mensajeref_hash- Uso de una referenciaref_type- Filtrar por tipothread_hash- Referencias de un hilo
Relaciones externas (Sistema de Componentes TZZR)
owner_id,players_id,master_player→ply(Players)hashtags→hst(Hash Semantic Tagging)flag_id→flg(Flags/Jurisdicciones)master_item_id,item_id→itm(Items)loc_id→loc(Locations)ref_hash(context) →log.messagesref_hash(accountant) → libros contablesref_hash(secretary) → registros secretaría