feat(purga): Monday eliminado completamente del sistema

14 servicios eliminados, 7 controllers local-only, crons locales,
config sin MONDAY_*, frontend sin banners/avisos Monday.
552 tests API + 7 apps construidas.
This commit is contained in:
2026-09-11 11:47:17 +00:00
parent 64b01246d6
commit 89d95eb53b
130 changed files with 2018 additions and 14747 deletions

View File

@@ -9,12 +9,10 @@ export interface LeadMiDia {
origen: string
desarrollo?: string
updatedAt: string
/** Tablero del item: 'lead' (tablero Leads) u 'oportunidad' (Oportunidades) */
/** Tablero del item: 'lead' (captura ligera) u 'oportunidad' (afluencia) */
fuente: 'lead' | 'oportunidad'
/** Último evento del activity log del board; null si el item no tiene eventos */
/** Último cambio conocido; null si no hay */
ultimoCambio: { fechaISO: string; usuario: string | null; detalle: string } | null
/** true cuando el item se creó en modo local y aún no se sincroniza a Monday */
pendienteSync?: boolean
}
export interface ActividadMiDia {
@@ -38,11 +36,9 @@ export interface CapturaMiDia {
leadId: string
nombre: string
telefono: string
estado: string // estado actual en Monday; '' si el lead ya no existe en el board
estado: string
origen: string
capturadoEn: string // ISO
/** true cuando la captura se creó en modo local y aún no se sincroniza a Monday */
pendienteSync?: boolean
}
export interface ClienteMiDia {
@@ -52,7 +48,7 @@ export interface ClienteMiDia {
unidadCodigo: string
completado: boolean
capturadoEn: string // ISO
/** Estado actual del item en el tablero Apartado (Monday); null si no hay apartado ligado */
/** Estado actual del apartado ligado; null si no hay apartado ligado */
estadoApartado: string | null
}
@@ -70,8 +66,6 @@ export interface OportunidadMiDia {
ultimoCambio: { fechaISO: string; usuario: string | null; detalle: string } | null
/** Fecha y hora de la cita agendada (ISO local, ej. '2026-09-09T14:30') */
fechaCita?: string
/** true cuando el item se creó en modo local y aún no se sincroniza a Monday */
pendienteSync?: boolean
}
/** Apartado asignado al vendedor (tab "Mis apartados") */
@@ -82,13 +76,10 @@ export interface ApartadoMiDia {
estado: string
fechaLimite: string // 'YYYY-MM-DD' ('' si no tiene)
ultimoCambio: { fechaISO: string; usuario: string | null; detalle: string } | null
/** true cuando el item se creó en modo local y aún no se sincroniza a Monday */
pendienteSync?: boolean
}
export interface ResumenMiDia {
generadoEn: string
sinMapeoMonday: boolean
misLeads: LeadMiDia[]
misCapturas: CapturaMiDia[]
misClientes: ClienteMiDia[]
@@ -104,7 +95,7 @@ export interface ResumenMiDia {
equipo?: {
leadsNuevosSinAsignar: number
porVendedor: {
mondayUserId: number
usuarioId: string
nombre: string | null
leadsAsignados: number
leadsNuevosSemana: number
@@ -143,10 +134,9 @@ export const VOCABULARIO = {
Cliente: ['Cambo de Planes', 'Decision Familiar', 'No estaba Listo', 'Emergencia Personal'],
Timing: ['Compra Posterior', 'Esperando Credito', 'Esperando Venta de Propiedad', 'Esperando Proyecto'],
},
// Labels de la columna 'Origen' (board Leads) / 'Origen del Lead'
// (Oportunidades), verificados y sembrados en Monday 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'],
// Labels reales de la columna status 'Desarrollo' del board Leads (verificados en Monday)
// Labels oficiales de desarrollo
DESARROLLOS: ['ATELIER', 'DIAGONAL', 'ESTANZA', 'SENDA', 'SOLANA'],
} as const
@@ -255,8 +245,7 @@ export type SlotDocApartado = (typeof SLOTS_DOCS_APARTADO)[number]['tipo']
/**
* URL del cotizador (/quote/) con los datos del cliente prellenados y el id de
* la oportunidad: al guardar, la cotización queda vinculada a ese cliente en
* Monday (el API actualiza ese item en vez de crear uno nuevo).
* la oportunidad: al guardar, la cotización queda ligada a ese cliente.
*/
export function urlCotizadorParaOportunidad(op: OportunidadMiDia): string {
const params = new URLSearchParams()