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

@@ -17,11 +17,19 @@ export type ContactoListaLocal = ContactoMonday & { fuente?: 'local' }
* Lista local: Clientes (alta de clientes) + capturas del embudo en boards
* OPORTUNIDADES/APARTADO, deduplicados por teléfono (gana el Cliente: tiene la
* ficha completa), más reciente primero, máx 100 (como getContactos).
* Filtra por usuario actual: clientes capturados por él + leads asignados a él.
*/
export async function listarContactosLocal(): Promise<ContactoListaLocal[]> {
const clientes = await prisma.cliente.findMany({ orderBy: { createdAt: 'desc' }, take: 100 })
export async function listarContactosLocal(usuarioId?: string): Promise<ContactoListaLocal[]> {
const clientes = await prisma.cliente.findMany({
where: usuarioId ? { capturadoPorId: usuarioId } : {},
orderBy: { createdAt: 'desc' },
take: 100,
})
const capturas = await prisma.leadCaptura.findMany({
where: { board: { in: ['OPORTUNIDADES', 'APARTADO'] } },
where: {
board: { in: ['OPORTUNIDADES', 'APARTADO'] },
...(usuarioId ? { usuarioId } : {}),
},
orderBy: { updatedAt: 'desc' },
take: 100,
})