PDF-011F - La Directa Customer Activation And New Customer Request Model¶
Estado: PDF-011F LADIRECTA CUSTOMER ACTIVATION REQUEST MODEL / CONTRACT READY / SIN SQL WRITE
Fecha: 2026-06-24
Objetivo¶
Documentar el modelo oficial de onboarding B2B para La Directa en ecommerce, cubriendo dos caminos:
- Cliente existente en SGC con
codigo_cliente. - Contacto nuevo que solicita alta y todavia no existe en SGC.
Este documento es de diseno y contrato. No implementa runtime, no ejecuta SQL, no toca WooCommerce API, no crea usuarios y no envia emails reales.
Safe point¶
- Repo:
C:\APV\openclawai. - HEAD inicial confirmado:
06b7b1e test: add pdf-011e b2b functional read-only validation. - Arbol Git inicial: limpio.
origin/main: puede estar enPDF-011Do posterior; este gate no requiere push ni deploy.
Secrets Hostinger¶
Ruta privada candidate indicada:
C:\APV\openclawai.venv-portal\secrets\ladirecta-hostinger-email.env
Estado:
PENDING_SECRET: la carpeta/archivo no existe en la ruta indicada.- No se creo archivo de secrets porque no hay secreto disponible en esta sesion local.
- No se imprimieron credenciales, passwords, connection strings ni contenido de secrets.
- La ruta esta fuera del repo
C:\APV\openclawai; por lo tanto no aparece engit status.
Variables esperadas cuando el usuario cargue el secreto manualmente:
env
LADIRECTA_EMAIL_DOMAIN=ladirecta.com.ar
LADIRECTA_EMAIL_MAIN_ACCOUNT=operaciones@ladirecta.com.ar
LADIRECTA_EMAIL_BILLING_ALIAS=facturacion@ladirecta.com.ar
LADIRECTA_EMAIL_SMTP_HOST=
LADIRECTA_EMAIL_SMTP_PORT=
LADIRECTA_EMAIL_SMTP_USER=
LADIRECTA_EMAIL_SMTP_PASSWORD=
LADIRECTA_EMAIL_SMTP_SECURE=
Si solo se conoce cuenta/password pero no host/port SMTP, el estado operativo
debe quedar como PENDING_HOSTINGER_CONFIG.
Modelo A - Cliente existente SGC¶
Aplica cuando el cliente ya existe en SGC y cuenta con:
codigo_cliente.- CUIT normalizado.
- Lista de precio asignada.
- Estado comercial
ACTIVO. - Vendedor asignado.
- Condiciones comerciales vigentes.
Flujo candidate:
- El cliente entra a
Activar mi cuenta. - Ingresa codigo de cliente y CUIT.
- Ingresa email real y contrasena.
- El sistema valida contra
business_observer.clientes_ecommerce. - Se crea o activa el usuario WooCommerce en un gate futuro autorizado.
- Se vincula
wc_customer_idconsgc_customer_id. - El cliente queda listo para comprar con precio resuelto server-side desde OpenClaw/PostgreSQL.
Regla de seguridad: ante error no se revela si el codigo de cliente o CUIT existen.
Modelo B - Contacto nuevo sin codigo SGC¶
Aplica cuando el contacto todavia no existe como cliente SGC.
Flujo candidate:
- El contacto entra a
Solicitar alta como cliente. - Completa formulario de alta B2B.
- El sistema guarda la solicitud como
PENDING_SGC_REVIEW. - El sistema prepara email candidate a
facturacion@ladirecta.com.ar. - Facturacion revisa la solicitud.
- Facturacion crea el cliente en SGC.
- OpenClaw lee SGC en la proxima sincronizacion autorizada.
- OpenClaw crea o actualiza
business_observer.clientes_ecommerce. - El contacto queda listo para activar cuenta o recibir notificacion.
En este gate no se guarda la solicitud en base real, no se ejecuta SQL write y no se envia email real.
Formulario nuevo contacto¶
Campos minimos:
razon_social.nombre_fantasia.cuit.condicion_iva.email.telefono_whatsapp.domicilio_fiscal_calle.domicilio_fiscal_numero.domicilio_fiscal_localidad.domicilio_fiscal_provincia.domicilio_fiscal_codigo_postal.domicilio_pedido_calle.domicilio_pedido_numero.domicilio_pedido_localidad.domicilio_pedido_provincia.domicilio_pedido_codigo_postal.contacto_nombre.contacto_rol.rubro_comercio_tipo.comentario.acepta_politica_privacidad.acepta_contacto_comercial.
Campos candidate para clientes_ecommerce¶
Campos a sumar al diseno de business_observer.clientes_ecommerce:
domicilio_fiscal.domicilio_fiscal_normalizado.domicilio_pedido.domicilio_pedido_normalizado.domicilio_pedido_es_fiscal.onboarding_source.onboarding_status.sgc_registration_status.billing_review_status.billing_review_requested_at.billing_review_email_sent_at.billing_review_email_to.wc_customer_id.sgc_customer_id.activation_status.
Estados candidate:
onboarding_source:SGC_EXISTING,ECOMMERCE_NEW_REQUEST.onboarding_status:PENDING_VALIDATION,PENDING_SGC_REVIEW,READY_TO_ACTIVATE,ACTIVE,REJECTED.sgc_registration_status:EXISTS_IN_SGC,PENDING_SGC_CREATE,SYNCED_FROM_SGC.billing_review_status:NOT_REQUIRED,PENDING,SENT,REVIEWED,REJECTED.activation_status:NOT_STARTED,PENDING_EMAIL_VERIFICATION,ACTIVE,BLOCKED.
Tablas y capas candidate¶
business_observer.clientes_ecommerce- Cliente sincronizado desde SGC y estado ecommerce.
-
Fuente de verdad para activar cuentas existentes y vincular
sgc_customer_idconwc_customer_id. -
business_observer.ecommerce_customer_requests - Solicitudes de contactos nuevos que todavia no existen en SGC.
-
Guarda snapshot normalizado del formulario y estado de revision.
-
business_observer.ecommerce_customer_request_audit -
Auditoria de cambios de estado, intentos, validaciones, emails candidate y revision de facturacion.
-
business_observer.customer_activation_audit - Auditoria de activaciones para clientes SGC existentes.
- Registra intentos, bloqueos, exito de vinculacion y metadata tecnica no sensible.
Email candidate a facturacion¶
Destino candidate:
facturacion@ladirecta.com.ar
Asunto candidate:
Nueva solicitud de alta cliente ecommerce - La Directa
Contenido candidate:
- Fecha/hora de solicitud.
- Razon social.
- CUIT normalizado.
- Email.
- Telefono/WhatsApp.
- Domicilio fiscal.
- Domicilio de pedido/envio.
- Rubro o tipo de comercio.
- Comentario.
- Estado:
PENDING_SGC_REVIEW. - Link interno futuro, si aplica.
Este gate solo documenta el email. No envia emails reales.
Seguridad y auditoria¶
Reglas obligatorias:
- No revelar si codigo/CUIT existen ante errores.
- Aplicar rate limit por IP, CUIT y email.
- Usar captcha en formularios publicos.
- Bloquear por intentos repetidos.
- Auditar cambios de estado y validaciones.
- No usar CUIT como contrasena fuerte ni sugerirlo como password.
- No enviar emails a direcciones temporales o descartables.
- No permitir password reset para cuentas pendientes con email temporal.
- Validar email unico.
- Validar CUIT normalizado.
- No guardar passwords en OpenClaw.
- No imprimir datos sensibles en logs.
- En auditoria, registrar identificadores tecnicos y hashes no reversibles cuando sea posible.
Integracion futura WooCommerce/OpenClaw¶
Contrato futuro de user meta WooCommerce:
sgc_customer_id.codigo_cliente.activation_status.onboarding_status.
Restricciones:
- No guardar lista completa de precios en WooCommerce user meta.
- El precio B2B se resuelve server-side desde OpenClaw/PostgreSQL.
- El usuario WooCommerce se crea al activar cuenta existente o despues de aprobacion SGC.
- La vinculacion
wc_customer_id -> sgc_customer_idqueda en PostgreSQL.
GO/NO-GO¶
Estado final del gate documental:
GO CONTRACT READY / SIN SQL WRITE / SIN WOOCOMMERCE RUNTIME.
Pendiente para produccion:
- Crear DDL candidate separado para las tablas nuevas.
- Definir validadores de CUIT/email/telefono/domicilio.
- Confirmar configuracion SMTP Hostinger sin imprimir secretos.
- Implementar envio en modo dry-run primero.
- Implementar endpoint/formulario despues de aprobar contrato.
- Implementar activacion WooCommerce en gate autorizado y auditado.
Que NO se hizo¶
- No se ejecuto SQL write.
- No se envio email real.
- No se toco WooCommerce API.
- No se crearon usuarios WooCommerce.
- No se modifico
.env. - No se imprimieron secrets.
- No se imprimieron passwords.
- No se imprimieron connection strings.
- No se toco VPS/prod con datos.
- No se toco runtime.
- No se ejecuto sync, scheduler, cron ni pipelines.