Especificación analizada
Checkout sin registro (Guest Checkout)
Permitir a usuarios no registrados completar una compra introduciendo solo email, dirección de envío y datos de pago, sin crear cuenta obligatoriamente.
checkout
auth
payments
email
UX
Análisis completado — 5 áreas infraespecificadas detectadas. 2 resueltas automáticamente desde .specify/defaults.yml.
Áreas de ambigüedad detectadas
La spec no indica si el carrito guest debe persistir entre sesiones (localStorage, cookie, servidor).
✓ Respuesta codificada desde defaults.yml
El carrito guest persiste en localStorage por 7 días. Sin sincronización servidor.
No está definido si, tras completar la compra como guest, se ofrece al usuario la opción de crear cuenta reutilizando los datos introducidos.
Pregunta de clarificación
¿Debe mostrarse una pantalla de "Crear cuenta" post-checkout con el email y dirección ya rellenos? Si es así, ¿es un paso obligatorio o dismissable?
¿Pueden los usuarios guest consultar el estado de su pedido sin cuenta?
✓ Respuesta codificada desde feature/order-tracking.md
Sí. Acceso por link en email de confirmación + token de 48 h. Sin autenticación.
Contexto relacionado
El token se genera en
OrderService.createGuestToken(). Revisar expiración si cambia el SLA de envío.
La spec menciona "validación de dirección" pero no especifica el proveedor (Google Maps API, Loqate, validación básica propia) ni si debe fallar silenciosamente o bloquear el submit.
Pregunta de clarificación
¿Qué proveedor de validación de direcciones se usa y cuál es el comportamiento esperado si la API no responde? ¿Se permite continuar con aviso o se bloquea el formulario?
No hay mención al tratamiento del email guest para comunicaciones de marketing ni al checkbox de consentimiento RGPD requerido por compliance.
Pregunta de clarificación
¿Se debe incluir checkbox de opt-in de marketing en el formulario guest? ¿El email guest entra en el CRM automáticamente o solo si hay consentimiento explícito?
Parche propuesto para checkout-guest-flow.spec.md
## Decisiones de clarificación — 16 jun 2026
### [2] Conversión post-compra
post_checkout_upsell:
enabled: true # PENDIENTE confirmación PM
mode: "dismissable" # PENDIENTE: obligatorio vs. dismissable
prefill_fields: ["email", "address", "name"]
### [4] Validación de dirección
address_validation:
provider: "TBD" # PENDIENTE: Google Maps / Loqate / interno
on_api_failure: "warn" # PENDIENTE: warn | block
### [5] RGPD / marketing opt-in
marketing_consent:
checkbox_visible: true # PENDIENTE confirmación Legal
default_checked: false
auto_crm: false # solo con consentimiento explícito