Add Oracle component and DATABASE_SPEC

- Add oracle.md: Complete specification for Oracle (prospectiva)
  - Puerto 5055, Capa 2 análisis prospectivo
  - 7 secciones del análisis, 10 reglas O-*
  - Integración con Grace, métricas calibración
- Add DATABASE_SPEC.md: Schema v2.1 with Oracle tables
  - oracle_analisis, oracle_escenario
  - Total: 28 tables

Synced from R2 skynet v10.1

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
ARCHITECT
2026-01-06 04:15:04 +00:00
parent e020e2c518
commit 1917054170
2 changed files with 703 additions and 0 deletions

View File

@@ -0,0 +1,253 @@
# Oracle (Prospectiva)
**Estado:** Especificación completa - Implementación pendiente
**Puerto propuesto:** 5055
## Descripción
Módulo de análisis prospectivo del Sistema de Registro Inmutable. Permite explorar escenarios futuros mediante la manipulación de supuestos inciertos, manteniendo inmutables los datos históricos y el modelo de cálculo.
```
┌─────────────────────────────────────────────────────────────────┐
│ PRINCIPIO ORACLE │
│ │
│ "No predecimos el futuro. Documentamos qué pasaría │
│ SI ciertos supuestos se cumplen. │
│ La honestidad está en los supuestos, no en el resultado." │
│ │
└─────────────────────────────────────────────────────────────────┘
```
## Ficha Técnica
| Atributo | Valor |
|----------|-------|
| Nombre | Oracle |
| Descriptor | prospectiva |
| Versión personal | Oracle (DECK) |
| Versión corporativa | Oracle (CORP) |
| Puerto | 5055 |
| Mutabilidad | Inmutable post-emisión |
| Persistencia | Permanente |
| Eliminación | Prohibida |
## Posición en el Sistema
Oracle implementa la **Capa 2: Análisis Prospectivo** del marco de Contabilidad Bifurcada:
```
┌─────────────────────────────────────────────────────────────────┐
│ CAPA 1: REGISTRO HISTÓRICO (implementada) │
│ Clara/Margaret → Mason → Feldman → [NOTARIO] │
│ Hechos consumados, inmutables, verificables │
└─────────────────────────────────────────────────────────────────┘
│ alimenta (solo lectura)
┌─────────────────────────────────────────────────────────────────┐
│ CAPA 2: ANÁLISIS PROSPECTIVO (Oracle) │
│ Supuestos explícitos + Escenarios + Sensibilidad │
│ Proyecciones documentadas, auditables, no vinculantes │
└─────────────────────────────────────────────────────────────────┘
```
## Flujo de Datos
```
Feldman (libros contables)
│ consulta (solo lectura)
Oracle (prospectiva)
├── Genera análisis con hash (mrf)
├── Usuario explora escenarios
├── Guarda escenarios (inmutables)
[Almacenamiento propio de Oracle]
│ [cuando el horizonte temporal se cumple]
Contraste con realidad (datos nuevos de Feldman)
└── Métricas de calibración
```
## Relación con Componentes
| Componente | Relación | Descripción |
|------------|----------|-------------|
| **Feldman** | Entrada (solo lectura) | Única fuente de datos. Oracle nunca escribe en Feldman |
| **Grace** | Colaboración | Ejecuta modelos vía S-CONTRACT, sugiere supuestos |
| **Sentinel** | Verificación | Valida integridad de análisis y escenarios |
| **ITM** | Informativo | Oracle puede evaluar viabilidad de items/objetivos |
| **MST** | Informativo | Oracle puede evaluar probabilidad de cumplimiento |
| **BCK** | Calibración | Bloques consolidados permiten contrastar predicción vs realidad |
## Arquitectura del Análisis
Cada análisis Oracle es una unidad atómica con 7 secciones:
### 1. Datos Base
| Campo | Tipo | Descripción |
|-------|------|-------------|
| h_bloques_feldman | Array[mrf] | Referencias a bloques de Feldman |
| periodo_inicio | Date | Inicio del período histórico |
| periodo_fin | Date | Fin del período histórico |
| h_dataset | mrf | Hash de integridad del conjunto |
### 2. Supuestos
Lista exhaustiva de afirmaciones no verificables:
| Campo | Tipo | Descripción |
|-------|------|-------------|
| id | String | Identificador (ej: SUP_001) |
| name_es | String | Nombre en español |
| txt | Text | Descripción |
| tipo | Enum | porcentaje, moneda, cantidad, booleano |
| valor_defecto | Numeric | Valor por defecto |
| rango_min | Numeric | Mínimo plausible |
| rango_max | Numeric | Máximo plausible |
| fuente_tipo | Enum | histórico, estimación_externa, juicio_experto |
| confianza | Enum | alta, media, baja |
### 3. Modelo
| Campo | Tipo | Descripción |
|-------|------|-------------|
| name_es | String | Nombre del modelo |
| version | String | Versión del modelo |
| metodologia | Text | Descripción de la metodología |
| formulas | JSONB | Fórmulas de cálculo |
| limitaciones | Text | Condiciones de no aplicabilidad |
### 4. Escenarios (Obligatorios)
| Escenario | Descripción |
|-----------|-------------|
| **Base** | Supuestos en valores por defecto |
| **Optimista** | Supuestos ajustados favorablemente |
| **Pesimista** | Supuestos ajustados desfavorablemente |
| **Estrés** | Límites del modelo - qué tendría que pasar para resultado inaceptable |
### 5. Sensibilidad
| Campo | Tipo | Descripción |
|-------|------|-------------|
| contribucion | JSONB | % de cada supuesto en varianza total |
| supuestos_criticos | Array | Top 3 supuestos más influyentes |
### 6. Resultado
Nunca cifra única:
| Campo | Tipo | Descripción |
|-------|------|-------------|
| rango_min | Numeric | Límite inferior |
| rango_max | Numeric | Límite superior |
| punto_medio | Numeric | Valor central |
| horizonte | String | Período de proyección |
| unidad | String | Unidad de medida |
### 7. Metadata
| Campo | Tipo | Descripción |
|-------|------|-------------|
| mrf | VARCHAR(64) | Hash público del análisis |
| private_mrf | VARCHAR(64) | Hash privado (prueba de propiedad) |
| date | Date | Fecha de emisión |
| fecha_caducidad | Date | Cuándo expira el análisis |
| condiciones_invalidacion | Text | Qué haría el análisis inaplicable |
## Interfaz de Escenarios
```
┌─────────────────────────────────────────────────────────────────┐
│ PRINCIPIO DE SEPARACIÓN │
│ │
│ INMUTABLE (no se toca) VARIABLE (el usuario mueve) │
│ ---------------------- -------------------------- │
│ - Datos históricos - Supuestos macro │
│ - Fórmulas del modelo - Tasas estimadas │
│ - Reglas de cálculo - Probabilidades asignadas │
│ - Metodología aplicada - Horizontes temporales │
│ │
│ "Cambias lo incierto, no lo calculado" │
│ │
└─────────────────────────────────────────────────────────────────┘
```
Cada supuesto se presenta como slider con:
- Nombre descriptivo
- Valor actual (posición del slider)
- Rango Min-Max
- Fuente del valor por defecto
- Indicador de confianza (alta/media/baja)
Cada movimiento dispara recálculo en tiempo real.
## Reglas de Validación (O-*)
| Código | Nombre | Descripción | Severidad |
|--------|--------|-------------|-----------|
| O-001 | Trazabilidad total | Todo dato debe tener mrf de Feldman | CRITICAL |
| O-002 | Supuesto explícito | Ningún supuesto implícito permitido | CRITICAL |
| O-003 | Sin cifra única | Resultados siempre como rango | HIGH |
| O-004 | Modelo nombrado | No metodologías ad-hoc | HIGH |
| O-005 | Caducidad obligatoria | fecha_caducidad requerido | HIGH |
| O-006 | Condición invalidación | condiciones_invalidacion requerido | HIGH |
| O-007 | Conservación permanente | Eliminación prohibida | CRITICAL |
| O-008 | Escenarios obligatorios | Los 4 escenarios requeridos | HIGH |
| O-009 | Sensibilidad visible | Campo sensibilidad requerido | MEDIUM |
| O-010 | Inmutabilidad post-emisión | Solo INSERT, nunca UPDATE | CRITICAL |
## Integración con Grace (S-CONTRACT)
| Módulo Grace | Uso en Oracle |
|--------------|---------------|
| PREDICTOR | Generar pronósticos base |
| CLUSTERER | Agrupar escenarios similares |
| SCORER | Evaluar calidad de supuestos |
| NARRATOR | Generar informe en lenguaje natural |
| AUDITOR | Detectar anomalías en proyecciones |
## Ciclo de Retroalimentación
Cuando el horizonte temporal se cumple:
1. Oracle recupera datos reales de Feldman
2. Compara supuestos usados vs valores reales
3. Compara resultado proyectado vs resultado observado
4. Calcula % error por supuesto incorrecto vs limitación modelo
## Métricas de Calibración
| Métrica | Descripción |
|---------|-------------|
| Sesgo de supuestos | "Tus estimaciones de crecimiento son 15% optimistas" |
| Precisión de rangos | "90% de veces el resultado cayó en tu rango" |
| Sensibilidad real vs estimada | "Dijiste inflación, pero fue tipo de cambio" |
## Lo que Oracle NO es
- No es sistema de alertas
- No toma decisiones
- No modifica datos de Feldman
- No genera "la respuesta correcta"
- No sustituye juicio humano
## Limitaciones Conocidas
| Limitación | Descripción |
|------------|-------------|
| No captura cisnes negros | Eventos radicalmente improbables no aparecen |
| Depende de calidad Feldman | Datos incorrectos = análisis heredan problemas |
| Modelos son simplificaciones | No capturan toda la realidad |
| Pasado no garantiza futuro | Cambios de régimen difíciles de anticipar |
---
*SKYNET v10.1 - Oracle - 6 Enero 2026*

