refactors
This commit is contained in:
@@ -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,
|
||||
};
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user