PDF-012C MVP Notification Outbox Local Dev¶
Objetivo¶
Crear la base productiva minima local/dev para notificaciones internas de alta ecommerce sin disparar emails sueltos: outbox persistente, idempotencia, auditoria, template versionado, destinatario interno permitido y bloqueo por defecto.
DDL ejecutado local/dev¶
Se ejecuto en PostgreSQL local/dev:
- DB:
gestion_de_negocios_core - Schema:
business_observer - User:
openclaw_bo_admin - DDL:
PDF-012C-NOTIFICATION-OUTBOX-DDL-CANDIDATE.sql
Tablas creadas:
business_observer.ecommerce_notification_outboxbusiness_observer.ecommerce_notification_event_log
Antes del DDL el ejecutor valida DB, user, schema, modo preflight read-only,
ausencia/estado de objetos PDF-012C, no email real, no WooCommerce y no SGC
write. Tambien genera backup schema-only local/dev fuera de Git en
C:\APV\backups\openclawai\PDF-012C\.
Notification candidate¶
Se inserto una notification candidate sintetica:
notification_type:BILLING_CUSTOMER_REQUESTrecipient_email:facturacion@ladirecta.com.arstatus:READY_BLOCKEDsend_blocked_by_default:trueidempotency_key:PDF-012C:BILLING_CUSTOMER_REQUEST:TEST001template_version:billing_customer_request_v1payload_hash: SHA-256 del payload sintetico/sanitizado
Idempotencia¶
idempotency_key es unico. El ejecutor reintenta la misma clave y confirma que
no duplica: queda 1 notification candidate y 0 duplicados.
Auditoria¶
Se inserto 1 evento:
event_type:NOTIFICATION_CREATEDevent_status:READY_BLOCKEDevent_payload_sanitized: payload sintetico sin secrets, password, token ni connection string.
Template versionado¶
Template publico:
infra/business-observer/production/b2b-pricing/PDF-012C/templates/billing_customer_request_v1.txt
Incluye razon social, CUIT sanitizado, email sanitizado, WhatsApp sanitizado,
domicilio fiscal, domicilio pedido, rubro, comentario, estado
PENDING_SGC_REVIEW y nota de operacion humana: SGC read-only, carga o
correccion manual.
Destinatarios permitidos¶
Inicialmente solo:
facturacion@ladirecta.com.ar
La constraint bloquea destinatarios de clientes, proveedores o listas.
Rate-limit conceptual¶
PDF-012C no activa workers. El rate-limit queda como contrato para el proximo gate: limitar por tipo de notificacion, destinatario, ventana temporal, estado no terminal y clave idempotente deterministica.
Bloqueo por defecto¶
send_blocked_by_default=true es default y constraint obligatoria. El gate no
incluye envio SMTP real ni --confirm-send.
Que NO se hizo¶
- No se enviaron emails reales.
- No se ejecuto
--confirm-send. - No se toco WooCommerce API.
- No se escribio en SGC.
- No se usaron datos reales de clientes.
- No se imprimieron secrets/passwords/connection strings.
- No se toco VPS/prod con datos.
- No se activo runtime, sync, scheduler, cron ni pipelines.
Proximo paso hacia MVP productivo¶
Gate separado: integrar una solicitud ecommerce sintetica con el outbox, mantener envio bloqueado, definir rate-limit operativo y generar un worker dry-run sin SMTP real antes de cualquier autorizacion productiva.