Saltar a contenido

PDF-008C - SOURCE-002 Products Runtime Preflight Snapshot

Fecha: 2026-06-20

Estado: RUNTIME PREFLIGHT READ-ONLY / SNAPSHOT EVIDENCE / VERDE / NO LOAD

portal_visible = yes

Scope: tenant

tenant_id: alpuntodeventa

Owner: Gabi / Carlos Canu

1. Contexto

PDF-008B dejo SOURCE-002 Productos relevado como full use-case para catalogo WooCommerce, stock actual, snapshot diario, faltantes, productos activos/inactivos, precios, costos, margen, proveedor, logistica, cruce con ventas SOURCE-003, alertas y reposicion.

Ese gate habia quedado AMARILLO porque no se leyeron secretos y el preflight runtime real estaba bloqueado. En este gate hubo autorizacion explicita nueva para leer .env de forma segura, solo para obtener credenciales SGC necesarias para SOURCE-002 Productos, sin imprimir valores ni persistir credenciales.

No se ejecuto carga, COPY, INSERT, UPDATE, DELETE, TRUNCATE, sync, scheduler, cron, pipelines ni llamada API WooCommerce. No se toco PostgreSQL produccion, PostgreSQL staging, sandbox ni WooCommerce.

2. Safe Point Inicial

Validacion Resultado
git status -sb ## main...origin/main
git rev-parse HEAD 6b482d95dd0f728ba7024314ac943b1de55301c2
git rev-parse origin/main 6b482d95dd0f728ba7024314ac943b1de55301c2
git log -1 --oneline 6b482d9 docs: record source-002 products full use-case preflight
git diff --check PASS
..\\.venv-portal\\Scripts\\mkdocs.exe build --strict PATH_NOT_FOUND desde C:\APV\openclawai
.\\.venv-portal\\Scripts\\mkdocs.exe build --strict PASS

Metodo funcional usado para MkDocs:

  • C:\APV\openclawai\.venv-portal\Scripts\mkdocs.exe

3. Lectura Segura De .env

.env leido: YES

Reglas cumplidas:

  • no se imprimieron valores;
  • no se imprimieron passwords;
  • no se imprimieron usuarios, host ni connection strings;
  • no se modifico .env;
  • no se copio .env;
  • no se persistieron credenciales fuera del proceso.

Variables SOURCE-003 buscadas por nombre solicitado:

Variable Estado
APV_SOURCE_003_MSSQL_HOST MISSING
APV_SOURCE_003_MSSQL_PORT MISSING
APV_SOURCE_003_MSSQL_DATABASE MISSING
APV_SOURCE_003_MSSQL_USER MISSING
APV_SOURCE_003_MSSQL_PASSWORD MISSING
APV_SOURCE_003_MSSQL_DRIVER MISSING

Variables SOURCE-002 despues de validacion:

Variable Estado
APV_SOURCE_002_MSSQL_HOST PRESENT
APV_SOURCE_002_MSSQL_PORT PRESENT
APV_SOURCE_002_MSSQL_DATABASE PRESENT
APV_SOURCE_002_MSSQL_USER PRESENT
APV_SOURCE_002_MSSQL_PASSWORD PRESENT
APV_SOURCE_002_MSSQL_DRIVER PRESENT

Variantes detectadas sin valores:

  • APV_SOURCE_002_MSSQL_TAG
  • APV_SOURCE_002_MSSQL_TIMEOUT_SECONDS
  • APV_SOURCE_002_MSSQL_TRUST_SERVER_CERTIFICATE
  • APV_SOURCE_002B_WOO_BASE_URL
  • APV_SOURCE_002B_WOO_CONSUMER_KEY
  • APV_SOURCE_002B_WOO_CONSUMER_SECRET
  • APV_SOURCE_002B_WOO_TAG
  • APV_SOURCE_002B_WOO_TIMEOUT_SECONDS
  • APV_SOURCE_002B_WOO_VERSION

Mapeo seguro SOURCE-003 -> SOURCE-002: NO

Motivo: las variables SOURCE-002 ya existen completas; no fue necesario mapear desde SOURCE-003. Las credenciales se usaron solo en memoria del proceso runtime.

4. Preflight Read-Only SOURCE-002

Autoridad usada:

docs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-002-PRODUCTOS-PRODUCTS-AUTHORITY.sql

