feat(mi-dia): app /hoy + CRM ligero para vendedores
- App Mi día: KPIs, mis actividades, mis leads con acciones rápidas (contactado/intento/agenda cita/descartar con motivo), captura rápida de lead (409 en duplicado por teléfono), vista equipo para coordinadores - API: GET /api/mi-dia/resumen, POST /api/leads, /leads/:id/estado, /leads/:id/descartar; mapeo Usuario.mondayUserId (seed listo para cuando inviten a los vendedores a Monday) - Landing: tarjeta Mi día; tests api 188, mi-dia 8, landing 4
This commit is contained in:
@@ -2,9 +2,9 @@ import { describe, it, expect } from 'vitest'
|
||||
import { MODULOS } from './modulos'
|
||||
|
||||
describe('MODULOS', () => {
|
||||
it('expone los 5 módulos del ecosistema', () => {
|
||||
expect(MODULOS).toHaveLength(5)
|
||||
expect(MODULOS.map((m) => m.id)).toEqual(['cotizador', 'alta-clientes', 'cobranza', 'agente-ia', 'tableros'])
|
||||
it('expone los 6 módulos del ecosistema', () => {
|
||||
expect(MODULOS).toHaveLength(6)
|
||||
expect(MODULOS.map((m) => m.id)).toEqual(['cotizador', 'alta-clientes', 'cobranza', 'agente-ia', 'tableros', 'mi-dia'])
|
||||
})
|
||||
|
||||
it('cada módulo tiene nombre, descripción y URL válida', () => {
|
||||
@@ -22,6 +22,7 @@ describe('MODULOS', () => {
|
||||
expect(urls['cobranza']).toBe('/pay/')
|
||||
expect(urls['agente-ia']).toBe('/ai/')
|
||||
expect(urls['tableros']).toBe('/dash/')
|
||||
expect(urls['mi-dia']).toBe('/hoy/')
|
||||
})
|
||||
|
||||
it('no hay ids ni URLs duplicadas', () => {
|
||||
|
||||
@@ -37,4 +37,10 @@ export const MODULOS: Modulo[] = [
|
||||
descripcion: 'KPIs comerciales, inventario y cobranza en tiempo real',
|
||||
url: '/dash/',
|
||||
},
|
||||
{
|
||||
id: 'mi-dia',
|
||||
nombre: 'Mi día',
|
||||
descripcion: 'Agenda del vendedor: leads, actividades y captura rápida',
|
||||
url: '/hoy/',
|
||||
},
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user