feat(alta): guardado progresivo por etapa con réplica a Monday

- Al avanzar cada paso del wizard: upsert silencioso del borrador local
  + sync a Monday (iniciar → Contacto en PROSPECTO; pasos siguientes →
  PATCH con los campos mapeables: datos generales, dirección armada,
  actividad económica)
- Al completar: Contacto pasa a CLIENTE + Apartado + funnel (dedup)
- progresoId viaja con el borrador (se restaura solo); fallos de sync
  no bloquean el avance (aviso ámbar no bloqueante); submit final con
  fallback al endpoint legado si nunca hubo sync
- API: POST /clientes/progreso/iniciar, PATCH /clientes/progreso/:id,
  POST /clientes/progreso/:id/completar; POST /clientes legado intacto
- Tests: API 338 (+16), alta-clientes 112 (+4); smoke en vivo
  verificado (PROSPECTO → patch → CLIENTE + Apartado) y limpiado
This commit is contained in:
2026-09-01 21:03:47 +00:00
parent cd93aec91d
commit ccd4ca78ca
11 changed files with 876 additions and 40 deletions

View File

@@ -34,11 +34,14 @@
## 4. Alta de clientes — `/client/` (6 min)
1. Iniciar un alta de prueba (usar datos ficticios, ej. "Cliente Demo").
- El alta se guarda **etapa por etapa**: al avanzar del primer paso se crea el
**Contacto en Monday con Estado `PROSPECTO`** y cada paso actualiza sus
columnas (se puede mostrar en Monday cómo va llenándose).
2. Mostrar: **validación de CURP** (escribir una mal formada → error), secciones del formulario, co-acreditado condicional.
3. Subir un PDF cualquiera como documento → mostrar **OCR**, **vista previa** y el **checklist** del expediente.
4. **Firma digital** en pantalla.
5. Guardar → ir a Monday y mostrar:
- El **Contacto** creado con su perfil demográfico.
- El **Contacto** (creado como `PROSPECTO` al avanzar del paso 1) ahora con Estado `CLIENTE` y su perfil demográfico.
- El item en **Apartado** con estado `Pago Apartado` y el **checkbox del documento** ya prendido.
## 5. Cobranza — `/pay/` (5 min)