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'
// (afluencia), verificados y sembrados el 2026-09-04
ORIGENES: ['PASE', 'PROSPECCION ASESOR', 'ACTIVACION', 'FACEBOOK FRASA', 'REFERIDO', 'BROCKER', 'OTRO'],
// Labels oficiales de desarrollo (verificados el 2026-09-04)
DESARROLLOS: ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA'],
// Labels oficiales de desarrollo (verificados el 2026-09-04; SOLE y MUTUO
// agregados 2026-09 — existen en captura e inventario)
DESARROLLOS: ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA', 'SOLE', 'MUTUO'],
} as const
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):
* 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 */
const PLANTILLAS: ((desarrollo: string) => string)[] = [

View File

@@ -18,17 +18,20 @@ export const PROYECTOS = [
'ATELIER',
'ESTANZA',
'SOLANA',
'SOLE',
'MUTUO',
'OTRO',
] as const
// 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[]>> = {
DIAGONAL: ['1R', '2RA', '2RB', '2RC'],
SENDA: ['HIMALAYA', 'SANTIAGO', 'ESMERALDA PA', 'ESMERALDA PB', 'SANTA CRUZ'],
ATELIER: ['TRIBECA', 'SOHO'],
ESTANZA: ['DUPLO A', 'DUPLO B'],
SOLANA: ['MIRADOR', 'PANORAMA'],
SOLE: ['ALBA', 'HORIZONTE', 'OCASO'],
}
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
// 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 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).
// 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', () => {
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)', () => {

View File

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