feat: Interesado en leads, lada MX/USA, orígenes FRASA y subcategoría de descarte
- Mis leads: botón Interesado (label sembrado en Monday, mueve a Leads Progreso); el botón Agenda cita ahora solo vive en Mis oportunidades - Descarte: además de la categoría, subcategoría del catálogo de Monday (workspace de referencia CRM FRASA); se guarda en la columna Subcategoria del tablero Motivos No Compra y el item queda en el grupo de su categoría - Teléfonos con selector de lada 🇲🇽 +52 / 🇺🇸 +1 en captura rápida (Mi día), Alta Afluencia y Alta de Cliente (tel. casa y celular); Monday escribe countryShortName MX/US y el número compacto (rechaza espacios); el dedup sigue comparando por los últimos 10 dígitos - Origen nuevo en captura rápida y afluencia: PASE, PROSPECCION ASESOR, ACTIVACION, FACEBOOK FRASA, REFERIDO, OTRO (sembrados en Leads.Origen y Oportunidades.Origen del Lead) - Tests: 461 API + 16 mi-dia + 116 alta-clientes, verde
This commit is contained in:
@@ -24,6 +24,7 @@ export const GRUPOS_POR_ESTADO: Record<string, { columna: string; destinos: Reco
|
||||
NUEVO: 'topics',
|
||||
'Intento de contacto': 'group_mm6s1jct',
|
||||
CONTACTADO: 'group_mm6s1jct',
|
||||
Interesado: 'group_mm6s1jct',
|
||||
'AGENDA CITA': 'group_mm6s1jct',
|
||||
CALIFICADO: 'group_mm6s1jct',
|
||||
DESCARTADO: 'group_mm6s96mc',
|
||||
|
||||
@@ -415,8 +415,14 @@ export class MondayService {
|
||||
return typeof crudo === 'number' ? crudo : Number(crudo)
|
||||
case 'email':
|
||||
return { email: String(crudo), text: String(crudo) }
|
||||
case 'phone':
|
||||
return { phone: String(crudo), countryShortName: 'MX' }
|
||||
case 'phone': {
|
||||
// LADA explícita: '+1...' (o 11 dígitos empezando en 1) = USA; el resto = México.
|
||||
// Monday rechaza el número con espacios ("+52 664..."): se envía compacto.
|
||||
const tel = String(crudo).replace(/\s+/g, '')
|
||||
const digitos = tel.replace(/\D/g, '')
|
||||
const esUsa = tel.startsWith('+1') || (digitos.length === 11 && digitos.startsWith('1'))
|
||||
return { phone: tel, countryShortName: esUsa ? 'US' : 'MX' }
|
||||
}
|
||||
case 'checkbox':
|
||||
return { checked: crudo === true || crudo === 'true' ? 'true' : 'false' }
|
||||
case 'people':
|
||||
@@ -751,6 +757,7 @@ export class MondayService {
|
||||
if (boardId === '') throw new AppError(500, 'MONDAY_BOARD_MOTIVOS no está configurado')
|
||||
const columnValues = await this.construirColumnValues(boardId, {
|
||||
Categoria: datos.categoria,
|
||||
Subcategoria: datos.subcategoria,
|
||||
Descripcion: datos.descripcion,
|
||||
})
|
||||
const buscada = datos.categoria.trim().toUpperCase()
|
||||
@@ -1501,6 +1508,8 @@ export interface DatosVenta {
|
||||
export interface DatosMotivoNoCompra {
|
||||
nombre: string // '<motivo> — <nombre del item de origen>'
|
||||
categoria: string // una de MOTIVOS_NO_COMPRA
|
||||
/** Label de la columna status 'Subcategoria' (catálogo del board de referencia) */
|
||||
subcategoria?: string
|
||||
descripcion?: string
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user