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:
2026-08-28 06:23:15 +00:00
parent 1f5b6ee088
commit bc0f9da8fe
31 changed files with 5917 additions and 3 deletions

View File

@@ -21,6 +21,7 @@ const datos: DatosUsuarioSeed = {
rol: 'vendedor',
asignacion: 'MONTEBELLO',
empleadoId: 13676,
mondayUserId: null,
passwordHash: 'hash-inicial',
}

View File

@@ -28,6 +28,7 @@ export interface DatosUsuarioSeed {
rol: string
asignacion: string | null
empleadoId: number | null
mondayUserId: number | null
passwordHash: string
}
@@ -51,6 +52,7 @@ export async function upsertUsuario(
rol: datos.rol,
asignacion: datos.asignacion,
empleadoId: datos.empleadoId,
mondayUserId: datos.mondayUserId,
...(resetPasswords ? { passwordHash: datos.passwordHash } : {}),
},
})
@@ -62,6 +64,8 @@ interface VendedorJson {
nombre: string
asignacion: string | null
rol: string
// User ID de Monday cuando el vendedor ya tiene cuenta (hoy solo Martin Zavala)
mondayUserId?: number | null
}
async function main(): Promise<void> {
@@ -83,6 +87,7 @@ async function main(): Promise<void> {
rol: v.rol,
asignacion: v.asignacion,
empleadoId: v.empleadoId,
mondayUserId: v.mondayUserId ?? null,
passwordHash: hashVendedores,
},
resetPasswords,
@@ -102,6 +107,7 @@ async function main(): Promise<void> {
rol: 'admin',
asignacion: null,
empleadoId: null,
mondayUserId: null,
passwordHash: hashAdmin,
},
resetPasswords,