Saltar a contenido

PDF-012F OUTBOX SINGLE SEND REAL LOCAL DEV

Objetivo

Ejecutar un unico envio real SMTP desde la outbox local/dev para probar el camino READY_BLOCKED -> autorizacion explicita -> SMTP send unico -> SENT -> event log -> evidencia sanitizada.

Autorizacion explicita

ENVIO REAL UNICO AUTORIZADO para la notification sintetica PDF-012D:BILLING_CUSTOMER_REQUEST:TEST001, con destinatario unico facturacion@ladirecta.com.ar.

SQL write autorizado solo en PostgreSQL local/dev gestion_de_negocios_core, schema business_observer, tablas business_observer.ecommerce_notification_outbox y business_observer.ecommerce_notification_event_log.

Precondiciones

  • DB: gestion_de_negocios_core
  • User: openclaw_bo_admin
  • Schema: business_observer
  • Notification: PDF-012D:BILLING_CUSTOMER_REQUEST:TEST001
  • Recipient: facturacion@ladirecta.com.ar
  • Status inicial requerido: READY_BLOCKED
  • send_blocked_by_default=true
  • Worker dry-run previo: SEND_ELIGIBLE_BUT_BLOCKED
  • PDF-011P: SECRET_READY
  • PDF-011Q: SMTP_CONNECTION_READY

Resultado real

  • Status antes: READY_BLOCKED
  • Status despues: SENT
  • Resultado: SENT_SINGLE_EMAIL_FROM_OUTBOX
  • email_sent=true
  • single_send=true
  • recipient_allowed=true
  • Sin CC
  • Sin BCC
  • Sin adjuntos
  • No se enviaron emails a clientes
  • No se enviaron emails a proveedores
  • No se enviaron emails a listas

Eventos registrados

  • SEND_ATTEMPTED guardado con event_type=STATUS_CHANGED, event_status=READY_BLOCKED.
  • SEND_SUCCEEDED guardado con event_type=STATUS_CHANGED, event_status=SENT.
  • Reintento idempotente: ALREADY_SENT_BLOCKED, sin nuevo envio.

Evidencia sanitizada

Evidencia principal:

  • tmp/pdf-012f/outbox_single_send_real_result.json
  • tmp/pdf-012f/outbox_single_send_real_result.txt

Evidencia de idempotencia:

  • tmp/pdf-012f/outbox_single_send_real_retry_result.json
  • tmp/pdf-012f/outbox_single_send_real_retry_result.txt

La evidencia incluye notification_id, idempotency_key, recipient, subject, status_before, status_after, email_sent=true, single_send=true, recipient_allowed=true, cc_used=false, bcc_used=false, attachments_used=false, real_customer_data_used=false, secrets_printed=false, timestamp y message id sanitizado.

SQL write local/dev ejecutado

  • Insert en business_observer.ecommerce_notification_event_log para SEND_ATTEMPTED.
  • Update en business_observer.ecommerce_notification_outbox: status='SENT', updated_at=now().
  • Insert en business_observer.ecommerce_notification_event_log para SEND_SUCCEEDED.
  • En reintento, insert idempotente opcional ALREADY_SENT_BLOCKED; no envia email.

Que NO se hizo

  • No se imprimieron secrets.
  • No se imprimieron passwords.
  • No se imprimieron connection strings.
  • No se escribio en SGC.
  • No se toco WooCommerce API.
  • No se usaron datos reales de clientes.
  • No se toco VPS/prod con datos.
  • No se activo runtime, sync, scheduler, cron ni pipelines.

Proximo paso hacia produccion

El proximo gate recomendado es una revision de readiness para un worker real controlado, todavia sin scheduler/cron, con allowlist, rate-limit persistente, observabilidad y rollback logico documentado.