fix(catalogos): SOLE y MUTUO en desarrollos de alta lead/afluencia/cliente y filtros

This commit is contained in:
2026-09-12 22:41:15 +00:00
parent 47b00bb6eb
commit 34229f1894
5 changed files with 11 additions and 7 deletions

View File

@@ -57,8 +57,9 @@ export const VOCABULARIO = {
// Labels de la columna 'Origen' (board Leads) / 'Origen del Lead' // Labels de la columna 'Origen' (board Leads) / 'Origen del Lead'
// (afluencia), verificados y sembrados el 2026-09-04 // (afluencia), verificados y sembrados el 2026-09-04
ORIGENES: ['PASE', 'PROSPECCION ASESOR', 'ACTIVACION', 'FACEBOOK FRASA', 'REFERIDO', 'BROCKER', 'OTRO'], ORIGENES: ['PASE', 'PROSPECCION ASESOR', 'ACTIVACION', 'FACEBOOK FRASA', 'REFERIDO', 'BROCKER', 'OTRO'],
// Labels oficiales de desarrollo (verificados el 2026-09-04) // Labels oficiales de desarrollo (verificados el 2026-09-04; SOLE y MUTUO
DESARROLLOS: ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA'], // agregados 2026-09 — existen en captura e inventario)
DESARROLLOS: ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA', 'SOLE', 'MUTUO'],
} as const } as const
export type FaseLead = (typeof VOCABULARIO.FASES_LEAD)[number] export type FaseLead = (typeof VOCABULARIO.FASES_LEAD)[number]

View File

@@ -2,7 +2,7 @@
* Espejo del vocabulario del API (api-gateway/src/config/vocabulario.ts): * Espejo del vocabulario del API (api-gateway/src/config/vocabulario.ts):
* DESARROLLOS es la lista canónica de desarrollos FRASA. Mantener sincronizado. * DESARROLLOS es la lista canónica de desarrollos FRASA. Mantener sincronizado.
*/ */
export const DESARROLLOS = ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA'] as const export const DESARROLLOS = ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA', 'SOLE', 'MUTUO'] as const
/** Plantillas de preguntas sugeridas, parametrizadas por desarrollo */ /** Plantillas de preguntas sugeridas, parametrizadas por desarrollo */
const PLANTILLAS: ((desarrollo: string) => string)[] = [ const PLANTILLAS: ((desarrollo: string) => string)[] = [

View File

@@ -18,17 +18,20 @@ export const PROYECTOS = [
'ATELIER', 'ATELIER',
'ESTANZA', 'ESTANZA',
'SOLANA', 'SOLANA',
'SOLE',
'MUTUO',
'OTRO', 'OTRO',
] as const ] as const
// Modelos por proyecto (inventario real, ago-2026). Los proyectos sin lista // Modelos por proyecto (inventario real, ago-2026). Los proyectos sin lista
// (RESIDENCIAL MONTEBELLO histórico, OTRO) capturan el modelo en texto libre. // (RESIDENCIAL MONTEBELLO histórico, MUTUO, OTRO) capturan el modelo en texto libre.
export const MODELOS_POR_PROYECTO: Partial<Record<(typeof PROYECTOS)[number], string[]>> = { export const MODELOS_POR_PROYECTO: Partial<Record<(typeof PROYECTOS)[number], string[]>> = {
DIAGONAL: ['1R', '2RA', '2RB', '2RC'], DIAGONAL: ['1R', '2RA', '2RB', '2RC'],
SENDA: ['HIMALAYA', 'SANTIAGO', 'ESMERALDA PA', 'ESMERALDA PB', 'SANTA CRUZ'], SENDA: ['HIMALAYA', 'SANTIAGO', 'ESMERALDA PA', 'ESMERALDA PB', 'SANTA CRUZ'],
ATELIER: ['TRIBECA', 'SOHO'], ATELIER: ['TRIBECA', 'SOHO'],
ESTANZA: ['DUPLO A', 'DUPLO B'], ESTANZA: ['DUPLO A', 'DUPLO B'],
SOLANA: ['MIRADOR', 'PANORAMA'], SOLANA: ['MIRADOR', 'PANORAMA'],
SOLE: ['ALBA', 'HORIZONTE', 'OCASO'],
} }
export const ESTADOS_CIVILES: { valor: EstadoCivil; etiqueta: string }[] = [ export const ESTADOS_CIVILES: { valor: EstadoCivil; etiqueta: string }[] = [
@@ -97,7 +100,7 @@ export const TAMANO_MAX_DOCUMENTO = 10 * 1024 * 1024 // 10 MB
// Catálogos (labels exactos). Origen: vocabulario FRASA sembrado en // Catálogos (labels exactos). Origen: vocabulario FRASA sembrado en
// los tableros Leads y Oportunidades el 2026-09-04 (reemplaza al set anterior) // los tableros Leads y Oportunidades el 2026-09-04 (reemplaza al set anterior)
export const ORIGENES_LEAD = ['PASE', 'PROSPECCION ASESOR', 'ACTIVACION', 'FACEBOOK FRASA', 'REFERIDO', 'BROCKER', 'OTRO'] as const export const ORIGENES_LEAD = ['PASE', 'PROSPECCION ASESOR', 'ACTIVACION', 'FACEBOOK FRASA', 'REFERIDO', 'BROCKER', 'OTRO'] as const
export const DESARROLLOS_LEAD = ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA'] as const export const DESARROLLOS_LEAD = ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA', 'SOLE', 'MUTUO'] as const
// Label de la columna status 'Califica' del tablero Leads (captura de afluencia). // Label de la columna status 'Califica' del tablero Leads (captura de afluencia).
// El modelo de interés sale de MODELOS_POR_PROYECTO según el desarrollo elegido. // El modelo de interés sale de MODELOS_POR_PROYECTO según el desarrollo elegido.

View File

@@ -19,7 +19,7 @@ describe('catálogos', () => {
}) })
it('desarrollos = labels reales de la columna Desarrollo del board Leads', () => { it('desarrollos = labels reales de la columna Desarrollo del board Leads', () => {
expect([...DESARROLLOS_LEAD]).toEqual(['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA']) expect([...DESARROLLOS_LEAD]).toEqual(['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA', 'SOLE', 'MUTUO'])
}) })
it('motivos de descarte = vocabulario CRM (igual que el API)', () => { it('motivos de descarte = vocabulario CRM (igual que el API)', () => {

View File

@@ -139,7 +139,7 @@ export const VOCABULARIO = {
// Labels de origen (captura ligera y afluencia), verificados el 2026-09-04 // Labels de origen (captura ligera y afluencia), verificados el 2026-09-04
ORIGENES: ['PASE', 'PROSPECCION ASESOR', 'ACTIVACION', 'FACEBOOK FRASA', 'REFERIDO', 'BROCKER', 'OTRO'], ORIGENES: ['PASE', 'PROSPECCION ASESOR', 'ACTIVACION', 'FACEBOOK FRASA', 'REFERIDO', 'BROCKER', 'OTRO'],
// Labels oficiales de desarrollo // Labels oficiales de desarrollo
DESARROLLOS: ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA'], DESARROLLOS: ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA', 'SOLE', 'MUTUO'],
} as const } as const
// Constantes derivadas (nombres estables que consume el resto de la app) // Constantes derivadas (nombres estables que consume el resto de la app)