PDF-010D - SOURCE-001 VCLIENTES Read-Only Snapshot¶
Fecha: 2026-06-23
Estado: VALIDACION READ-ONLY / SOURCE_001_RUNTIME_SAMPLE_OK / SIN WRITES / SIN SYNC / LISTA_PRECIO_CATALOG_CLOSED
portal_visible = yes
Scope: tenant
tenant_id: alpuntodeventa
Destino funcional: SOURCE-001 Clientes + SOURCE-002 Productos -> WooCommerce La Directa
Owner: Gabi / Carlos Canu
A. SAFE POINT inicial¶
| Control | Resultado |
|---|---|
git status -sb |
## main...origin/main |
git rev-parse HEAD |
d66c01b2330ce5d68ded6f5dcd686a0a0eb60f3b |
git rev-parse origin/main |
d66c01b2330ce5d68ded6f5dcd686a0a0eb60f3b |
git log -3 --oneline |
d66c01b docs: add pdf-010c source-001 price list catalog validation; 72a2961 docs: add pdf-010b b2b price list authority validation; 24ad2aa docs: add pdf-010a b2b price lists customer sync contract |
git diff --check inicial |
PASS |
Safe point esperado confirmado:
HEADcoincide cond66c01b2330ce5d68ded6f5dcd686a0a0eb60f3b.origin/maincoincide cond66c01b2330ce5d68ded6f5dcd686a0a0eb60f3b.- repo limpio al inicio.
- ultimo commit esperado confirmado.
B. Documentacion leida¶
Documentacion revisada:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010A-B2B-PRICE-LISTS-CUSTOMER-SYNC-CONTRACT.mddocs/tenants/alpuntodeventa/business-observer/production/PDF-010B-B2B-PRICE-LIST-AUTHORITY-READ-ONLY-VALIDATION.mddocs/tenants/alpuntodeventa/business-observer/production/PDF-010C-SOURCE-001-PRICE-LIST-CATALOG-READ-ONLY-VALIDATION.mddocs/tenants/alpuntodeventa/business-observer/blueprints/CUSTOMER-BLUEPRINT.mddocs/tenants/alpuntodeventa/business-observer/source-authority/SOURCE-001-CLIENTES-VCLIENTES-AUTHORITY.mddocs/PROJECT-STATE.mddocs/ROADMAP.mddocs/governance/ACTIVE-CONTEXT.md
C. Conexion y consulta read-only¶
Resultado: PASS.
Se ejecuto consulta runtime read-only contra:
- source object:
ecommerce.dbo.VCLIENTES - modo:
SELECT_ONLY_READ_ONLY - fecha/hora observada local:
2026-06-22T22:48:08
Controles de seguridad:
.envfue leido solo por la rutina local para cargar variables de conexion.- no se imprimieron secretos.
- no se imprimieron connection strings.
- no se ejecutaron
INSERT,UPDATE,DELETE,MERGE,TRUNCATE,DROP,ALTER,CREATE,COPY, sync, scheduler, cron ni pipelines. - no se toco WooCommerce API.
- no se toco PostgreSQL con writes.
Snapshot local sanitizado generado:
| Campo | Valor |
|---|---|
| path local | snapshots/source-001/SOURCE-001-VCLIENTES-READ-ONLY-SANITIZED-20260623.json |
| versionado Git | NO, porque snapshots/* esta ignorado |
| sha256 | 5b7eb3bdbc6cc58c14247446c089fe8416eee1d2a296d261b03dca6da8166017 |
| contenido | agregados no sensibles y muestra sanitizada |
D. Catalogo real Lista_Precio¶
Total de clientes con Codigo IS NOT NULL: 11448.
Valores reales observados para Lista_Precio:
Lista_Precio |
Clientes |
|---|---|
1 |
4637 |
2 |
1167 |
3 |
1265 |
4 |
1259 |
5 |
2774 |
6 |
263 |
7 |
52 |
8 |
27 |
9 |
4 |
Resultado:
- catalogo real observado:
1..9. - clientes sin
Lista_Precio:0. - no se observaron listas vacias, nulas, textuales ni fuera de
1..9.
E. Conteos por Estado¶
Estado |
Clientes |
|---|---|
CLIENTE ACTIVO |
5986 |
CLIENTE DE BAJA |
5371 |
CLIENTE SUSPENDIDO |
91 |
Estados observados:
CLIENTE ACTIVOCLIENTE SUSPENDIDOCLIENTE DE BAJA
No se observaron estados fuera del catalogo documental vigente.
F. Matriz Lista_Precio x Estado¶
Lista_Precio |
CLIENTE ACTIVO |
CLIENTE SUSPENDIDO |
CLIENTE DE BAJA |
Total |
|---|---|---|---|---|
1 |
1365 | 31 | 3241 | 4637 |
2 |
919 | 6 | 242 | 1167 |
3 |
109 | 50 | 1106 | 1265 |
4 |
1068 | 0 | 191 | 1259 |
5 |
2288 | 2 | 484 | 2774 |
6 |
179 | 0 | 84 | 263 |
7 |
51 | 0 | 1 | 52 |
8 |
4 | 2 | 21 | 27 |
9 |
3 | 0 | 1 | 4 |
G. Calidad de datos email / WhatsApp / CUIT¶
| Control | Resultado |
|---|---|
clientes sin Lista_Precio |
0 |
clientes sin mail |
10332 |
clientes sin Telefono / WhatsApp |
4291 |
posibles duplicados por Cuit - valores duplicados |
564 |
posibles duplicados por Cuit - filas afectadas |
1208 |
posibles duplicados por mail - valores duplicados |
21 |
posibles duplicados por mail - filas afectadas |
46 |
posibles duplicados por Telefono - valores duplicados |
350 |
posibles duplicados por Telefono - filas afectadas |
760 |
Lectura operativa:
Codigosigue siendo la clave logica fuerte del cliente SGC.mail,TelefonoyCuitno deben usarse como clave unica primaria.- la cobertura de email es baja para automatizaciones directas de WooCommerce.
Telefonose mantiene como WhatsApp operativo, pero con faltantes y duplicados que requieren normalizacion y control.
H. Muestra sanitizada¶
La muestra local conserva hasta 3 clientes por lista. En esta documentacion
se publica solo version minimizada y enmascarada.
| Lista | Codigo | Nombre | Telefono | CUIT | Estado | Localidad | Provincia | Zona | |
|---|---|---|---|---|---|---|---|---|---|
1 |
***1 |
Log*** |
CLIENTE DE BAJA |
NO DEFINIDA |
CABA |
NO DEFINIDA |
|||
1 |
***100 |
Ozd*** |
***3213 |
CLIENTE DE BAJA |
RECOLETA |
CABA |
ZONA 01-RECOLETA |
||
1 |
***000 |
L10*** |
CLIENTE DE BAJA |
DON TORCUATO |
BUENOS AIRES |
ZONA 13-DON TORCUATO |
|||
2 |
***007 |
CAM*** |
***7027 |
***8779 |
CLIENTE DE BAJA |
VILLA ADELINA |
BUENOS AIRES |
ZONA 10-VILLA ADELINA |
|
2 |
***001 |
CHE*** |
***7496 |
***6796 |
yu***@gmail.com |
CLIENTE ACTIVO |
DON TORCUATO |
BUENOS AIRES |
ZONA 13-DON TORCUATO |
3 |
***013 |
Che*** |
***9238 |
CLIENTE DE BAJA |
MUNRO |
BUENOS AIRES |
ZONA 10-MUNRO |
||
4 |
***028 |
4K *** |
***5028 |
***9408 |
CLIENTE ACTIVO |
SAN ISIDRO |
BUENOS AIRES |
ZONA 11-SAN ISIDRO |
|
5 |
***002 |
SAR*** |
***0522 |
***3485 |
CLIENTE ACTIVO |
SAAVEDRA |
CABA |
ZONA 08-SAAVEDRA |
|
6 |
***042 |
LEA*** |
***6159 |
***3251 |
CLIENTE ACTIVO |
PEHUAJO |
BUENOS AIRES |
ZONA 00 -INTERIOR DEL PAIS |
|
7 |
***206 |
NAD*** |
***3326 |
***3464 |
CLIENTE ACTIVO |
CAMPANA |
BUENOS AIRES |
ZONA 15-CAMPANA |
|
8 |
***074 |
Enr*** |
***3158 |
ma***@fibertel.com.ar |
CLIENTE DE BAJA |
PALERMO |
CABA |
ZONA 01-PALERMO |
|
9 |
***360 |
NIC*** |
***8735 |
***3826 |
CLIENTE ACTIVO |
GERLI |
BUENOS AIRES |
ZONA 03-GERLI |
I. Relacion Lista_Precio -> L1..L9¶
Evidencia runtime cerrada para catalogo:
- SOURCE-001 usa valores numericos reales
1..9enLista_Precio. - SOURCE-002 expone campos documentados
PrecioL1..PrecioL9. - no hay valores fuera de
1..9ni clientes sin lista.
Decision tecnica candidate:
Lista_Precio SGC |
price_list_code candidate |
Campo producto candidate | Estado |
|---|---|---|---|
1 |
L1 |
PrecioL1 |
SUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION |
2 |
L2 |
PrecioL2 |
SUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION |
3 |
L3 |
PrecioL3 |
SUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION |
4 |
L4 |
PrecioL4 |
SUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION |
5 |
L5 |
PrecioL5 |
SUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION |
6 |
L6 |
PrecioL6 |
SUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION |
7 |
L7 |
PrecioL7 |
SUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION |
8 |
L8 |
PrecioL8 |
SUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION |
9 |
L9 |
PrecioL9 |
SUPPORTED_BY_RUNTIME_CATALOG / PENDING_BUSINESS_CONFIRMATION |
Veredicto:
- el catalogo real permite mapear tecnicamente
1 -> L1,2 -> L2, ...,9 -> L9. - la activacion comercial sigue requiriendo confirmacion humana antes de aplicar precios B2B en WooCommerce.
L1como precio publico/default siguePENDING_VALIDATE; esta evidencia no reemplaza la regla vigente deregular_price = PrecioListaFinal.
J. Bloqueos restantes¶
Bloqueos preservados:
- confirmar con negocio que la correspondencia
Lista_Precio 1..9 -> PrecioL1..PrecioL9es la regla comercial aplicable. - confirmar si
L1es precio publico/default o solo una lista B2B mas. - definir matching seguro
sgc_customer_id <-> wc_customer_id. - definir tratamiento operativo de clientes sin email.
- definir normalizacion y reglas de calidad para WhatsApp.
- definir politicas para duplicados de
Cuit,mailyTelefono. - preparar dry-run B2B sin writes antes de cualquier activacion.
K. Archivos creados/modificados¶
Creado:
docs/tenants/alpuntodeventa/business-observer/production/PDF-010D-SOURCE-001-VCLIENTES-READ-ONLY-SNAPSHOT.mdsnapshots/source-001/SOURCE-001-VCLIENTES-READ-ONLY-SANITIZED-20260623.jsonlocal ignorado por Git
Actualizados:
docs/tenants/alpuntodeventa/business-observer/production/README.mddocs/PROJECT-STATE.mddocs/ROADMAP.mddocs/governance/ACTIVE-CONTEXT.mdmkdocs.yml
Impacto:
- se cierra el catalogo runtime real de
Lista_Precio. - se reemplaza
SOURCE_001_RUNTIME_SAMPLE_MISSINGporSOURCE_001_RUNTIME_SAMPLE_OKpara este gate. - se mantiene
WooCommercesin tocar y sin activacion B2B.
L. Validaciones ejecutadas¶
Validaciones ejecutadas:
git status -sbgit rev-parse HEADgit rev-parse origin/maingit log -3 --onelinegit diff --check- lectura documental solicitada
- consultas
SELECTread-only contraecommerce.dbo.VCLIENTES - snapshot local sanitizado con sha256
Validacion final requerida al cierre:
git diff --check.\.venv-portal\Scripts\mkdocs.exe build --strict
M. Estado final Git¶
Estado esperado al cierre:
- cambios documentales locales sin commit.
- snapshot sanitizado local fuera de Git por
.gitignore. - sin push.
- sin deploy.
N. Recomendacion de commit¶
Si la revision humana aprueba este gate documental, commit sugerido:
docs: add pdf-010d source-001 vclientes read-only snapshot
No hacer commit sin autorizacion posterior.
O. Proximo paso recomendado¶
Abrir gate separado para dry-run B2B sin writes:
- resolver
wc_customer_id -> sgc_customer_idsin crear clientes; - aplicar candidate
Lista_Precio 1..9 -> L1..L9solo como simulacion; - medir productos con precio faltante por lista;
- generar matriz de fallback/bloqueo por cliente y SKU;
- pedir confirmacion humana antes de cualquier API WooCommerce, PostgreSQL write, sync, scheduler, cron o pipeline.
P. Restricciones preservadas¶
Durante este gate:
- no se toco WooCommerce API;
- no se modifico
.env; - no se imprimieron secretos;
- no se imprimieron connection strings;
- no se toco PostgreSQL con writes;
- no se ejecuto SQL write;
- no se crearon clientes WooCommerce;
- no se crearon productos;
- no se modificaron productos;
- no se ejecuto sync;
- no se activo scheduler, cron ni pipelines;
- no se hizo push;
- no se hizo deploy;
- no se modifico runtime.