refactors
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
export const NotificationType = {
|
export const NotificationType = {
|
||||||
ROUTE_START: "ROUTE_START",
|
ROUTE_START: "ROUTE_START",
|
||||||
TRUCK_PROXIMITY: "TRUCK_PROXIMITY",
|
TRUCK_PROXIMITY: "TRUCK_PROXIMITY",
|
||||||
|
TRUCK_ARRIVED: "TRUCK_ARRIVED",
|
||||||
ROUTE_COMPLETED: "ROUTE_COMPLETED",
|
ROUTE_COMPLETED: "ROUTE_COMPLETED",
|
||||||
DELAY: "DELAY",
|
DELAY: "DELAY",
|
||||||
MECHANICAL_FAILURE: "MECHANICAL_FAILURE",
|
MECHANICAL_FAILURE: "MECHANICAL_FAILURE",
|
||||||
@@ -25,6 +26,10 @@ export const notificationPayloads: Record<NotificationType, NotificationPayload>
|
|||||||
title: "Camión Cercano",
|
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.",
|
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: {
|
ROUTE_COMPLETED: {
|
||||||
title: "Servicio Finalizado",
|
title: "Servicio Finalizado",
|
||||||
body: "El camión de tu sector ha concluido su jornada de recolección diaria.",
|
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> = {
|
export const positionTriggers: Record<number, NotificationType> = {
|
||||||
2: NotificationType.ROUTE_START,
|
2: NotificationType.ROUTE_START,
|
||||||
4: NotificationType.TRUCK_PROXIMITY,
|
4: NotificationType.TRUCK_PROXIMITY,
|
||||||
|
5: NotificationType.TRUCK_ARRIVED,
|
||||||
8: NotificationType.ROUTE_COMPLETED,
|
8: NotificationType.ROUTE_COMPLETED,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -8,7 +8,9 @@ export interface EtaResult {
|
|||||||
message: string;
|
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;
|
const WINDOW_MARGIN_MIN = 5;
|
||||||
|
|
||||||
export class CalculateEtaUseCase {
|
export class CalculateEtaUseCase {
|
||||||
@@ -28,11 +30,11 @@ export class CalculateEtaUseCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const target = route.positions.find(
|
const target = route.positions.find(
|
||||||
(p) => p.positionId === PROXIMITY_POSITION_ID,
|
(p) => p.positionId === ARRIVAL_POSITION_ID,
|
||||||
);
|
);
|
||||||
if (!target) {
|
if (!target) {
|
||||||
throw CustomError.internalServer(
|
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;
|
let message: string;
|
||||||
if (etaMinutes < 0) {
|
if (etaMinutes < 0) {
|
||||||
message = `El camión ya pasó por tu zona (aprox. ${arrivalWindow.from} - ${arrivalWindow.to}).`;
|
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) {
|
} else if (etaMinutes <= 15) {
|
||||||
message = `Llega en aproximadamente ${etaMinutes} minutos.`;
|
message = `Llega en aproximadamente ${etaMinutes} minutos.`;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user