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:
@@ -14,7 +14,7 @@ import {
|
||||
} from './mi-dia'
|
||||
|
||||
describe('catálogos', () => {
|
||||
it('orígenes = vocabulario FRASA sembrado en Monday (Leads y Oportunidades)', () => {
|
||||
it('orígenes = vocabulario FRASA (captura ligera y afluencia)', () => {
|
||||
expect([...ORIGENES_LEAD]).toEqual(['PASE', 'PROSPECCION ASESOR', 'ACTIVACION', 'FACEBOOK FRASA', 'REFERIDO', 'BROCKER', 'OTRO'])
|
||||
})
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user