fix(mi-dia): apartados por vencer solo propios + eliminar duplicado leads/oportunidades
1. apartadosPorVencer: filtrado por esMio — cada vendedor solo ve sus propios apartados por vencer, no los de todos. 2. misLeads: excluye items que ya estan en misOportunidades — evita que el mismo item aparezca en ambas pestanas (leads + oportunidades). 3. 630 tests verdes.
This commit is contained in:
@@ -315,7 +315,7 @@ describe('resumenMiDia (GET /api/mi-dia/resumen)', () => {
|
||||
expect(r.misActividadesHoy).toEqual([])
|
||||
expect(r.conteos).toEqual({ leadsNuevosSemana: 0, actividadesAbiertas: 0 })
|
||||
// Los apartados por vencer son del pipeline completo: sí se muestran
|
||||
expect(r.apartadosPorVencer).toHaveLength(1)
|
||||
expect(r.apartadosPorVencer).toHaveLength(0) // solo apartados propios
|
||||
})
|
||||
|
||||
it('conteos: leads nuevos de los últimos 7 días suman AMBOS tableros (incluye terminales recientes)', async () => {
|
||||
|
||||
@@ -282,7 +282,11 @@ export async function resumenMiDia(
|
||||
fuente: 'oportunidad',
|
||||
ultimoCambio: null,
|
||||
}))
|
||||
const misLeads: LeadMiDia[] = [...misLeadsLeads, ...misLeadsOportunidades].sort((a, b) =>
|
||||
// Excluir de "Mis leads" los que ya aparecen en "Mis oportunidades"
|
||||
// para no mostrar el mismo item en dos pestañas
|
||||
const idsEnOportunidades = new Set(misLeadsOportunidades.map((o) => o.id))
|
||||
const misLeadsLeadsSinDuplicados = misLeadsLeads.filter((l) => !idsEnOportunidades.has(l.id))
|
||||
const misLeads: LeadMiDia[] = [...misLeadsLeadsSinDuplicados, ...misLeadsOportunidades].sort((a, b) =>
|
||||
b.updatedAt.localeCompare(a.updatedAt),
|
||||
)
|
||||
|
||||
@@ -437,6 +441,7 @@ export async function resumenMiDia(
|
||||
const apartadosPorVencer: ApartadoPorVencer[] = apartados
|
||||
.filter(
|
||||
(a) =>
|
||||
esMio(a.vendedorIds, a.id) &&
|
||||
a.fechaLimite !== '' &&
|
||||
a.fechaLimite >= hoy &&
|
||||
a.fechaLimite <= en7Dias &&
|
||||
|
||||
Reference in New Issue
Block a user