SOURCE-003 Mart DDL Candidate Technical Review¶
Fecha local: 2026-06-16
Estado: REVIEW TECNICA DDL MART CANDIDATO / NO EJECUTADO
portal_visible = yes
Scope: tenant
tenant_id: alpuntodeventa
Owner: Gabi / Carlos Canu
Fuente de verdad:
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-MART-DDL-CANDIDATE-TECHNICAL-REVIEW.md
1. Objetivo¶
Revisar tecnicamente el paquete DDL MART candidato para
SOURCE-003 / SGC Ventas / Tabla 2 V2, sin ejecutarlo y sin tocar runtime,
DB, datos ni servicios.
Esta revision evalua si el paquete queda apto para una futura tarea separada de preflight local-dev.
2. Safe Point¶
| Control | Valor |
|---|---|
| workspace | C:\APV\openclawai |
| rama | main |
| HEAD/origin informado | 12b7fd22a3722e7f8e76d2a0d6d5247b572e78d9 |
| ultimo commit informado | docs: prepare source 003 mart ddl candidate |
| estado inicial observado | ## main...origin/main |
| SQL ejecutado | NO |
psql usado |
NO |
| PostgreSQL tocado | NO |
3. Documentos Revisados¶
SOURCE-003-MART-DDL-CANDIDATE.mdsql/006_source_003_mart_ddl_candidate_preflight.sqlsql/006_source_003_mart_ddl_candidate_forward.sqlsql/006_source_003_mart_ddl_candidate_rollback.sqlsql/006_source_003_mart_ddl_candidate_post_checks.sqlSOURCE-003-MART-LAYER-CONTRACT.mdSOURCE-003-IMPORTER-BUILD-MART-PLAN.mdSOURCE-003-PROMOTE-CORE-LOCAL-DEV-POST-EXECUTION-REVIEW.md
4. Hallazgos¶
No se detectaron bloqueantes documentales para una futura ejecucion de
preflight local-dev, siempre que sea autorizada en una tarea separada.
Controles confirmados por lectura estatica:
| Control requerido | Resultado |
|---|---|
| origen CORE | business_observer.core_source_003_sales_items confirmado |
| batch piloto | 1827f887-9499-4579-b4f3-234d54f41f7f confirmado |
| CORE preservado | preflight y post-checks exigen 1886 filas |
| MART daily | business_observer.mart_source_003_sales_daily incluida |
| MART by seller | business_observer.mart_source_003_sales_by_seller incluida |
| MART by customer | business_observer.mart_source_003_sales_by_customer incluida |
| MART by SKU | business_observer.mart_source_003_sales_by_sku incluida |
| owner esperado | openclaw_bo_admin en schema, tablas e indices |
| writer | SELECT, INSERT, UPDATE; DELETE revocado |
| reader | SELECT; INSERT, UPDATE, DELETE revocados |
PUBLIC |
schema y tablas sin privilegios |
| rollback | aborta si cualquier MART candidata existe y tiene filas |
| post-checks | exigen row_count = 0 en las cuatro MART candidatas |
| RAW | no hay DDL/DML sobre RAW |
| CORE | no hay DDL/DML sobre CORE; solo checks de existencia/conteo |
| dashboards/LLM productivos | no habilitados |
5. Lectura Tecnica del Paquete¶
5.1 Preflight¶
El preflight es read-only por estructura: contiene consultas SELECT contra
catalogo y conteos CORE. Valida DB local-dev, schema, roles, owner, CORE,
batch piloto, campos criticos, duplicados, ausencia previa de tablas MART
candidatas y ausencia de privilegios PUBLIC en schema.
Resultado de review: apto para futura ejecucion preflight local-dev con autorizacion explicita.
5.2 Forward¶
El forward crea exclusivamente cuatro tablas MART candidatas vacias, indices,
comments, owner y grants. No contiene INSERT, UPDATE, DELETE, COPY,
TRUNCATE ni lecturas/escrituras sobre RAW o CORE.
Observaciones:
CREATE SCHEMA IF NOT EXISTS business_observeres conservador para DDL, pero puede ocultar una precondicion incumplida si se ejecutara sin preflight. Recomendacion: no ejecutar forward si el preflight no confirma schema y owner existentes.- Las tablas quedan con
quality_status = candidatey warnings semanticos disponibles; eso es consistente con no habilitar consumo productivo. id uuidno declara default; el futurobuild-martdebera generar IDs explicitamente o el forward futuro debera incorporar una politica aprobada.
Resultado de review: no apto aun para forward; solo apto para preflight local-dev.
5.3 Rollback¶
El rollback valida DB local-dev y recorre las cuatro MART candidatas. Si
cualquiera existe y tiene filas, aborta con excepcion antes de dropear indices
o tablas. No usa TRUNCATE, no borra datos, no toca RAW y no toca CORE.
Resultado de review: cumple la regla critica de no dropear MART con datos.
5.4 Post-Checks¶
Los post-checks validan DB, schema, owner, existencia de las cuatro tablas,
owner de tablas, row_count = 0, constraints, indices, grants de writer,
reader y PUBLIC, existencia de CORE y preservacion del batch piloto en
1886 filas.
Resultado de review: el paquete exige que el forward deje estructura vacia y sin privilegios publicos.
6. Riesgos Documentados¶
Riesgos preservados y correctamente documentados:
territory_keyno debe inferir vendedor responsable ni territorio comercial sin contrato de cruce aprobado.CMV, costos ycontribution_amountquedan como columnas candidatas con lectura economica pendiente.contribution_amountrequiere revision semantica y conciliacion formal antes de dashboards, reportes o consultas LLM operativas.- Reglas de signo para notas de credito, anulaciones y comprobantes correctivos deben preservarse desde CORE y revisarse antes de cualquier KPI productivo.
Riesgos operativos no bloqueantes para preflight:
- El paquete aun no implementa
build-mart; por lo tanto no prueba reconciliacion de totales, generacion demart_build_id, hash de conjunto ni granularidades reales. - No existe habilitacion para produccion, sync diaria ni carga MART; cualquier intento de forward, build o consumo debe abrir gate separado.
7. No Habilita¶
Esta review no habilita:
- ejecutar SQL;
- usar
psql; - tocar
PostgreSQL; - crear tablas reales;
- modificar Python;
- cargar datos;
- tocar RAW/CORE/MART real;
- generar CSV;
- ejecutar runner;
- usar VPS, Docker, OpenClaw, NPM o Portainer;
- push o deploy;
- dashboards productivos;
- reportes productivos;
- consultas LLM operativas.
8. Decision¶
text
APTO PARA PREFLIGHT LOCAL-DEV
NO APTO PARA PRODUCCION
NO APTO PARA SYNC DIARIA
NO APTO PARA BUILD-MART AUN
La aptitud queda limitada a una futura tarea de preflight local-dev,
read-only y autorizada explicitamente. No habilita forward, rollback real,
implementacion Python, carga MART, consumo productivo ni automatizacion diaria.