Add log schema and documentation
This commit is contained in:
59
docs/LOG.md
Normal file
59
docs/LOG.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# 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 |
|
||||
| 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ón
|
||||
- `sender_id` - Mensajes enviados por un actor
|
||||
- `receiver_id` - Mensajes recibidos por un actor
|
||||
- `prev_hash` - Seguir cadena de integridad
|
||||
- `created_at` - Ordenar cronológicamente
|
||||
- `hashtags` (GIN) - Buscar por etiquetas
|
||||
|
||||
## Relaciones externas
|
||||
|
||||
- `sender_id` y `receiver_id` referencian hashes de `core.players`
|
||||
- `hashtags` referencian hashes de `core.hashtags`
|
||||
Reference in New Issue
Block a user