# 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ón - `thread_hash` - Mensajes de un hilo - `owner_id` - Mensajes enviados por - `master_player` - Mensajes con líder - `prev_hash` - Cadena de integridad - `created_at` - Orden cronológico - `hashtags` (GIN) - Búsqueda por etiquetas - `players_id` (GIN) - Búsqueda por receptores - `item_id` (GIN) - Búsqueda por items - `flag_id` - Filtrar por jurisdicción - `loc_id` - Filtrar por ubicación ### log.message_refs - `message_hash` - Referencias de un mensaje - `ref_hash` - Uso de una referencia - `ref_type` - Filtrar por tipo - `thread_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.messages` - `ref_hash` (accountant) → libros contables - `ref_hash` (secretary) → registros secretaría