PDF-011C - B2B Local Dev Seed Data Plan¶
Estado: PLAN READY / SEED CANDIDATE ONLY / SIN SQL WRITE
Fecha: 2026-06-23
Resumen¶
PDF-011C prepara el gate posterior para cargar pocos datos B2B controlados en
PostgreSQL local/dev, sobre los objetos creados en PDF-011B.
Esta fase solo versiona documentacion, script candidate y validador. No ejecuta SQL write, no carga datos, no toca WooCommerce y no toca VPS/prod.
Safe point¶
- HEAD esperado despues de publicar
PDF-011B:3bdd855ae390ec648d375cc207a7c874e99b0451. origin/mainesperado despues de publicarPDF-011B:3bdd855ae390ec648d375cc207a7c874e99b0451.- Repo esperado: limpio.
Objetos B2B objetivo¶
business_observer.b2b_customer_mapping.business_observer.b2b_product_price.business_observer.b2b_pricing_decision_log.business_observer.v_b2b_customer_effective_price.
Reglas comerciales vigentes¶
- Visitante no logueado usa
PrecioListaFinal. - Cliente B2B usa
Lista_Precio 1..9 -> PrecioL1..PrecioL9. PrecioL1no es precio publico default.- WooCommerce no es fuente maestra de precios B2B.
Diseno del seed candidate¶
El seed sera minimo, sintetico y no masivo.
b2b_customer_mapping¶
Rows candidate:
- Cliente sintetico
wc_customer_id=900001,sgc_customer_id=SYNTH-B2B-L1,price_list_code=L1, estado activo. - Cliente sintetico
wc_customer_id=900005,sgc_customer_id=SYNTH-B2B-L5,price_list_code=L5, estado activo.
Caso bloqueado solo de prueba:
wc_customer_id=900099,sgc_customer_id=SYNTH-B2B-BLOCKED,price_list_code=L1,mapping_status=BLOCKED.- Este caso queda fuera del insert productivo por defecto. Solo podria usarse en un gate de test local/dev separado.
b2b_product_price¶
Rows candidate:
- SKUs piloto derivados de
PDF-009M, maximo3SKUs. - SKU obligatorio:
2442. - SKUs adicionales candidate:
2443,2444. - Listas incluidas:
L1yL5. - Campos permitidos: SKU, lista, precio aplicado sintetico,
regular_price_referencesintetico, moneda,source_hashno sensible,quality_status,valid_from. - Campos prohibidos: costos, margenes, proveedor, CUIT, email, telefono, direccion o datos personales.
b2b_pricing_decision_log¶
No se cargaran logs manuales en este gate. La decision aprobada es que
b2b_pricing_decision_log se alimente cuando exista motor runtime autorizado.
Payload candidate¶
El script prepare_pdf_011c_seed_payload.py:
- No se conecta a PostgreSQL.
- No lee
.env. - No imprime secrets.
- Usa IDs sinteticos.
- Genera payload JSON y SQL candidate bajo
tmp/pdf-011c/, carpeta ignorada por Git. - Incluye
INSERTcontrolados solo parab2b_customer_mappingyb2b_product_price. - No incluye inserts a
b2b_pricing_decision_log.
SQL write¶
En PDF-011C no se ejecuto SQL write. El SQL generado por el script es
candidate y queda bloqueado hasta un gate posterior con autorizacion explicita
de escritura local/dev.
Rollback / cleanup candidate¶
El proximo gate que autorice inserts debera incluir cleanup local/dev acotado:
```sql DELETE FROM business_observer.b2b_product_price WHERE tenant_code = 'alpuntodeventa' AND source_hash LIKE 'pdf011c_seed_%';
DELETE FROM business_observer.b2b_customer_mapping WHERE tenant_code = 'alpuntodeventa' AND source_hash LIKE 'pdf011c_seed_%'; ```
El cleanup debe ejecutarse solo en local/dev, con transaccion unica,
ON_ERROR_STOP=1 y post-checks read-only.
Validaciones del proximo gate¶
Antes de ejecutar inserts controlados:
- Confirmar DB local/dev y schema
business_observer. - Confirmar objetos B2B presentes.
- Confirmar repo limpio.
- Confirmar que no se usa WooCommerce API.
- Confirmar que no se usa VPS/prod.
- Confirmar que el seed no contiene datos sensibles visibles; mantener evidencia sin datos sensibles visibles.
- Confirmar conteo maximo esperado:
2mappings activos y6precios B2B candidate. - Confirmar cleanup candidate antes de cualquier ejecucion.
Que NO se hizo¶
- No se uso VPS/prod.
- No se toco WooCommerce API.
- No se modifico
.env. - No se imprimieron secrets.
- No se imprimieron datos personales.
- No se ejecuto SQL write.
- No se cargaron datos.
- Sin carga masiva; no se ejecuto carga masiva.
- No se modifico runtime.
- No se ejecuto sync, scheduler, cron ni pipelines.
GO/NO-GO final¶
PLAN READY / SEED CANDIDATE ONLY / SIN SQL WRITE.
Proximo paso¶
Crear un gate separado PDF-011D para ejecutar inserts controlados en
PostgreSQL local/dev, solo si se autoriza SQL write explicito y se confirma el
cleanup candidate.