PDF-012H - OUTBOX WORKER MANUAL CONTROLLED SEND LOCAL DEV¶
Estado: NO-GO_VALIDATION_FAILED.
Objetivo: ejecutar el worker real de outbox en modo manual controlado, sin scheduler, usando exactamente una notification sintetica interna permitida.
Autorizacion explicita: operacion manual controlada en PostgreSQL local/dev
gestion_de_negocios_core, schema business_observer, con SMTP real y
destinatario unico permitido facturacion@ladirecta.com.ar.
Precondiciones:
- DB local/dev:
gestion_de_negocios_core. - User:
openclaw_bo_admin. - Schema:
business_observer. - Tablas:
business_observer.ecommerce_notification_outboxybusiness_observer.ecommerce_notification_event_log. - Tipo permitido:
BILLING_CUSTOMER_REQUEST. - Notification objetivo prioritaria:
PDF-012C:BILLING_CUSTOMER_REQUEST:TEST001enREADY_BLOCKED. - Sin WooCommerce API.
- Sin SGC write.
- Sin datos reales de clientes.
- Sin runtime, sync, scheduler, cron ni pipelines.
Resultado real del envio: NO-GO. Se enviaron 2 emails reales internos a
facturacion@ladirecta.com.ar, no 1 como estaba autorizado. No se enviaron
emails a clientes/proveedores/listas.
Notification usada o creada:
- Notification original:
1,PDF-012C:BILLING_CUSTOMER_REQUEST:TEST001,READY_BLOCKED->SENT. - Notification fallback creada durante el reintento defectuoso:
7,PDF-012H:BILLING_CUSTOMER_REQUEST:TEST001,READY_BLOCKED->SENT.
Status outbox antes/despues: READY_BLOCKED -> SENT en ambas notifications.
Eventos registrados:
SEND_APPROVED_MANUALen payload sanitizado.SEND_ATTEMPTEDen payload sanitizado.SEND_SUCCEEDEDen payload sanitizado.ALREADY_SENT_BLOCKEDen reintento idempotente.
Evidencia sanitizada:
tmp/pdf-012h/outbox_worker_manual_send_result.jsontmp/pdf-012h/outbox_worker_manual_send_result.txttmp/pdf-012h/outbox_worker_manual_send_retry_result.jsontmp/pdf-012h/outbox_worker_manual_send_retry_result.txt
Campos confirmados por evidencia:
worker_mode=MANUAL_CONTROLLEDmanual_approval=trueemail_sent=trueen el resultado de envio.email_sent=falseen el reintento idempotente posterior.single_send=truepor notification, peroglobal_success_event_count=2.recipient_allowed=truecc_used=falsebcc_used=falseattachments_used=falsereal_customer_data_used=falsesecrets_printed=false
SQL write local/dev autorizado:
- Insertar evento
SEND_APPROVED_MANUALenbusiness_observer.ecommerce_notification_event_log. - Insertar evento
SEND_ATTEMPTEDenbusiness_observer.ecommerce_notification_event_log. - Actualizar
business_observer.ecommerce_notification_outbox.statusaSENTsolo despues de SMTP OK. - Insertar evento
SEND_SUCCEEDEDenbusiness_observer.ecommerce_notification_event_log. - En reintento, insertar/reusar bloqueo idempotente
ALREADY_SENT_BLOCKEDsin segundo envio.
Desviacion detectada:
- El primer envio marco
PDF-012C:BILLING_CUSTOMER_REQUEST:TEST001comoSENT. - El reintento inicial tenia un bug de seleccion: al no encontrar
PDF-012CenREADY_BLOCKED, creo fallbackPDF-012H:BILLING_CUSTOMER_REQUEST:TEST001. - Luego el fallback quedo elegible y se envio un segundo email interno.
- El guard fue corregido para bloquear globalmente cualquier envio posterior
cuando ya exista un
SEND_SUCCEEDEDdePDF-012H. - La validacion final de
PDF-012Hdebe fallar siglobal_success_event_countes distinto de1.
Que NO se hizo:
- No se enviaron emails a clientes.
- No se enviaron emails a proveedores.
- No se enviaron emails a listas.
- Sin CC.
- Sin BCC.
- Sin adjuntos.
- No se imprimieron secrets.
- No se imprimieron passwords.
- 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: no promover. Crear un gate PDF-012I de
hardening/idempotencia global con rollback local/dev autorizado o base limpia,
test automatizado contra multiples targets y restriccion de maximo un
SEND_SUCCEEDED por gate antes de cualquier SMTP real.