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=truesingle_send=truerecipient_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_ATTEMPTEDguardado conevent_type=STATUS_CHANGED,event_status=READY_BLOCKED.SEND_SUCCEEDEDguardado conevent_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.jsontmp/pdf-012f/outbox_single_send_real_result.txt
Evidencia de idempotencia:
tmp/pdf-012f/outbox_single_send_real_retry_result.jsontmp/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_logparaSEND_ATTEMPTED. - Update en
business_observer.ecommerce_notification_outbox:status='SENT',updated_at=now(). - Insert en
business_observer.ecommerce_notification_event_logparaSEND_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.