feat(mejoras): 25 mejoras UX en todos los módulos + purga Monday
Backend: mi-dia siempre local, vocabulario canónico, AplicacionPago con usuario Mi día: modal español real, cita desde modal, score falso eliminado Cotizador: barra sticky, persistencia local con folio Alta Clientes: redirect eliminado, foto conectada, asesor desde sesión, refs dinámicas Cobranza: contrato Mora arreglado, link a Plan, abono próximo pago, WhatsApp Landing: contactos locales, ModalContacto eliminado, ModoTrabajo eliminado Dashboards: MiTablero unificado, funnel con descartados, drill-down, rango fechas Chat FRASA: corpus 5 desarrollos, 6 herramientas, historial conversaciones 69 archivos, 7 apps construidas
This commit is contained in:
@@ -79,3 +79,40 @@ export function funnelMisLeads(misLeads: LeadMiDia[]): EtapaFunnelPersonal[] {
|
||||
.map(([etapa, valor]) => ({ etapa, valor }))
|
||||
.sort((a, b) => b.valor - a.valor || a.etapa.localeCompare(b.etapa))
|
||||
}
|
||||
|
||||
// ---------- Tablero personal (GET /api/reportes/mi-tablero) ----------
|
||||
// Mismo endpoint que consume DashboardVendedor en la app de Mi día.
|
||||
|
||||
export interface MiTablero {
|
||||
generadoEn: string
|
||||
leadsPorDia: { fecha: string; cantidad: number }[]
|
||||
conversion: {
|
||||
leads: number
|
||||
oportunidades: number
|
||||
apartados: number
|
||||
vendidos: number
|
||||
/** Leads con etapa terminal DESCARTADO; etapa extra al final del funnel */
|
||||
descartados: number
|
||||
}
|
||||
ventasMes: { monto: number; unidades: number }
|
||||
porOrigen: { origen: string; total: number; convertidos: number }[]
|
||||
porDesarrollo: { desarrollo: string; ventas: number }[]
|
||||
actividadesHoy: number
|
||||
actividadesPendientes: number
|
||||
}
|
||||
|
||||
/**
|
||||
* Etapas del funnel personal desde el endpoint unificado: Leads →
|
||||
* Oportunidades → Apartados → Vendidos, con "Descartados" al final (fuera del
|
||||
* embudo: leads terminados sin conversión) para que no se omitan.
|
||||
*/
|
||||
export function funnelMiTablero(tablero: MiTablero): EtapaFunnelPersonal[] {
|
||||
const c = tablero.conversion
|
||||
return [
|
||||
{ etapa: 'Leads', valor: c.leads },
|
||||
{ etapa: 'Oportunidades', valor: c.oportunidades },
|
||||
{ etapa: 'Apartados', valor: c.apartados },
|
||||
{ etapa: 'Vendidos', valor: c.vendidos },
|
||||
{ etapa: 'Descartados', valor: c.descartados },
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user