Files
reformix-hackaton/mvp/b2c/src/lib/voice/lexicon.ts

61 lines
2.9 KiB
TypeScript

import type { Calidad, CategoriaMaterial, TipoReforma } from '@/budget/types';
export const CALIDAD_LEXICON: { calidad: Calidad; keywords: string[] }[] = [
{ calidad: 'premium', keywords: ['premium', 'lujo', 'alta gama', 'gama alta', 'lo mejor', 'calidad maxima', 'exclusivo'] },
{ calidad: 'basica', keywords: ['basico', 'economico', 'barato', 'sencillo', 'lo justo', 'ajustado'] },
{ calidad: 'media', keywords: ['normal', 'estandar', 'equilibrado', 'medio'] },
];
export const MATERIAL_LEXICON: { categoria: CategoriaMaterial; keywords: string[] }[] = [
{ categoria: 'suelo', keywords: ['suelo', 'tarima', 'parquet', 'porcelanico', 'ceramico', 'madera', 'vinilo'] },
{ categoria: 'pared', keywords: ['azulejo', 'alicatado', 'baldosa', 'microcemento', 'gres'] },
{ categoria: 'pintura', keywords: ['pintura', 'pintar', 'color de pared'] },
{ categoria: 'mobiliario', keywords: ['mueble', 'muebles', 'armario', 'encimera', 'mobiliario'] },
];
export const ESTRUCTURAL_LEXICON: string[] = [
'tirar muro', 'tirar el muro', 'quitar pared', 'tirar pared', 'abrir la cocina',
'mover el bano', 'mover sanitarios', 'cambiar la distribucion', 'derribar', 'tirar tabique',
];
export const ESTILO_LEXICON: string[] = [
'nordico', 'industrial', 'minimalista', 'rustico', 'moderno', 'clasico', 'mediterraneo',
'tonos calidos', 'tonos frios', 'blanco mate', 'madera clara', 'colores neutros',
];
export const ELEMENTOS_LEXICON: Record<
TipoReforma,
{ key: string; label: string; importe: number; keywords: string[] }[]
> = {
cocina: [
{ key: 'isla_cocina', label: 'Isla de cocina', importe: 120000, keywords: ['isla'] },
{ key: 'peninsula', label: 'Península', importe: 80000, keywords: ['peninsula'] },
{ key: 'electrodomesticos_integrados', label: 'Electrodomésticos integrados', importe: 150000, keywords: ['electrodomesticos integrados', 'integrados', 'encastrados'] },
],
bano: [
{ key: 'ducha_obra', label: 'Ducha de obra', importe: 90000, keywords: ['ducha de obra', 'plato a ras', 'plato de obra'] },
{ key: 'doble_lavabo', label: 'Doble lavabo', importe: 45000, keywords: ['doble lavabo', 'dos senos', 'doble seno'] },
],
salon: [],
comedor: [],
integral: [
{ key: 'isla_cocina', label: 'Isla de cocina', importe: 120000, keywords: ['isla'] },
],
otro: [],
};
export const AJUSTE_LEXICON: {
label: string;
tipo: 'fijo' | 'factor';
valor: number;
motivo: string;
keywords: string[];
}[] = [
{ label: 'Encimera de piedra natural', tipo: 'fijo', valor: 60000, motivo: 'mención de mármol/cuarzo/granito en la llamada', keywords: ['marmol', 'cuarzo', 'granito', 'silestone', 'piedra natural'] },
{ label: 'Domótica / iluminación inteligente', tipo: 'fijo', valor: 40000, motivo: 'mención de domótica en la llamada', keywords: ['domotica', 'inteligente', 'smart'] },
];
export function normalizeText(s: string): string {
return s.toLowerCase().normalize('NFD').replace(/[̀-ͯ]/g, '');
}