refactors

This commit is contained in:
Diego Mireles
2026-05-23 00:08:28 -06:00
parent 39bd572955
commit 53c345d984
2 changed files with 14 additions and 4 deletions

View File

@@ -3,6 +3,7 @@
export const NotificationType = {
ROUTE_START: "ROUTE_START",
TRUCK_PROXIMITY: "TRUCK_PROXIMITY",
TRUCK_ARRIVED: "TRUCK_ARRIVED",
ROUTE_COMPLETED: "ROUTE_COMPLETED",
DELAY: "DELAY",
MECHANICAL_FAILURE: "MECHANICAL_FAILURE",
@@ -25,6 +26,10 @@ export const notificationPayloads: Record<NotificationType, NotificationPayload>
title: "Camión Cercano",
body: "El camión está a menos de 15 minutos de tu domicilio. Es momento de sacar tus bolsas a la acera.",
},
TRUCK_ARRIVED: {
title: "¡El camión ya está aquí!",
body: "El camión recolector llegó a tu zona. Saca tus residuos a la acera ahora.",
},
ROUTE_COMPLETED: {
title: "Servicio Finalizado",
body: "El camión de tu sector ha concluido su jornada de recolección diaria.",
@@ -43,5 +48,6 @@ export const notificationPayloads: Record<NotificationType, NotificationPayload>
export const positionTriggers: Record<number, NotificationType> = {
2: NotificationType.ROUTE_START,
4: NotificationType.TRUCK_PROXIMITY,
5: NotificationType.TRUCK_ARRIVED,
8: NotificationType.ROUTE_COMPLETED,
};

View File

@@ -8,7 +8,9 @@ export interface EtaResult {
message: string;
}
const PROXIMITY_POSITION_ID = 4;
// El destino real (cuando el camión está en tu colonia) es positionId=5,
// donde speed=0. positionId=4 es el "punto de alerta de proximidad" (~12 min antes).
const ARRIVAL_POSITION_ID = 5;
const WINDOW_MARGIN_MIN = 5;
export class CalculateEtaUseCase {
@@ -28,11 +30,11 @@ export class CalculateEtaUseCase {
}
const target = route.positions.find(
(p) => p.positionId === PROXIMITY_POSITION_ID,
(p) => p.positionId === ARRIVAL_POSITION_ID,
);
if (!target) {
throw CustomError.internalServer(
`Route ${route.routeId} has no proximity position`,
`Route ${route.routeId} has no arrival position`,
);
}
@@ -50,6 +52,8 @@ export class CalculateEtaUseCase {
let message: string;
if (etaMinutes < 0) {
message = `El camión ya pasó por tu zona (aprox. ${arrivalWindow.from} - ${arrivalWindow.to}).`;
} else if (etaMinutes === 0) {
message = "El camión ya está en tu zona. Saca tus residuos ahora.";
} else if (etaMinutes <= 15) {
message = `Llega en aproximadamente ${etaMinutes} minutos.`;
} else {