Saltar a contenido

SOURCE-003 Promote Core Write Implementation 001

Fecha local: 2026-06-16

Estado: WRITE REAL IMPLEMENTADO / NO EJECUTADO / CORE SIN CARGA

portal_visible = yes

Scope: tenant

tenant_id: alpuntodeventa

Owner: Gabi / Carlos Canu

Fuente de verdad: docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-WRITE-IMPLEMENTATION-001.md

1. Objetivo

Implementar en scripts/source_003_importer.py la ruta real de escritura local-dev para:

powershell python scripts/source_003_importer.py promote-core --execute

No se ejecuto con confirmaciones completas en esta tarea.

2. Safe point

Control Resultado
workspace C:\APV\openclawai
rama main
HEAD observado fbc4f9bdacdffd6c39442b4a44317d408ede1600
origin/main observado fbc4f9bdacdffd6c39442b4a44317d408ede1600
ultimo commit observado docs: prepare monitor domains for grafana access
safe point informado en tarea fbc4f9bdacdffd6c39442b4a44317d408ede1600
decision SAFE POINT LIMPIO / HASH INFORMADO COINCIDE CON LOCAL

3. Cambios implementados

Archivo Impacto
scripts/source_003_importer.py Implementa y mantiene documentada la ruta SQL RAW -> CORE detras de confirmaciones completas; actualiza la descripcion CLI del importer para reflejar write paths gated.
docs/tenants/alpuntodeventa/business-observer/design/SOURCE-003-PROMOTE-CORE-WRITE-IMPLEMENTATION-001.md Registra la implementacion real no ejecutada y actualiza el safe point observado.

4. Gate vigente

  • promote-core conserva DRY_RUN.
  • promote-core --execute sin confirmaciones queda BLOCKED.
  • Confirmaciones incompletas quedan BLOCKED.
  • Confirmaciones completas habilitarian write_path_enabled=true, pero no se ejecutaron en esta tarea.

5. Ruta real implementada

La ruta implementada queda detras de confirmaciones completas y contiene:

  • fingerprint DB obligatorio;
  • bloqueo si aparece postgres-sandbox;
  • DB permitida openclaw_business_observer_dev;
  • RAW permitido business_observer.raw_source_003_sales_items;
  • CORE permitido business_observer.core_source_003_sales_items;
  • batch permitido 1827f887-9499-4579-b4f3-234d54f41f7f;
  • RAW batch rows = 1886;
  • CORE row_count inicial = 0;
  • CORE columnas = 66;
  • bloqueo por batch duplicado en CORE antes del INSERT;
  • INSERT INTO CORE SELECT FROM RAW;
  • no modifica RAW;
  • no usa CSV;
  • no llama runner;
  • id CORE deterministico gobernado por tenant_id, SOURCE-003, CORE, sync_batch_id y line_key;
  • raw_loaded_at preservado desde RAW;
  • promoted_at, created_at, updated_at gobernados por statement_timestamp() transaccional;
  • channel_normalized = NULL hasta catalogo aprobado;
  • quality_status = valid.

6. Transaccion

La promocion corre como una unica transaccion:

  1. BEGIN.
  2. Revalidacion de fingerprint y DB.
  3. Validaciones pre-write RAW/CORE.
  4. Lock del target CORE.
  5. CTE candidato RAW -> CORE.
  6. INSERT controlado en CORE.
  7. Post-checks dentro de la transaccion.
  8. COMMIT solo si todo pasa.

Ante error, psql aborta antes de COMMIT; la transaccion queda revertida por PostgreSQL y la salida reporta data_written=false.

7. Post-check esperado

Check Esperado
CORE batch rows 1886
CORE total rows 1886
duplicates_core 0
line_key vacio 0
source_row_hash vacio 0
sync_enabled false

8. Validaciones observadas

text python -m py_compile scripts/source_003_importer.py -> PASS python scripts/source_003_importer.py --help -> PASS python scripts/source_003_importer.py promote-core -> DRY_RUN python scripts/source_003_importer.py promote-core --execute -> BLOCKED python scripts/source_003_importer.py promote-core --execute --confirm-local-dev -> BLOCKED git diff --check -> PASS .venv-portal\Scripts\mkdocs.exe build --strict -> PASS

9. No ejecutado

No se ejecutaron confirmaciones completas. No hubo escritura real en CORE, no se modifico RAW, no hubo INSERT/COPY/UPDATE/DELETE real, no se genero CSV, no se uso runner, no hubo rollback real, VPS, Docker, OpenClaw, NPM, Portainer, push ni deploy.