feat(9-mejoras): limpieza leads + admin CRUD + calendario + CRM360 FRASA

1. Leads limpiados (207 eliminados, 18 apartados conservados)
2. Round-robin desactivado (config round_robin_habilitado=false)
3. Admin puede borrar/reasignar/mover leads (DELETE/PATCH/POST)
4. Calendario: fechaCita guardada y pasada correctamente
5. Avisos Monday eliminados (BannerModoLocal, ChipPendienteSync, vinculación)
6. Contactos filtrados por usuario asignado
7. Modal bitácora: notas persisten entre fases
8. Fases oportunidades: Agendo→Afluencia→Cotizar→Aparto
9. Toast de nota eliminado en cambios de status
10. Branding: CRM360 FRASA + logo en todas las apps
11. 7 apps construidas
This commit is contained in:
2026-09-10 07:05:40 +00:00
parent 356bf46216
commit 16cacd5f31
43 changed files with 246 additions and 190 deletions

View File

@@ -58,6 +58,9 @@ import {
buscarLeadsEndpoint,
convertirLeadEndpoint,
descartarLeadEndpoint,
eliminarLeadEndpoint,
asignarLeadEndpoint,
moverLeadEndpoint,
} from '../controllers/leads.controller.js'
import {
actualizarRolEndpoint,
@@ -230,6 +233,10 @@ apiRouter.post('/leads/:itemId/estado', cambiarEstadoLeadEndpoint)
apiRouter.post('/leads/:itemId/descartar', descartarLeadEndpoint)
// Botón "Agendo" de Mis leads: convierte el lead en oportunidad (Agendo Cita)
apiRouter.post('/leads/:itemId/convertir', convertirLeadEndpoint)
// Admin CRUD de leads
apiRouter.delete('/leads/:itemId', requireAdmin, eliminarLeadEndpoint)
apiRouter.patch('/leads/:itemId/asignar', requireAdmin, asignarLeadEndpoint)
apiRouter.post('/leads/:itemId/mover', requireAdmin, moverLeadEndpoint)
// Alta Afluencia (forma completa de /client): vive en el tablero Oportunidades
apiRouter.post('/afluencias', crearAfluenciaEndpoint)