Saltar a contenido

PDF-012K - Worker Guarded Single Send Local Dev

Objetivo

Ejecutar una prueba real controlada del worker manual con guard global integrado, usando una notification sintetica limpia y enviando exactamente 1 email real interno a facturacion@ladirecta.com.ar.

Autorizacion explicita

Se autorizo exactamente 1 envio real interno a facturacion@ladirecta.com.ar.

Tambien se autorizo SQL write controlado unicamente en PostgreSQL local/dev gestion_de_negocios_core, schema business_observer, para crear/reutilizar la notification PDF-012K, registrar aprobacion manual, intento, exito, actualizacion a SENT despues de SMTP OK y bloqueo idempotente del retry.

Contexto PDF-012H y correccion PDF-012J

PDF-012H fallo porque el retry no encontro la notification original despues de quedar SENT, creo una fallback y envio un segundo email. PDF-012J integro guard global antes de fallback y antes de SMTP, de modo que un exito compatible bloquea cualquier retry antes de enviar.

Notification usada

  • idempotency_key: PDF-012K:BILLING_CUSTOMER_REQUEST:TEST001
  • recipient: facturacion@ladirecta.com.ar
  • notification_type: BILLING_CUSTOMER_REQUEST
  • status inicial: READY_BLOCKED
  • send_blocked_by_default: true
  • worker_mode: MANUAL_CONTROLLED_WITH_GLOBAL_GUARD
  • manual_approval: true

Resultado del envio

El primer intento cerro como SENT_SINGLE_EMAIL_FROM_WORKER_GUARDED, con email_sent=true, single_send=true, sin CC, sin BCC y sin adjuntos.

La notification local/dev fue notification_id=14. El status outbox cambio de READY_BLOCKED a SENT solo despues de SMTP OK.

Eventos registrados

  • NOTIFICATION_CREATED si la notification no existia.
  • SEND_APPROVED_MANUAL.
  • SEND_ATTEMPTED.
  • SEND_SUCCEEDED.
  • ALREADY_SENT_GLOBAL_BLOCKED para el retry.

Reintento

El retry queda bloqueado antes de SMTP:

  • retry_email_sent=false
  • retry_blocked_before_smtp=true
  • smtp_send_commands_executed=false
  • global_send_succeeded_count=1

Evidencia sanitizada

  • tmp/pdf-012k/worker_guarded_single_send_result.json
  • tmp/pdf-012k/worker_guarded_single_send_result.txt
  • tmp/pdf-012k/worker_guarded_single_send_retry_result.json
  • tmp/pdf-012k/worker_guarded_single_send_retry_result.txt

La evidencia no incluye password, secret, connection string, contenido de archivos secrets ni datos reales de clientes.

SQL write local/dev exacto

  • insert idempotente de business_observer.ecommerce_notification_outbox para PDF-012K:BILLING_CUSTOMER_REQUEST:TEST001, si faltaba;
  • insert de NOTIFICATION_CREATED, si se creo la notification;
  • insert de SEND_APPROVED_MANUAL;
  • insert de SEND_ATTEMPTED;
  • update de business_observer.ecommerce_notification_outbox.status a SENT despues de SMTP OK;
  • insert de SEND_SUCCEEDED;
  • insert idempotente de ALREADY_SENT_GLOBAL_BLOCKED para el retry.

Que no se hizo

No se enviaron emails a clientes, proveedores ni listas. No se uso CC, BCC ni adjuntos. No se imprimieron secrets/passwords/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 siguiente paso recomendado es una revision GO/NO-GO de promocion del worker guarded a produccion controlada, manteniendo scheduler/cron/runtime automatico bloqueados hasta autorizacion separada.