Documentos de referencia usados:

  • docs/tenants/alpuntodeventa/business-observer/sources/SOURCE-002-SGC-PRODUCTOS.md
  • docs/tenants/alpuntodeventa/business-observer/SOURCE-002-FUTURE-LAYER-MAPPING.md
  • docs/tenants/alpuntodeventa/business-observer/SOURCE-002-ECONOMIC-LAYER.md

Resultado: GO

La consulta ejecutada fue la autoridad SOURCE-002 de solo lectura. Se ejecuto contra SGC con ApplicationIntent=ReadOnly y aislamiento READ UNCOMMITTED. No hubo escrituras.

5. Conteos No Sensibles

Metrica Valor
total productos devueltos por autoridad 314
activos 314
inactivos 0
stock > 0 212
stock = 0 100
con precio 312
sin precio 2
con costo 312
sin costo 2
con proveedor 314
sin proveedor 0
marcas unicas 49
SKUs unicos 314
SKUs duplicados 0
columnas reales 81

Nota operativa: la autoridad vigente filtra Estado = 'ACTIVO', por eso el conteo de inactivos queda 0 dentro de esta autoridad. Contar inactivos reales requiere una autoridad complementaria o una nueva version aprobada.

6. Columnas Reales

Columnas devueltas por autoridad: 81.

SKU, Articulo, Marca, Estado, Stock, Stock en Bultos, CostoListaProveedor, Dcto Compra 1, Dcto Compra 2, Dcto Compra 3, Costo, Markup, PrecioListaNeto, AlicuotaIVA, IVAPListaFinal, PrecioListaFinal, Descuento Permitido, PrecioCDescPermitidoFinal, PrecioOfertaFinal, Acepta Devolucion, Estrategico, MargenL1, PrecioL1, IVAPrecioL1, PrecioNetoL1, MargenL2, PrecioL2, IVAPrecioL2, PrecioNetoL2, MargenL3, PrecioL3, IVAPrecioL3, PrecioNetoL3, MargenL4, PrecioL4, IVAPrecioL4, PrecioNetoL4, MargenL5, PrecioL5, IVAPrecioL5, PrecioNetoL5, MargenL6, PrecioL6, IVAPrecioL6, PrecioNetoL6, MargenL7, PrecioL7, IVAPrecioL7, PrecioNetoL7, MargenL8, PrecioL8, IVAPrecioL8, PrecioNetoL8, MargenL9, PrecioL9, IVAPrecioL9, PrecioNetoL9, Fecha de Ultima Compra, UltVenta, UltCambioCosto, DiasSinComprar, DiasSinVender, DiasSinActCosto, CantVtaMin, CantVentaAgrupada, UnidadMedida, PesoxUnidad, VolumenxUnidad, BasePallet, AlturaPallet, PLU Articulo, [PLU Bulto], Unidades_x_Bulto, CantUnidxPallet, CantBultosxPallet, PesoxPalletkg, VolumenxPalletm3, Cod Proveedor, Proveedor, Category, SubCategoria.

7. Campos Disponibles Por Uso

Uso Campos disponibles Estado
WooCommerce SKU, Articulo, Marca, Estado, Stock, PrecioListaFinal, PrecioOfertaFinal, Category, SubCategoria, peso, volumen, bulto, pallet AVAILABLE
stock/inventario Stock, Stock en Bultos, Unidades_x_Bulto, CantUnidxPallet, CantBultosxPallet AVAILABLE
faltantes/quiebres Stock, UltVenta, DiasSinVender, CantVtaMin, CantVentaAgrupada, cruce futuro con SOURCE-003 PARTIAL_AVAILABLE
capa economica CostoListaProveedor, descuentos compra, Costo, Markup, IVA, listas L1..L9, oferta, margen AVAILABLE
proveedor Cod Proveedor, Proveedor AVAILABLE
logistica unidad, bulto, pallet, peso, volumen AVAILABLE

8. Snapshot SOURCE-002

Snapshot generado fuera de Git:

Evidencia Valor
path C:\APV\openclawai\snapshots\source-002\SOURCE-002-PRODUCTS-RUNTIME-PREFLIGHT-20260620-173614.csv
hash file C:\APV\openclawai\snapshots\source-002\SOURCE-002-PRODUCTS-RUNTIME-PREFLIGHT-20260620-173614.csv.sha256
SHA256 c961ffc2b352b6bb3dd0d59bf3d8b7c0f7facff58a9201f7cf45e290141b704f
tamanio bytes 202240
filas 314
columnas 81
columnas contra autoridad PASS
snapshot versionado NO

