Saltar a contenido

PDF-005B SOURCE-003 Staging Target Tables DDL Candidate

Fecha local: 2026-06-19

Estado: DDL CANDIDATE PREPARADO / NO SQL EJECUTADO / NO LOAD / NO SYNC / STAGING ONLY

portal_visible = yes

Scope: tenant

tenant_id: alpuntodeventa

Owner: Gabi / Carlos Canu

Fuente de verdad: docs/tenants/alpuntodeventa/business-observer/production/PDF-005B-SOURCE-003-STAGING-TARGET-TABLES-DDL-CANDIDATE.md

1. Contexto

PDF-005A preparo el gate documental para backup post-DDL y preflight de carga inicial controlada de SOURCE-003 en PostgreSQL staging.

La evidencia posterior informada para este gate deja:

  • DB, schema y roles staging: PASS;
  • tablas de negocio en business_observer: 0;
  • carga inicial SOURCE-003: NO-GO por tablas destino ausentes.

Este documento prepara solo el candidate DDL de tablas destino para corregir ese bloqueo en un gate futuro. No autoriza ejecucion.

2. Alcance

Alcance permitido:

  • PostgreSQL staging openclaw_business_observer_staging;
  • schema business_observer;
  • tablas destino vacias de SOURCE-003;
  • owner y grants con roles staging ya documentados;
  • SQL candidate versionado para revision.

Quedan fuera:

  • produccion;
  • openclaw-postgres-sandbox;
  • carga real de datos;
  • COPY, INSERT, UPDATE, DELETE, TRUNCATE;
  • sync diaria, scheduler, pipelines, dashboards productivos o LLM productivo;
  • cambios en Docker, OpenClaw, NPM, Portainer o servicios.

3. Backup vigente

Backup post-DDL real informado fuera de Git:

text /opt/backups/openclaw/business-observer-staging/postgres/post-ddl/20260619T211134Z/openclaw-bo-staging-postgres-post-ddl-20260619T211134Z.dump sha256=e7f6afb319b1ef365f45b107226dec3c579922902623c6c5afeba367ab6acc8d

El backup se referencia como precondicion de ejecucion futura. No fue creado, leido, copiado ni agregado al repo durante este gate.

4. DDL existente detectado

No se detecto un PDF-005B existente ni un DDL candidate ya aprobado para ejecucion sobre PostgreSQL staging.

Si se detectaron candidatos y ejecuciones previas en local-dev:

  • source_003_sales_items: piloto/dedicado local-dev, no aprobado para staging;
  • raw_source_003_sales_items: DDL RAW local-dev;
  • core_source_003_sales_items: DDL CORE local-dev;
  • mart_source_003_sales_daily;
  • mart_source_003_sales_by_seller;
  • mart_source_003_sales_by_customer;
  • mart_source_003_sales_by_sku.

Esos antecedentes sirven como base tecnica, pero no habilitan ejecucion en staging.

5. Tablas destino propuestas

El candidate cubre estas tablas vacias:

Capa Tabla
base/piloto controlado business_observer.source_003_sales_items
RAW business_observer.raw_source_003_sales_items
CORE business_observer.core_source_003_sales_items
MART business_observer.mart_source_003_sales_daily
MART business_observer.mart_source_003_sales_by_seller
MART business_observer.mart_source_003_sales_by_customer
MART business_observer.mart_source_003_sales_by_sku

6. Ownership y grants esperados

Owner esperado:

  • openclaw_bo_staging_owner

Roles de consumo/escritura esperados:

  • openclaw_bo_staging_writer: SELECT, INSERT, UPDATE;
  • openclaw_bo_staging_reader: SELECT;
  • openclaw_bo_staging_reporting_ro: SELECT;
  • PUBLIC: sin privilegios.

El writer no debe recibir DELETE, TRUNCATE, REFERENCES ni TRIGGER.

7. Indices esperados

Los indices candidatos priorizan:

  • tenant y fecha;
  • tenant y batch;
  • tenant y hash de origen;
  • tenant y cliente;
  • tenant y vendedor;
  • tenant y SKU;
  • documento;
  • estado de registro;
  • claves de agregados MART.

No se propone particionado en este gate. Performance real queda pendiente de validacion con datos.

8. Relacion con autoridades vigentes

Data Contract:

  • la venta itemizada debe preservar tenant, trazabilidad, historia y no hacer hard delete;
  • seller_transactional no debe reemplazarse por vendedor asignado;
  • costos, impuestos, descuentos, CMV y contribucion deben conservar precision.

Source Authority V2:

  • autoridad vigente: docs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-003-VENTAS-VNEXT-TABLA2-AUTHORITY-V2.sql;
  • Hora forma parte de la identidad;
  • Tabla 2 es la salida itemizada a persistir.

Mapping activo:

  • docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-SALES-ITEMS-COLUMN-MAPPING.md;
  • 68/68 columnas reales mapeadas;
  • source_row_hash_v1 debe cubrir las 68 columnas reales;
  • campos logisticos/personales quedan persistibles pero con exposicion controlada.

Blueprint:

  • SALES-BLUEPRINT define ventas como hecho transaccional itemizado y no como cabecera o total agregado.

