Saltar a contenido

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 en PDF-011D o 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 en git 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:

  1. El cliente entra a Activar mi cuenta.
  2. Ingresa codigo de cliente y CUIT.
  3. Ingresa email real y contrasena.
  4. El sistema valida contra business_observer.clientes_ecommerce.
  5. Se crea o activa el usuario WooCommerce en un gate futuro autorizado.
  6. Se vincula wc_customer_id con sgc_customer_id.
  7. 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:

  1. El contacto entra a Solicitar alta como cliente.
  2. Completa formulario de alta B2B.
  3. El sistema guarda la solicitud como PENDING_SGC_REVIEW.
  4. El sistema prepara email candidate a facturacion@ladirecta.com.ar.
  5. Facturacion revisa la solicitud.
  6. Facturacion crea el cliente en SGC.
  7. OpenClaw lee SGC en la proxima sincronizacion autorizada.
  8. OpenClaw crea o actualiza business_observer.clientes_ecommerce.
  9. 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

  1. business_observer.clientes_ecommerce
  2. Cliente sincronizado desde SGC y estado ecommerce.
  3. Fuente de verdad para activar cuentas existentes y vincular sgc_customer_id con wc_customer_id.

  4. business_observer.ecommerce_customer_requests

  5. Solicitudes de contactos nuevos que todavia no existen en SGC.
  6. Guarda snapshot normalizado del formulario y estado de revision.

  7. business_observer.ecommerce_customer_request_audit

  8. Auditoria de cambios de estado, intentos, validaciones, emails candidate y revision de facturacion.

  9. business_observer.customer_activation_audit

  10. Auditoria de activaciones para clientes SGC existentes.
  11. 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_id queda 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.