310 lines
8.6 KiB
Markdown
310 lines
8.6 KiB
Markdown
|
|
# Planos de Datos TZZR
|
||
|
|
|
||
|
|
**Versión:** 5.0
|
||
|
|
**Fecha:** 2024-12-24
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Visión General
|
||
|
|
|
||
|
|
El sistema TZZR utiliza tres planos conceptuales para organizar la información:
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────────────────────────┐
|
||
|
|
│ T0 - PLANO IDEAL │
|
||
|
|
│ ITM (Items): Objetivos, acciones ideales, requerimientos │
|
||
|
|
│ Estado: PLANIFICADO - Sin implementación actual │
|
||
|
|
└─────────────────────────────────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼ materializa
|
||
|
|
┌─────────────────────────────────────────────────────────────────┐
|
||
|
|
│ MST - MILESTONES │
|
||
|
|
│ Compromisos futuros con fecha de vencimiento │
|
||
|
|
│ Estado: IMPLEMENTADO en CORP (tabla milestones) │
|
||
|
|
└─────────────────────────────────────────────────────────────────┘
|
||
|
|
│
|
||
|
|
▼ cumple/genera
|
||
|
|
┌─────────────────────────────────────────────────────────────────┐
|
||
|
|
│ BCK - BLOQUES │
|
||
|
|
│ Hechos inmutables del pasado (blockchain-ready) │
|
||
|
|
│ Estado: IMPLEMENTADO en CORP (tabla bloques) │
|
||
|
|
└─────────────────────────────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## T0 - Plano Ideal (ITM)
|
||
|
|
|
||
|
|
### Concepto
|
||
|
|
|
||
|
|
El plano T0 contiene los Items (ITM) que representan el estado ideal futuro. Son la "partitura" que guía las acciones.
|
||
|
|
|
||
|
|
### Tipos de Items
|
||
|
|
|
||
|
|
| Tipo | Descripción |
|
||
|
|
|------|-------------|
|
||
|
|
| accion_ideal | Acción que debería ejecutarse |
|
||
|
|
| objetivo | Meta a alcanzar |
|
||
|
|
| requerimiento | Requisito a cumplir |
|
||
|
|
|
||
|
|
### Estado de Implementación
|
||
|
|
|
||
|
|
**PLANIFICADO** - Schema definido pero sin tablas creadas.
|
||
|
|
|
||
|
|
### Schema Propuesto
|
||
|
|
|
||
|
|
```sql
|
||
|
|
CREATE TABLE items (
|
||
|
|
id BIGSERIAL PRIMARY KEY,
|
||
|
|
h_item VARCHAR(64) UNIQUE NOT NULL,
|
||
|
|
h_instancia VARCHAR(64) NOT NULL,
|
||
|
|
secuencia BIGINT NOT NULL,
|
||
|
|
hash_previo VARCHAR(64),
|
||
|
|
hash_contenido VARCHAR(64),
|
||
|
|
tipo_item VARCHAR(50) NOT NULL,
|
||
|
|
titulo VARCHAR(255) NOT NULL,
|
||
|
|
descripcion TEXT,
|
||
|
|
criterios_aceptacion JSONB,
|
||
|
|
metadata JSONB,
|
||
|
|
proyecto_tag VARCHAR(64),
|
||
|
|
etiquetas JSONB,
|
||
|
|
estado VARCHAR(20) DEFAULT 'draft',
|
||
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
|
|
created_by VARCHAR(64),
|
||
|
|
UNIQUE (h_instancia, secuencia)
|
||
|
|
);
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## MST - Milestones
|
||
|
|
|
||
|
|
### Concepto
|
||
|
|
|
||
|
|
Los milestones representan compromisos con fecha futura. Tienen un período flotante de 24 horas antes de consolidarse.
|
||
|
|
|
||
|
|
### Estado de Implementación
|
||
|
|
|
||
|
|
**IMPLEMENTADO** en CORP (database: corp).
|
||
|
|
|
||
|
|
### Schema Actual
|
||
|
|
|
||
|
|
```sql
|
||
|
|
-- Tabla: milestones (CORP)
|
||
|
|
CREATE TABLE milestones (
|
||
|
|
id BIGSERIAL PRIMARY KEY,
|
||
|
|
h_milestone VARCHAR(64) UNIQUE NOT NULL,
|
||
|
|
h_instancia VARCHAR(64) NOT NULL,
|
||
|
|
secuencia BIGINT NOT NULL,
|
||
|
|
hash_previo VARCHAR(64),
|
||
|
|
hash_contenido VARCHAR(64),
|
||
|
|
tipo_milestone VARCHAR(50) NOT NULL,
|
||
|
|
fecha_vencimiento DATE NOT NULL,
|
||
|
|
descripcion TEXT,
|
||
|
|
metadata JSONB,
|
||
|
|
proyecto_tag VARCHAR(64),
|
||
|
|
etiquetas JSONB,
|
||
|
|
estado VARCHAR(20) DEFAULT 'draft',
|
||
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
|
|
modified_at TIMESTAMPTZ,
|
||
|
|
created_by VARCHAR(64),
|
||
|
|
UNIQUE (h_instancia, secuencia)
|
||
|
|
);
|
||
|
|
```
|
||
|
|
|
||
|
|
### Tipos de Milestones
|
||
|
|
|
||
|
|
| Tipo | Descripción |
|
||
|
|
|------|-------------|
|
||
|
|
| compromiso | Compromiso de entrega |
|
||
|
|
| deadline | Fecha límite |
|
||
|
|
| evento | Evento programado |
|
||
|
|
| recordatorio | Recordatorio futuro |
|
||
|
|
|
||
|
|
### Fórmula Hash
|
||
|
|
|
||
|
|
```
|
||
|
|
h_milestone = SHA-256(h_instancia:secuencia:tipo:contenido)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Período Flotante
|
||
|
|
|
||
|
|
- **Duración:** 24 horas desde creación
|
||
|
|
- **Durante período:** Modificable vía MASON
|
||
|
|
- **Después:** Inmutable, solo lectura
|
||
|
|
|
||
|
|
**Nota:** Actualmente no hay scheduler que procese la expiración automáticamente.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## BCK - Bloques
|
||
|
|
|
||
|
|
### Concepto
|
||
|
|
|
||
|
|
Los bloques son registros inmutables de hechos pasados. Cada bloque está encadenado al anterior mediante hash, preparando la infraestructura para blockchain.
|
||
|
|
|
||
|
|
### Estado de Implementación
|
||
|
|
|
||
|
|
**IMPLEMENTADO** en CORP (database: corp).
|
||
|
|
|
||
|
|
### Schema Actual
|
||
|
|
|
||
|
|
```sql
|
||
|
|
-- Tabla: bloques (CORP)
|
||
|
|
CREATE TABLE bloques (
|
||
|
|
id BIGSERIAL PRIMARY KEY,
|
||
|
|
h_bloque VARCHAR(64) UNIQUE NOT NULL,
|
||
|
|
h_instancia VARCHAR(64) NOT NULL,
|
||
|
|
secuencia BIGINT NOT NULL,
|
||
|
|
hash_previo VARCHAR(64),
|
||
|
|
hash_contenido VARCHAR(64) NOT NULL,
|
||
|
|
tipo_bloque VARCHAR(50) NOT NULL,
|
||
|
|
contenido JSONB NOT NULL,
|
||
|
|
metadata JSONB,
|
||
|
|
item_asociado VARCHAR(64),
|
||
|
|
milestone_asociado VARCHAR(64),
|
||
|
|
h_maestro JSONB,
|
||
|
|
h_player VARCHAR(64),
|
||
|
|
h_loc VARCHAR(64),
|
||
|
|
h_flag VARCHAR(64),
|
||
|
|
estado VARCHAR(20) DEFAULT 'consolidado',
|
||
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
|
|
validated_at TIMESTAMPTZ,
|
||
|
|
validated_by VARCHAR(64),
|
||
|
|
UNIQUE (h_instancia, secuencia)
|
||
|
|
);
|
||
|
|
```
|
||
|
|
|
||
|
|
### Tipos de Bloques
|
||
|
|
|
||
|
|
| Tipo | Descripción |
|
||
|
|
|------|-------------|
|
||
|
|
| transaccion | Transacción económica |
|
||
|
|
| documento | Documento consolidado |
|
||
|
|
| evento | Evento registrado |
|
||
|
|
| milestone_cumplido | Milestone que se cumplió |
|
||
|
|
|
||
|
|
### Fórmula Hash
|
||
|
|
|
||
|
|
```
|
||
|
|
h_bloque = SHA-256(h_instancia:secuencia:hash_previo:hash_contenido)
|
||
|
|
hash_contenido = SHA-256(contenido_serializado)
|
||
|
|
```
|
||
|
|
|
||
|
|
### Encadenamiento
|
||
|
|
|
||
|
|
```
|
||
|
|
Bloque N-1 Bloque N
|
||
|
|
┌──────────────────┐ ┌──────────────────┐
|
||
|
|
│ h_bloque: abc123 │ ──────► │ hash_previo: │
|
||
|
|
│ hash_contenido: │ │ abc123 │
|
||
|
|
│ def456 │ │ h_bloque: ghi789 │
|
||
|
|
│ secuencia: 1 │ │ secuencia: 2 │
|
||
|
|
└──────────────────┘ └──────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Flujo Entre Planos
|
||
|
|
|
||
|
|
```
|
||
|
|
Usuario crea ITM
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
ITM (T0) "Objetivo: Completar proyecto X"
|
||
|
|
│
|
||
|
|
│ materializa
|
||
|
|
▼
|
||
|
|
MST "Milestone: Entrega módulo 1 - 2024-01-15"
|
||
|
|
│
|
||
|
|
│ [período flotante 24h]
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
MASON (enriquecimiento)
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
FELDMAN (validación)
|
||
|
|
│
|
||
|
|
│ cumple/genera
|
||
|
|
▼
|
||
|
|
BCK "Bloque: Módulo 1 entregado - 2024-01-14"
|
||
|
|
│
|
||
|
|
▼
|
||
|
|
Inmutable ✓
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Tablas de Procesamiento
|
||
|
|
|
||
|
|
### FELDMAN Cola
|
||
|
|
|
||
|
|
```sql
|
||
|
|
-- feldman_cola: Elementos pendientes de validación
|
||
|
|
CREATE TABLE feldman_cola (
|
||
|
|
id BIGSERIAL PRIMARY KEY,
|
||
|
|
tipo VARCHAR(50) NOT NULL, -- 'milestone' o 'bloque'
|
||
|
|
h_entrada VARCHAR(64) NOT NULL,
|
||
|
|
contenido JSONB NOT NULL,
|
||
|
|
prioridad INTEGER DEFAULT 0,
|
||
|
|
estado VARCHAR(20) DEFAULT 'pendiente',
|
||
|
|
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||
|
|
processed_at TIMESTAMPTZ
|
||
|
|
);
|
||
|
|
```
|
||
|
|
|
||
|
|
### FELDMAN Validaciones
|
||
|
|
|
||
|
|
```sql
|
||
|
|
-- feldman_validaciones: Auditoría de validaciones
|
||
|
|
CREATE TABLE feldman_validaciones (
|
||
|
|
id BIGSERIAL PRIMARY KEY,
|
||
|
|
h_entrada VARCHAR(64) NOT NULL,
|
||
|
|
regla VARCHAR(50) NOT NULL, -- M-001, M-002, M-003
|
||
|
|
resultado BOOLEAN NOT NULL,
|
||
|
|
mensaje TEXT,
|
||
|
|
validated_at TIMESTAMPTZ DEFAULT NOW()
|
||
|
|
);
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Reglas de Validación FELDMAN
|
||
|
|
|
||
|
|
| Regla | Nombre | Descripción |
|
||
|
|
|-------|--------|-------------|
|
||
|
|
| M-001 | Hash único | h_bloque/h_milestone no existe previamente |
|
||
|
|
| M-002 | Encadenamiento | hash_previo apunta a bloque existente |
|
||
|
|
| M-003 | Integridad | hash_contenido = SHA-256(contenido) |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Decisiones de Diseño
|
||
|
|
|
||
|
|
### D-004: Eliminar columnas duplicadas
|
||
|
|
|
||
|
|
**Problema:** Milestones tienen columnas + JSONB duplicados.
|
||
|
|
|
||
|
|
**Decisión:** Mantener metadatos solo en JSONB `metadata`.
|
||
|
|
|
||
|
|
### D-007: Timestamps UTC
|
||
|
|
|
||
|
|
**Problema:** Inconsistencia en zonas horarias.
|
||
|
|
|
||
|
|
**Decisión:** Usar `TIMESTAMPTZ` y almacenar en UTC.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## Roadmap
|
||
|
|
|
||
|
|
### Implementado
|
||
|
|
- [x] Tabla milestones en CORP
|
||
|
|
- [x] Tabla bloques en CORP
|
||
|
|
- [x] Fórmulas hash definidas
|
||
|
|
|
||
|
|
### Pendiente
|
||
|
|
- [ ] Tabla items (T0)
|
||
|
|
- [ ] Scheduler para período flotante
|
||
|
|
- [ ] Merkle tree para verificación
|
||
|
|
- [ ] Smart contract blockchain (futuro)
|