From e46601369720d72cb384c95191741eb6b3223800 Mon Sep 17 00:00:00 2001 From: Consult AS Technology Date: Sun, 6 Sep 2026 19:04:44 +0000 Subject: [PATCH] fix(mi-dia): apartados por vencer solo propios + eliminar duplicado leads/oportunidades MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- api-gateway/src/services/mi-dia.service.test.ts | 2 +- api-gateway/src/services/mi-dia.service.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/api-gateway/src/services/mi-dia.service.test.ts b/api-gateway/src/services/mi-dia.service.test.ts index cd68061..e403ff7 100644 --- a/api-gateway/src/services/mi-dia.service.test.ts +++ b/api-gateway/src/services/mi-dia.service.test.ts @@ -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 () => { diff --git a/api-gateway/src/services/mi-dia.service.ts b/api-gateway/src/services/mi-dia.service.ts index 9920f05..95a54ed 100644 --- a/api-gateway/src/services/mi-dia.service.ts +++ b/api-gateway/src/services/mi-dia.service.ts @@ -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 &&