98 lines
3.1 KiB
Markdown
98 lines
3.1 KiB
Markdown
# 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
|