9. Riesgo line_key_v4

line_key_v4 queda tratado como AMARILLO ACEPTADO.

Lectura obligatoria:

  • no existe line_id_source fisico ERP disponible en la vista SGC;
  • line_sequence_v1 es tecnica de pipeline y no identidad legal perfecta;
  • el alcance aceptado es analitico para Business Observer, BI, IA y ML;
  • no debe presentarse como identidad VERDE ni auditoria legal de renglon ERP.

10. SQL candidate

Paquete creado:

text infra/business-observer/staging/postgres/ddl/PDF-005B/

Archivos:

  • 001-source-003-target-tables-preflight.candidate.sql;
  • 002-source-003-target-tables-forward.candidate.sql;
  • 003-source-003-target-tables-post-checks.candidate.sql;
  • rollback-drop-source-003-target-tables.candidate.sql.

El paquete:

  • limita el target a openclaw_business_observer_staging;
  • exige schema business_observer;
  • exige roles staging;
  • no contiene passwords, connection strings ni LOGIN;
  • no ejecuta DML;
  • no crea jobs, scheduler ni pipelines;
  • no toca produccion ni sandbox.

11. Validaciones previas requeridas

Antes de ejecutar en un gate futuro:

  • SAFE POINT nuevo;
  • backup post-DDL vigente validado;
  • target staging confirmado;
  • produccion ausente o excluida;
  • sandbox intacto y excluido;
  • schema business_observer presente;
  • roles staging NOLOGIN presentes;
  • tablas destino esperadas ausentes o estado idempotente revisado;
  • PUBLIC sin privilegios;
  • autorizacion humana explicita para ejecutar DDL.

12. Criterios GO / NO-GO

GO futuro solo si:

  • existe autorizacion explicita separada para ejecutar PDF-005B;
  • backup post-DDL esta validado;
  • el preflight read-only pasa;
  • el SQL candidate fue revisado;
  • el target coincide con staging;
  • no hay tablas con datos previos en las relaciones destino;
  • produccion, sandbox, sync, scheduler y pipelines siguen excluidos.

NO-GO inmediato si:

  • falta backup validado;
  • el target no es openclaw_business_observer_staging;
  • aparece openclaw-postgres-sandbox;
  • aparece produccion;
  • faltan roles staging;
  • el preflight detecta tablas destino ya existentes con estado no explicado;
  • se intenta cargar datos o ejecutar pipelines en el mismo gate;
  • falta autorizacion humana explicita.

13. Rollback esperado

Rollback candidate:

text infra/business-observer/staging/postgres/ddl/PDF-005B/rollback-drop-source-003-target-tables.candidate.sql

Reglas:

  • requiere autorizacion separada;
  • aborta si cualquier tabla destino contiene filas;
  • solo aplica sobre staging;
  • no usa DELETE, TRUNCATE ni COPY;
  • debe ejecutarse solo despues de backup inmediato y evidencia de target.

14. Validaciones post-DDL esperadas

Si se ejecutara en un gate futuro, los post-checks deben confirmar:

  • transaction_read_only=on en validacion;
  • 7/7 tablas presentes;
  • owner openclaw_bo_staging_owner;
  • row count esperado 0 para todas las tablas;
  • PUBLIC sin privilegios;
  • writer sin DELETE/TRUNCATE;
  • reader y reporting read-only;
  • produccion y sandbox no tocados.

15. Autorizacion requerida para ejecucion futura

La ejecucion futura requiere una autorizacion nueva con texto equivalente a:

text Autorizo ejecutar PDF-005B DDL real para crear tablas destino SOURCE-003 en PostgreSQL staging Business Observer, usando solo los SQL candidates versionados de PDF-005B, sin cargar datos, sin COPY, sin sync, sin scheduler, sin pipelines, sin produccion y sin openclaw-postgres-sandbox.

Sin esa autorizacion, el estado sigue siendo candidate documental.

16. Confirmaciones de alcance de este gate

Durante este gate:

  • no se ejecuto SQL;
  • no se ejecuto carga SOURCE-003;
  • no se inserto, actualizo, borro ni trunco datos;
  • no se ejecuto COPY;
  • no se ejecuto sync, scheduler ni pipelines;
  • no se toco produccion;
  • no se toco openclaw-postgres-sandbox;
  • no se tocaron OpenClaw, NPM, Portainer, Docker ni servicios;
  • no se leyeron secret files;
  • no se imprimieron passwords ni connection strings reales;
  • no se crearon dumps dentro del repo;
  • no se agregaron backups al repo;
  • no se hizo commit, push ni deploy.

17. Conclusion

text PDF-005B PREPARED DDL CANDIDATE ONLY SOURCE-003 STAGING TARGET TABLES = PROPOSED SQL EXECUTION = NOT AUTHORIZED / NOT EXECUTED LOAD = NO-GO SYNC/SCHEDULER/PIPELINES = NO-GO PRODUCTION = NO-GO SANDBOX = NO-GO NEXT GATE = EXPLICIT AUTHORIZATION TO EXECUTE PDF-005B DDL ONLY