feat(leads): la captura desde una app se asigna al capturista

POST /api/leads con sesion y Monday vinculado asigna el lead a quien lo
registro (mas su actividad de contacto) en vez del round-robin; sin
vinculo o sin token sigue el reparto. Bandera rr:skip para que el
webhook create_item no pise la asignacion durante la propagacion de
Monday (la carrera se observo en el smoke). Mensajes de exito en
/hoy y /client reflejan a quien quedo asignado.
This commit is contained in:
2026-09-03 21:26:20 +00:00
parent d59c8c0d7e
commit f382987fbf
9 changed files with 166 additions and 6 deletions

View File

@@ -62,6 +62,7 @@ export default function AltaAfluenciaForm({ onVolver, onPasarAAltaCliente }: Pro
const [errores, setErrores] = useState<Errores>({})
const [enviando, setEnviando] = useState(false)
const [leadCreado, setLeadCreado] = useState<LeadResumen | null>(null)
const [asignacion, setAsignacion] = useState<'capturista' | 'round-robin' | null>(null)
const [aviso, setAviso] = useState('')
const cambiar = (campo: keyof typeof FORM_INICIAL) => (e: { target: { value: string } }) => {
@@ -122,6 +123,7 @@ export default function AltaAfluenciaForm({ onVolver, onPasarAAltaCliente }: Pro
estado: res.lead.estado,
origen: form.origen,
})
setAsignacion(res.lead.asignacion ?? 'round-robin')
} else if (res.motivo === 'duplicado') {
setAviso(`Ya existe un lead con ese teléfono: ${res.nombre}.`)
} else {
@@ -134,6 +136,7 @@ export default function AltaAfluenciaForm({ onVolver, onPasarAAltaCliente }: Pro
setErrores({})
setAviso('')
setLeadCreado(null)
setAsignacion(null)
}
if (leadCreado !== null) {
@@ -143,7 +146,9 @@ export default function AltaAfluenciaForm({ onVolver, onPasarAAltaCliente }: Pro
role="status"
className="rounded-lg border border-green-200 bg-green-50 px-4 py-3 text-sm font-medium text-green-700"
>
Registrado en afluencia — se asignará por round-robin
{asignacion === 'capturista'
? 'Registrado en afluencia — asignado a ti'
: 'Registrado en afluencia — se asignará por round-robin'}
</p>
<div className="mt-6 flex flex-wrap gap-3">
<button