.gitignore mantiene snapshots/* y *.sha256, por lo que el snapshot y su hash quedan fuera de Git.

9. Matriz Runtime De Usos

Uso runtime Resultado preflight Decision
WooCommerce campos base disponibles, sin API llamada GO_DOCUMENTAL / NO-GO_API
stock actual Stock y bultos disponibles para lectura vigente GO_READONLY
snapshot diario snapshot runtime generado fuera de Git con SHA256 GO_EVIDENCE
faltantes/quiebres stock cero disponible; reglas, umbrales y demanda no atendida siguen pendientes PARTIAL / DESIGN_NEEDED
precios/costos/margen costos, listas, IVA, markup y margenes disponibles GO_READONLY
proveedor proveedor completo para 314 filas GO_READONLY
cruce con SOURCE-003 identidad natural por tenant_id + sku; no se ejecuto cruce real en este gate READY_FOR_NEXT_GATE

10. Gaps Reales

  • La autoridad filtra Estado = 'ACTIVO'; inactivos reales requieren nueva autoridad complementaria.
  • La autoridad no trae deposito ni ubicacion.
  • Stock necesita definicion funcional final: teorico, disponible o vendible.
  • SOURCE-002B no fue consultado; imagen principal y wc_product_id siguen pendientes.
  • Categorias Category/SubCategoria todavia no son taxonomia WooCommerce final.
  • Reglas finales de regular_price, sale_price, moneda y estado WooCommerce siguen pendientes.
  • Faltantes/quiebres requieren reglas de umbral, rotacion y cruce con ventas SOURCE-003.
  • La lista SKU NOT IN ('0124', '3857', '3998', '3793') sigue embebida en la autoridad y debe externalizarse antes de sync.

11. GO / NO-GO

GO:

  • usar esta evidencia como runtime preflight verde de SOURCE-002;
  • usar el snapshot fuera de Git como evidencia congelada del gate;
  • avanzar a diseno/DDL controlado para capas raw, core, catalog, inventory_current, daily_snapshot, stock_alerts y economica;
  • preparar cruce controlado con SOURCE-003 por tenant_id + sku.

NO-GO:

  • carga real;
  • COPY;
  • INSERT/UPDATE/DELETE/TRUNCATE;
  • modificar PostgreSQL produccion o staging;
  • tocar sandbox;
  • llamar WooCommerce API;
  • sync, scheduler, cron o pipelines;
  • versionar CSV, dumps, backups o snapshots.

12. Validaciones

Validaciones ejecutadas durante el gate:

  • lectura segura de .env: PASS;
  • variables SOURCE-002 completas: PASS;
  • autoridad SQL solo lectura: PASS;
  • preflight runtime SOURCE-002: GO;
  • snapshot CSV fuera de Git: PASS;
  • hash SHA256 generado: PASS;
  • columnas snapshot contra autoridad: PASS;
  • .env no modificado: PASS;
  • .env no agregado a Git: PASS;
  • secretos no impresos ni documentados: PASS;
  • PostgreSQL produccion/staging/sandbox no tocados: PASS;
  • WooCommerce API no llamada: PASS.

Validaciones finales de repositorio se registran en el cierre operativo del commit PDF-008C.

13. Proximo Gate Recomendado

PDF-008D SOURCE-002 products controlled DDL/load candidate from runtime snapshot

Objetivo recomendado:

  • tomar este snapshot como evidencia de baseline;
  • preparar candidate DDL/load sin ejecutar carga;
  • separar capas raw/core/catalog/inventory/economic;
  • definir autoridad complementaria para inactivos;
  • definir reglas WooCommerce finales sin llamar API.

14. Confirmacion De Alcance

Durante este gate:

  • no se ejecuto carga;
  • no se ejecuto COPY;
  • no se ejecuto INSERT/UPDATE/DELETE/TRUNCATE;
  • no se ejecuto sync, scheduler, cron ni pipelines;
  • no se llamo WooCommerce API;
  • no se modifico PostgreSQL produccion;
  • no se modifico PostgreSQL staging;
  • no se toco sandbox;
  • no se persistieron credenciales;
  • no se imprimieron passwords ni connection strings reales;
  • no se agregaron dumps, backups, snapshots ni CSV al repo.

15. Estado Final

Estado final: VERDE

PDF-008C cierra el bloqueo de runtime preflight de PDF-008B con consulta real read-only, conteos no sensibles, columnas reales y snapshot evidence con SHA256 fuera de Git.