fix(afluencia): dropdowns salarios + lo quiere para + redirect Mi día

- Rango salarial: input → select con 14 rangos (A-0 a M-100001)
- Lo quiere para: input → select con 2 opciones (Vivir / Inversión)
- Validación labels origen/desarrollo tolerante en backend (omitir si no existe)
- Redirect a /hoy/ después de crear afluencia o completar alta cliente
This commit is contained in:
2026-09-08 06:00:24 +00:00
parent dc43cbe1ce
commit f297aabc1a
3 changed files with 64 additions and 15 deletions

View File

@@ -291,17 +291,23 @@ export async function crearAfluencia(
if (existente) return { duplicado: { id: existente.id, nombre: existente.nombre } }
}
if (datos.origen !== undefined) {
// Validación tolerante: si el label no existe en el board, se omite en vez
// de fallar. Esto evita 400 cuando Monday aún no propagó un label nuevo.
let origenSafe = datos.origen
if (origenSafe !== undefined) {
const labels = await monday.labelsDeColumna(boardOportunidades, 'Origen del Lead')
if (!labels.includes(datos.origen)) {
throw new AppError(400, `Origen inválido: "${datos.origen}". Labels válidos: ${labels.join(', ')}`)
if (!labels.includes(origenSafe)) {
console.warn(`Origen "${origenSafe}" no es label del board; se omite`)
origenSafe = undefined
}
}
if (datos.desarrollo !== undefined) {
let desarrolloSafe = datos.desarrollo
if (desarrolloSafe !== undefined) {
const labels = await monday.labelsDeColumna(boardOportunidades, 'Desarrollo')
if (!labels.includes(datos.desarrollo)) {
throw new AppError(400, `Desarrollo inválido: "${datos.desarrollo}". Labels válidos: ${labels.join(', ')}`)
if (!labels.includes(desarrolloSafe)) {
console.warn(`Desarrollo "${desarrolloSafe}" no es label del board; se omite`)
desarrolloSafe = undefined
}
}
@@ -309,8 +315,8 @@ export async function crearAfluencia(
nombre: datos.nombre,
telefono: datos.telefono,
email: datos.email,
desarrolloLabel: datos.desarrollo,
origenLabel: datos.origen,
desarrolloLabel: desarrolloSafe,
origenLabel: origenSafe,
modeloLabel: datos.modelo,
medioContacto: datos.medioContacto,
edad: datos.edad,