View File

@@ -0,0 +1,450 @@
# TZZR - Especificación de Base de Datos
**Versión:** 2.1
**Fecha:** 6 Enero 2026
**Estado:** Actualizado
---
## 1. Estructura de Tablas Principales
### 1.1 Esquema Completo
| hst | flg | ply | itm | loc | mst | bck | mth |
|-----|-----|-----|-----|-----|-----|-----|-----|
| num | num | num | num | num | num | num | num |
| alias | alias | alias | alias | alias | alias | alias | alias |
| ref | ref | ref | ref | ref | ref | ref | ref |
| mrf | mrf | mrf | mrf | mrf | mrf | mrf | mrf |
| private_mrf | private_mrf | private_mrf | private_mrf | private_mrf | private_mrf | private_mrf | private_mrf |
| name_es | name_es | name_es | name_es | name_es | name_es | name_es | name_es |
| name_en | name_en | name_en | name_en | name_en | name_en | name_en | name_en |
| name_ch | name_ch | name_ch | name_ch | name_ch | name_ch | name_ch | name_ch |
| group | group | group | - | - | - | - | - |
| - | - | - | set_hst | set_hst | set_hst | set_hst | set_hst |
| - | - | - | - | - | link_mst | link_mst | - |
| - | - | - | - | - | link_bck | link_bck | - |
| txt | txt | txt | txt | txt | txt | txt | txt |
| - | - | hashtags | hashtags | hashtags | hashtags | hashtags | hashtags |
| standard_md | standard_md | - | - | - | - | - | - |
| - | - | standard_data | standard_data | standard_data | standard_data | standard_data | standard_data |
| jsonb_standard | jsonb_standard | - | - | - | - | - | - |
| - | - | jsonb_data | jsonb_data | jsonb_data | jsonb_data | jsonb_data | jsonb_data |
| version | version | version | version | version | version | version | version |
| rootref | rootref | rootref | rootref | rootref | rootref | rootref | rootref |
| roothash | roothash | roothash | roothash | roothash | roothash | roothash | roothash |
| img_url | img_url | img_url | img_url | img_url | img_url | img_url | img_url |
| img_thumb_url | img_thumb_url | img_thumb_url | img_thumb_url | img_thumb_url | img_thumb_url | img_thumb_url | img_thumb_url |
| owner | owner | owner | owner | owner | owner | owner | owner |
| - | - | set_flg | set_flg | set_flg | set_flg | set_flg | set_flg |
| url | url | url | url | url | - | - | - |
| - | - | - | url_atc | - | url_atc | url_atc | url_atc |
| url_json | url_json | url_json | url_json | url_json | url_json | url_json | url_json |
| date | date | date | date | date | date | date | date |
| created_at | created_at | created_at | created_at | created_at | created_at | created_at | created_at |
| - | - | - | - | - | mth_mrf | mth_mrf | - |
---
## 2. Clasificación de Tablas
| Tipo | Tablas | Descripción |
|------|--------|-------------|
| Etiquetado semántico | hst, flg | Vocabulario controlado, trazabilidad |
| Entidades de negocio | ply, itm, loc | Actores, productos, ubicaciones |
| Gestión de procesos | mst, bck, mth | Burocracia, evidencia real, métodos |
### 2.1 Detalle MST/BCK/MTH
| Tabla | Nombre | Descripción |
|-------|--------|-------------|
| mst | Master | Burocracia, documentos formales, registros administrativos |
| bck | Back | Evidencia del mundo real, trabajo efectivo, hechos |
| mth | Method | Métodos, procesos productivos predefinidos |
---
## 3. Descripción de Campos
| Campo | Tipo | Descripción |
|-------|------|-------------|
| num | INTEGER | Identificador numérico autoincremental |
| alias | VARCHAR | Nombre corto del registro |
| ref | VARCHAR | Código único (típicamente 3 letras) |
| mrf | VARCHAR(64) | Hash público SHA-256 (identidad del registro) |
| private_mrf | VARCHAR(64) | Hash original SHA-256 (prueba de propiedad) |
| name_es | VARCHAR | Nombre en español |
| name_en | VARCHAR | Nombre en inglés |
| name_ch | VARCHAR | Nombre en chino |
| group | VARCHAR | Subgrupo dentro de hst/flg/ply (enum cerrado) |
| set_hst | VARCHAR(64) | mrf del hashtag que define el tipo (abierto) |
| link_mst | VARCHAR/JSONB | Enlace a un mst (único o múltiple según tabla) |
| link_bck | JSONB/VARCHAR | Enlace a bck (único o múltiple según tabla) |
| txt | TEXT | Texto libre / descripción |
| hashtags | JSONB | Array de mrfs de hst |
| standard_md | TEXT | Descripción técnica en Markdown (define formato) |
| standard_data | TEXT | Formato heredado del group |
| jsonb_standard | JSONB | Schema JSON con versiones (define estructura) |
| jsonb_data | JSONB | Datos reales según schema |
| version | VARCHAR | Versión del formato usado |
| rootref | VARCHAR | Concatenación de refs (jerarquía) |
| roothash | JSONB | Array de mrfs (jerarquía) |
| img_url | VARCHAR | URL de imagen original |
| img_thumb_url | VARCHAR | URL de thumbnail |
| owner | JSONB | Propietario(s) |
| set_flg | JSONB | Array de mrfs de flg |
| url | VARCHAR | URL externa |
| url_atc | JSONB | Array de URLs de adjuntos |
| url_json | VARCHAR/JSONB | URL(s) de archivos JSON para IA |
| date | DATE | Fecha manual significativa |
| created_at | TIMESTAMP | Fecha de creación automática |
| mth_mrf | VARCHAR(64) | Referencia al proceso productivo |
---
## 4. Tablas Relacionales
### 4.1 Árbol y Grafos
| tree_hst | tree_flg | graph_hst | graph_flg | library_hst | library_flg |
|----------|----------|-----------|-----------|-------------|-------------|
| mrf_parent | mrf_parent | mrf_a | mrf_a | mrf_library | mrf_library |
| mrf_child | mrf_child | mrf_b | mrf_b | mrf_hst | mrf_flg |
| - | - | weight | weight | - | - |
| - | - | edge_type | edge_type | - | - |
### 4.2 Relaciones Entidades-Tags
| ply_hst | ply_flg | itm_hst | itm_flg | loc_hst | loc_flg |
|---------|---------|---------|---------|---------|---------|
| mrf_ply | mrf_ply | mrf_itm | mrf_itm | mrf_loc | mrf_loc |
| mrf_hst | mrf_flg | mrf_hst | mrf_flg | mrf_hst | mrf_flg |
| mst_hst | mst_flg | bck_hst | bck_flg | mth_hst | mth_flg |
|---------|---------|---------|---------|---------|---------|
| mrf_mst | mrf_mst | mrf_bck | mrf_bck | mrf_mth | mrf_mth |
| mrf_hst | mrf_flg | mrf_hst | mrf_flg | mrf_hst | mrf_flg |
---
## 5. Grupos (group)
### 5.1 HST - Etiquetado Semántico
| group | Nombre | Regla de ref |
|-------|--------|--------------|
| hst | hashtags base | Cada registro tiene ref única |
| spe | especificaciones | Todos tienen ref = "spe" |
| vsn | visiones | Todos tienen ref = "vsn" |
| vue | valores | Todos tienen ref = "vue" |
| msn | misiones | ref = "msn", "pjt", "tgt" o "ctg" |
### 5.2 PLY - Players
| ref | group | Descripción |
|-----|-------|-------------|
| ppl | persona | Individuo humano |
| inc | empresa | Entidad jurídica |
| tem | equipo | Grupo de personas |
| ain | inteligencia artificial | Agente artificial |
---
## 6. Edge Types (graph)
| edge_type | Descripción |
|-----------|-------------|
| relation | Genérica |
| specialization | Es-un-tipo-de |
| mirror | Equivalencia/reflejo |
| dependency | Depende-de |
| composition | Parte-de |
| sequence | Sigue-a |
| association | Asociado-con |
| contextual | En-contexto-de |
| alternative | Alternativa-a |
---
## 7. Estructura de Carpetas (Servidor)
```
/hst/
├── bases/ # Backups SQL
├── images/
│ ├── hst/thumb/
│ ├── flg/thumb/
│ ├── ply/thumb/
│ ├── itm/thumb/
│ ├── loc/thumb/
│ ├── mst/thumb/
│ ├── bck/thumb/
│ └── mth/thumb/
└── map/
```
---
## 8. Infraestructura
| Servidor | IP | Propósito |
|----------|-----|-----------|
| ARCHITECT | 69.62.126.110 | Desarrollo |
| HST | 72.62.2.84 | API tags semánticos |
| DECK | 72.62.1.113 | Usuario |
| CORP | 92.112.181.188 | Corporativo |
| Parámetro | Valor |
|-----------|-------|
| Container | postgres_hst |
| Usuario | directus |
| DB | hst_images |
| R2 Endpoint | https://7dedae6030f5554d99d37e98a5232996.r2.cloudflarestorage.com |
---
## 9. Tablas Oracle (Prospectiva)
### oracle_analisis
| Campo | Tipo | Descripción |
|-------|------|-------------|
| num | SERIAL | Identificador |
| mrf | VARCHAR(64) | Hash público (PK) |
| private_mrf | VARCHAR(64) | Hash privado |
| name_es | VARCHAR(255) | Nombre en español |
| name_en | VARCHAR(255) | Nombre en inglés |
| txt | TEXT | Descripción |
| h_bloques_feldman | JSONB | Array de mrfs de Feldman |
| periodo_inicio | DATE | Inicio período histórico |
| periodo_fin | DATE | Fin período histórico |
| h_dataset | VARCHAR(64) | Hash integridad del conjunto |
| modelo_name | VARCHAR(255) | Nombre del modelo |
| modelo_version | VARCHAR(50) | Versión del modelo |
| modelo_metodologia | TEXT | Descripción metodología |
| modelo_formulas | JSONB | Fórmulas de cálculo |
| modelo_parametros | JSONB | Parámetros fijos |
| modelo_limitaciones | TEXT | Limitaciones |
| supuestos | JSONB | Array de supuestos |
| escenario_base | JSONB | Escenario base |
| escenario_optimista | JSONB | Escenario optimista |
| escenario_pesimista | JSONB | Escenario pesimista |
| escenario_estres | JSONB | Escenario estrés |
| sensibilidad | JSONB | Análisis sensibilidad |
| estado | VARCHAR(20) | activo, caducado, invalidado |
| fecha_caducidad | DATE | Fecha expiración |
| condiciones_invalidacion | TEXT | Qué invalida el análisis |
| autor | VARCHAR(255) | Usuario o módulo Grace |
| owner | JSONB | Propietario(s) |
| version | VARCHAR(50) | Versión |
| date | DATE | Fecha emisión |
| created_at | TIMESTAMP | Fecha creación |
### oracle_escenario
| Campo | Tipo | Descripción |
|-------|------|-------------|
| num | SERIAL | Identificador |
| mrf | VARCHAR(64) | Hash público (PK) |
| private_mrf | VARCHAR(64) | Hash privado |
| analisis_mrf | VARCHAR(64) | FK a oracle_analisis |
| name_es | VARCHAR(255) | Nombre en español |
| name_en | VARCHAR(255) | Nombre en inglés |
| txt | TEXT | Descripción |
| valores_supuestos | JSONB | id_supuesto → valor |
| resultado_min | NUMERIC | Límite inferior |
| resultado_max | NUMERIC | Límite superior |
| resultado_medio | NUMERIC | Valor central |
| horizonte | VARCHAR(50) | Período proyección |
| comparado_con | JSONB | Array mrfs otros escenarios |
| autor | VARCHAR(255) | Usuario |
| owner | JSONB | Propietario(s) |
| date | DATE | Fecha |
| created_at | TIMESTAMP | Fecha creación |
---
## 10. Resumen
| Tipo | Cantidad |
|------|----------|
| Tablas principales | 8 |
| Tablas Oracle | 2 |
| Tablas árbol/grafos | 6 |
| Tablas relacionales | 12 |
| **Total** | **28** |
---
## 11. Changelog
### v2.1 (4 Enero 2026)
- Añadido `img_thumb_url` en todas las tablas
### v2.0 (4 Enero 2026)
| Antes | Después |
|-------|---------|
| nombre_es/en/ch | name_es/en/ch |
| estandar_md | standard_md |
| estandar_data | standard_data |
| grupo | group |
| mrf_padre | mrf_parent |
| mrf_hijo | mrf_child |
| mrf_biblioteca | mrf_library |
---
# Anexo: Cuestiones Pendientes
## A.1 Subgrupos por Definir
### FLG - Flags
| Categoría | Códigos | Ejemplos | Estado |
|-----------|---------|----------|--------|
| Países | ??? | España, USA, China | Pendiente |
| Jurisdicciones | ??? | UE, LATAM, NAFTA | Pendiente |
| Normativas | ??? | RGPD, SOX, HIPAA | Pendiente |
| Estándares | ??? | ISO 27001, Bluetooth, WiFi | Pendiente |
### ITM - Items
| Categoría | Códigos | Ejemplos | Estado |
|-----------|---------|----------|--------|
| ??? | ??? | Productos, componentes, materiales | Pendiente |
**Referencia:** Marco temporal T-N → T+N ya definido (crf, mku, zmd, prd, itm).
### LOC - Locations
| Categoría | Códigos | Ejemplos | Estado |
|-----------|---------|----------|--------|
| Punto | ??? | Coordenadas exactas | Pendiente |
| Área | ??? | Zona delimitada | Pendiente |
| Ruta | ??? | Trayecto entre puntos | Pendiente |
---
## A.2 Estructura jsonb_standard (Capas)
| Capa | Nombre | Contenido |
|------|--------|-----------|
| L1 | core | Identificación básica |
| L2 | {dominio} | Datos específicos del tipo |
| L3 | relations | Referencias a otras entidades |
| L4 | extended | Datos opcionales |
| L5 | metadata | Auditoría, versiones |
| L6+ | custom | Extensiones específicas |
**Estado:** Propuesto, no validado.
---
## A.3 Campos jsonb_data por Tabla
| Tabla | Campos esperados en jsonb_data | Estado |
|-------|--------------------------------|--------|
| ply (ppl) | fecha_nacimiento, genero, ... | Pendiente |
| ply (inc) | nombre_fiscal, codigo_fiscal, telefono, email, direccion, numero_cuenta | Parcial |
| ply (tem) | miembros, ... | Pendiente |
| ply (ain) | modelo, proveedor, ... | Pendiente |
| itm | ref_supplier, moq, lote, embalaje, unidad, coste, iva, delivery_time, specs | Parcial |
| loc | lat, lon, precision, tipo_zona, ... | Pendiente |
| mst | positivo, negativo, time, count, days, fecha_objetivo, ... | Parcial |
| bck | fecha_inicio, fecha_final, prioridad, ... | Parcial |
| mth | pasos, secuencia, validaciones, ... | Pendiente |
---
## A.4 Formatos de owner
| Caso | Formato | Estado |
|------|---------|--------|
| Propietario único | `"mrf123..."` | Definido |
| Múltiples propietarios | `[{"mrf": "...", "participacion": 51}, ...]` | Definido |
| Empresa con socios | Schema en hst ref="owner" | Pendiente |
---
## A.5 Bibliotecas
### Visibilidad Pública/Privada
| Aspecto | Decisión | Implementación |
|---------|----------|----------------|
| Diferencia en datos | No hay | - |
| Discriminación | En endpoint | Pendiente |
### Niveles de Biblioteca
| Nivel | Descripción | Estado |
|-------|-------------|--------|
| Sistema (pública) | Disponibles para todos | Existente |
| Sistema (privada) | Backup completo, solo admin | Existente |
| Usuario | Creadas por el usuario | Por implementar |
---
## A.6 Sincronización de Tablas Redundantes
| Opción | Descripción | Estado |
|--------|-------------|--------|
| Triggers | Actualización automática en INSERT/UPDATE | Por evaluar |
| Batch | Sincronización periódica | Por evaluar |
| Aplicación | Lógica en el código | Por evaluar |
**Pregunta:** ¿Cómo se sincronizan las tablas redundantes (ply_hst, itm_flg, etc.) con los campos JSONB (hashtags, set_flg)?
---
## A.7 API y Endpoints Pendientes
| Endpoint | Función | Estado |
|----------|---------|--------|
| /biblioteca/import | Importar biblioteca | Pendiente |
| /biblioteca/export | Exportar biblioteca | Pendiente |
| /sync/redundant | Sincronizar tablas redundantes | Pendiente |
---
## A.8 Validaciones
### Foreign Keys
| Decisión | Estado |
|----------|--------|
| Usar FK con DEFERRABLE INITIALLY DEFERRED | Propuesto |
| Permitir importación masiva sin validación inmediata | Propuesto |
### Constraints de Unicidad
| Campo | Tabla | Constraint | Estado |
|-------|-------|------------|--------|
| mrf | todas | UNIQUE | Por verificar |
| ref | hst (dentro de grupo) | UNIQUE | Por verificar |
| mrf_child | tree_* | UNIQUE | Existente |
---
## A.9 Prioridades
### Alta (Bloquea desarrollo)
1. Definir subgrupos FLG
### Media (Mejora funcionalidad)
2. Definir jsonb_data por tabla
3. Mecanismo de sincronización tablas redundantes
4. Endpoints de importación/exportación
### Baja (Optimización)
5. Subgrupos ITM, LOC, MST, BCK, MTH
6. Documentación de estándares
7. Migración a Gitea
---
*TZZR Database Schema v2.1 - 6 Enero 2026*