PDF-013A MVP Request Intake Production Path¶
Objetivo¶
Preparar el camino productivo minimo para recibir una solicitud futura de alta ecommerce y convertirla en request, audit, notification outbox bloqueada y event log, sin activar envio automatico ni tocar sistemas externos.
Camino objetivo:
formulario/plugin futuro -> request prod -> audit prod -> notification outbox prod READY_BLOCKED -> event log prod -> worker manual posterior
Contrato de solicitud¶
Campos minimos:
razon_socialnombre_fantasiacuit_normalizadoemail_contactotelefono_whatsappdomicilio_fiscaldomicilio_pedidodomicilio_pedido_es_fiscalrubrocomentariosource_channelrequest_status = PENDING_SGC_REVIEW
Reglas operativas:
SGCsigue read-only.- Facturacion revisa manualmente.
- La persona autorizada carga/corrige en
SGC. - OpenClaw detecta despues por lectura.
- Ningun cliente puede comprar solo por completar la solicitud.
Contrato de outbox¶
notification_type = BILLING_CUSTOMER_REQUESTrecipient_email = facturacion@ladirecta.com.arstatus = READY_BLOCKEDsend_blocked_by_default = truetemplate_version = billing_customer_request_v1idempotency_keydeterministicapayload_hashdeterministico
Idempotencia¶
Key productiva candidate:
REQUEST_INTAKE:<normalized_cuit>:<email_hash>:<date_bucket>
Key sintetica de este gate:
PDF-013A:REQUEST_INTAKE:TEST001
El payload_hash se calcula con JSON canonico ordenado para que el mismo
payload genere siempre el mismo hash.
Rate-limit¶
- Maximo
1request activa poridempotency_key. - Maximo
1outbox activa por request. - No envio automatico.
- Bloqueo si recipient no esta en allowlist.
- Bloqueo si request ya existe pendiente.
Seguridad¶
- Payloads sinteticos y sanitizados.
- Sin datos reales de clientes.
- Sin secrets, passwords ni connection strings en output.
- Recipient limitado a allowlist interna.
- Notification queda
READY_BLOCKED. - Worker manual queda para un gate posterior.
SGC read-only¶
Este gate no escribe en SGC. La solicitud solo deja preparado el contrato para
revision manual de Facturacion y carga/correccion posterior por persona
autorizada.
WooCommerce no tocado¶
Este gate no llama WooCommerce API, no crea customers, no habilita login, no cambia roles y no modifica precios ni permisos comerciales.
Output sanitizado¶
El script candidate genera evidencia local ignorada por Git en:
tmp/pdf-013a/request_intake_candidate.jsontmp/pdf-013a/request_payload_sanitized.jsontmp/pdf-013a/outbox_payload_sanitized.jsontmp/pdf-013a/audit_payload_sanitized.jsontmp/pdf-013a/event_log_payload_sanitized.jsontmp/pdf-013a/validation_summary.json
Que NO se hizo¶
- No se enviaron emails reales.
- No se conecto SMTP para envio.
- No se ejecuto SQL write en prod.
- No se escribio en
SGC. - No se toco WooCommerce API.
- No se usaron datos reales de clientes.
- No se activo worker.
- No se activo runtime, sync, scheduler, cron ni pipelines.
Proximo paso hacia produccion¶
PDF-013B: preflight read-only del endpoint/form/plugin candidate y de los
constraints productivos requeridos. Despues, un gate separado podria autorizar
un SQL write sintetico bloqueado o un piloto controlado con datos explicitamente
aprobados.