@golemio/pid 4.0.3-dev.1988936235 → 4.0.3-dev.1993091012
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.d.ts +3 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js +100 -85
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js.map +1 -1
- package/package.json +1 -1
|
@@ -5,9 +5,11 @@ import { ValidToCalculator } from "../ValidToCalculator";
|
|
|
5
5
|
import { BasePositionsManager } from "../BasePositionsManager";
|
|
6
6
|
import { IScheduleDto } from "../../../../../../schema-definitions/vehicle-positions/redis/interfaces/IGtfsRunTripCacheDto";
|
|
7
7
|
import { GTFSRouteTypeEnum } from "../../../../../../helpers/RouteTypeEnums";
|
|
8
|
+
import { ILogger } from "@golemio/core/dist/helpers";
|
|
8
9
|
export declare class RegionalBusPositionsManager extends BasePositionsManager {
|
|
9
10
|
protected validToCalculator: ValidToCalculator;
|
|
10
|
-
|
|
11
|
+
private logger;
|
|
12
|
+
constructor(validToCalculator: ValidToCalculator, logger: ILogger);
|
|
11
13
|
/**
|
|
12
14
|
* Takes position one by one, set proper handler for type of position, and do the process of position
|
|
13
15
|
*/
|
|
@@ -47,10 +47,12 @@ const ValidToCalculator_1 = require("../ValidToCalculator");
|
|
|
47
47
|
const PositionStateDelayManager_1 = require("../state-position/PositionStateDelayManager");
|
|
48
48
|
const RegionalBusComputeDelayHelper_1 = require("./compute-positions/RegionalBusComputeDelayHelper");
|
|
49
49
|
const BasePositionsManager_1 = require("../BasePositionsManager");
|
|
50
|
+
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
|
|
50
51
|
let RegionalBusPositionsManager = exports.RegionalBusPositionsManager = RegionalBusPositionsManager_1 = class RegionalBusPositionsManager extends BasePositionsManager_1.BasePositionsManager {
|
|
51
|
-
constructor(validToCalculator) {
|
|
52
|
+
constructor(validToCalculator, logger) {
|
|
52
53
|
super({ useEndTimestamp: false, allowCancelState: false });
|
|
53
54
|
this.validToCalculator = validToCalculator;
|
|
55
|
+
this.logger = logger;
|
|
54
56
|
/**
|
|
55
57
|
* Takes position one by one, set proper handler for type of position, and do the process of position
|
|
56
58
|
*/
|
|
@@ -62,95 +64,107 @@ let RegionalBusPositionsManager = exports.RegionalBusPositionsManager = Regional
|
|
|
62
64
|
for (const position of positionsSource) {
|
|
63
65
|
let positionToUpdate = null;
|
|
64
66
|
// situations
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
origin_time: position.origin_time,
|
|
70
|
-
origin_timestamp: position.origin_timestamp,
|
|
71
|
-
scheduled_timestamp: position.scheduled_timestamp,
|
|
72
|
-
this_stop_id: position.this_stop_id,
|
|
73
|
-
tcp_event: position.tcp_event,
|
|
74
|
-
});
|
|
75
|
-
positionToUpdate = this.getEstimatedPoint(tripPositions.gtfsData, currentPosition, context, startDayTimestamp);
|
|
76
|
-
positionToUpdate = RegionalBusComputeDelayHelper_1.RegionalBusComputeDelayHelper.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
|
|
77
|
-
positionToUpdate.bearing = position.bearing ?? positionToUpdate.bearing;
|
|
78
|
-
break;
|
|
79
|
-
case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING:
|
|
80
|
-
// if there is no previous positions with tracking status, set position as before_track
|
|
81
|
-
if (this.isFreshNewVehicleInSystem(context, position, null)) {
|
|
82
|
-
const firstStopTime = tripPositions.gtfsData.stop_times[0];
|
|
83
|
-
positionToUpdate = this.defaultNonTrackingPositionToUpdate(position, firstStopTime, startDayTimestamp, false, 0);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
// if there is tracking 2 position with same origin_timestamp then this position is duplicate
|
|
87
|
-
const statePosition = this.detectDuplicatePosition(position, context.lastPositionOriginTimestamp, positionsSource);
|
|
88
|
-
const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
|
|
89
|
-
const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
|
|
90
|
-
const lastShapesAnchorPointTimeScheduled = DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(lastShapesAnchorPoint.time_scheduled_seconds, startDayTimestamp);
|
|
91
|
-
positionToUpdate = {
|
|
67
|
+
try {
|
|
68
|
+
switch (this.setPositionUpdateHandler(position)) {
|
|
69
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING:
|
|
70
|
+
const currentPosition = turf.point([position.lng, position.lat], {
|
|
92
71
|
id: position.id,
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
...(lastStopTime.stop_headsign && {
|
|
101
|
-
last_stop_headsign: lastStopTime.stop_headsign,
|
|
102
|
-
}),
|
|
103
|
-
};
|
|
104
|
-
// if state was changed in last 30 seconds, then it is AFTER_TRACK_DELAYED
|
|
105
|
-
// with delay computation (copied from delay at stop)
|
|
106
|
-
if (positionToUpdate.state_position === const_1.StatePositionEnum.AFTER_TRACK &&
|
|
107
|
-
PositionStateDelayManager_1.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
|
|
108
|
-
positionToUpdate.state_position = const_1.StatePositionEnum.AFTER_TRACK_DELAYED;
|
|
109
|
-
}
|
|
72
|
+
origin_time: position.origin_time,
|
|
73
|
+
origin_timestamp: position.origin_timestamp,
|
|
74
|
+
scheduled_timestamp: position.scheduled_timestamp,
|
|
75
|
+
this_stop_id: position.this_stop_id,
|
|
76
|
+
tcp_event: position.tcp_event,
|
|
77
|
+
});
|
|
78
|
+
positionToUpdate = this.getEstimatedPoint(tripPositions.gtfsData, currentPosition, context, startDayTimestamp);
|
|
110
79
|
positionToUpdate = RegionalBusComputeDelayHelper_1.RegionalBusComputeDelayHelper.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
|
|
111
|
-
|
|
112
|
-
|
|
80
|
+
positionToUpdate.bearing = position.bearing ?? positionToUpdate.bearing;
|
|
81
|
+
break;
|
|
82
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING:
|
|
83
|
+
// if there is no previous positions with tracking status, set position as before_track
|
|
84
|
+
if (this.isFreshNewVehicleInSystem(context, position, null)) {
|
|
85
|
+
const firstStopTime = tripPositions.gtfsData.stop_times[0];
|
|
86
|
+
positionToUpdate = this.defaultNonTrackingPositionToUpdate(position, firstStopTime, startDayTimestamp, false, 0);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
// if there is tracking 2 position with same origin_timestamp then this position is duplicate
|
|
90
|
+
const statePosition = this.detectDuplicatePosition(position, context.lastPositionOriginTimestamp, positionsSource);
|
|
91
|
+
const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
|
|
92
|
+
const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
|
|
93
|
+
const lastShapesAnchorPointTimeScheduled = DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(lastShapesAnchorPoint.time_scheduled_seconds, startDayTimestamp);
|
|
94
|
+
positionToUpdate = {
|
|
95
|
+
id: position.id,
|
|
96
|
+
last_stop_arrival_time: lastShapesAnchorPointTimeScheduled,
|
|
97
|
+
last_stop_departure_time: lastShapesAnchorPointTimeScheduled,
|
|
98
|
+
last_stop_id: lastStopTime.stop_id,
|
|
99
|
+
last_stop_sequence: lastShapesAnchorPoint.last_stop_sequence,
|
|
100
|
+
shape_dist_traveled: lastShapesAnchorPoint.shape_dist_traveled,
|
|
101
|
+
state_position: statePosition,
|
|
102
|
+
state_process: const_1.StateProcessEnum.PROCESSED,
|
|
103
|
+
...(lastStopTime.stop_headsign && {
|
|
104
|
+
last_stop_headsign: lastStopTime.stop_headsign,
|
|
105
|
+
}),
|
|
106
|
+
};
|
|
107
|
+
// if state was changed in last 30 seconds, then it is AFTER_TRACK_DELAYED
|
|
108
|
+
// with delay computation (copied from delay at stop)
|
|
109
|
+
if (positionToUpdate.state_position === const_1.StatePositionEnum.AFTER_TRACK &&
|
|
110
|
+
PositionStateDelayManager_1.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
|
|
111
|
+
positionToUpdate.state_position = const_1.StatePositionEnum.AFTER_TRACK_DELAYED;
|
|
112
|
+
}
|
|
113
|
+
positionToUpdate = RegionalBusComputeDelayHelper_1.RegionalBusComputeDelayHelper.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
|
|
114
|
+
if (positionToUpdate.state_position === const_1.StatePositionEnum.AFTER_TRACK_DELAYED) {
|
|
115
|
+
positionToUpdate.delay = positionToUpdate.delay_stop_arrival ?? null;
|
|
116
|
+
}
|
|
113
117
|
}
|
|
118
|
+
break;
|
|
119
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING:
|
|
120
|
+
default:
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
// if not null push to update
|
|
124
|
+
if (positionToUpdate) {
|
|
125
|
+
positionToUpdate.is_tracked ??= position.is_tracked;
|
|
126
|
+
positionToUpdate.valid_to = this.validToCalculator.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp);
|
|
127
|
+
// backtracking detection so we can later invalidate old positions
|
|
128
|
+
if (!isBacktrackingDetected && positionToUpdate.last_stop_sequence && context.lastStopSequence) {
|
|
129
|
+
isBacktrackingDetected = positionToUpdate.last_stop_sequence < context.lastStopSequence;
|
|
114
130
|
}
|
|
115
|
-
|
|
116
|
-
case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING:
|
|
117
|
-
default:
|
|
118
|
-
break;
|
|
119
|
-
}
|
|
120
|
-
// if not null push to update
|
|
121
|
-
if (positionToUpdate) {
|
|
122
|
-
positionToUpdate.is_tracked ??= position.is_tracked;
|
|
123
|
-
positionToUpdate.valid_to = this.validToCalculator.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp);
|
|
124
|
-
// backtracking detection so we can later invalidate old positions
|
|
125
|
-
if (!isBacktrackingDetected && positionToUpdate.last_stop_sequence && context.lastStopSequence) {
|
|
126
|
-
isBacktrackingDetected = positionToUpdate.last_stop_sequence < context.lastStopSequence;
|
|
131
|
+
computedPositions.push(positionToUpdate);
|
|
127
132
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (this.disruptAtStopStreak(position, positionToUpdate)) {
|
|
139
|
-
context.atStopStreak.stop_sequence = null;
|
|
140
|
-
}
|
|
141
|
-
// duplicated position should not be considered at all
|
|
142
|
-
if (positionToUpdate && positionToUpdate.state_position !== const_1.StatePositionEnum.DUPLICATE) {
|
|
143
|
-
context.lastPositionId = position.id;
|
|
144
|
-
context.lastPositionLat = position.lat;
|
|
145
|
-
context.lastPositionLng = position.lng;
|
|
146
|
-
context.lastPositionCanceled = position.is_canceled;
|
|
147
|
-
context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
|
|
148
|
-
context.lastStopSequence = positionToUpdate.last_stop_sequence ?? context.lastStopSequence ?? null;
|
|
149
|
-
if (context.lastPositionState !== positionToUpdate.state_position) {
|
|
150
|
-
context.lastPositionState = positionToUpdate.state_position;
|
|
151
|
-
context.lastPositionStateChange = new Date().toISOString();
|
|
133
|
+
// set last known BEFORE_TRACK_DELAYED position
|
|
134
|
+
// set last position tracking (only for at_stop and on_track)
|
|
135
|
+
this.setLastPositionTracking(position, context, positionToUpdate);
|
|
136
|
+
// set new first position at stop streak if this stop seqence is set and it is not same as before
|
|
137
|
+
this.setFirstUniqueStopSequence(positionToUpdate, context, position);
|
|
138
|
+
// IF currently valid updated position / position was processed before
|
|
139
|
+
// and it is NOT AT_STOP
|
|
140
|
+
// then disrupt atStopStreak
|
|
141
|
+
if (this.disruptAtStopStreak(position, positionToUpdate)) {
|
|
142
|
+
context.atStopStreak.stop_sequence = null;
|
|
152
143
|
}
|
|
153
|
-
|
|
144
|
+
// duplicated position should not be considered at all
|
|
145
|
+
if (positionToUpdate && positionToUpdate.state_position !== const_1.StatePositionEnum.DUPLICATE) {
|
|
146
|
+
context.lastPositionId = position.id;
|
|
147
|
+
context.lastPositionLat = position.lat;
|
|
148
|
+
context.lastPositionLng = position.lng;
|
|
149
|
+
context.lastPositionCanceled = position.is_canceled;
|
|
150
|
+
context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
|
|
151
|
+
context.lastStopSequence = positionToUpdate.last_stop_sequence ?? context.lastStopSequence ?? null;
|
|
152
|
+
if (context.lastPositionState !== positionToUpdate.state_position) {
|
|
153
|
+
context.lastPositionState = positionToUpdate.state_position;
|
|
154
|
+
context.lastPositionStateChange = new Date().toISOString();
|
|
155
|
+
}
|
|
156
|
+
RegionalBusComputeDelayHelper_1.RegionalBusComputeDelayHelper.updateContext(context, positionToUpdate, position, gtfsRouteType);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
this.logger.error({
|
|
161
|
+
error,
|
|
162
|
+
context,
|
|
163
|
+
positionId: position.id,
|
|
164
|
+
lat: position.lat,
|
|
165
|
+
lng: position.lng,
|
|
166
|
+
}, `${this.constructor.name}: Error while processing position`);
|
|
167
|
+
continue;
|
|
154
168
|
}
|
|
155
169
|
}
|
|
156
170
|
return {
|
|
@@ -261,6 +275,7 @@ let RegionalBusPositionsManager = exports.RegionalBusPositionsManager = Regional
|
|
|
261
275
|
exports.RegionalBusPositionsManager = RegionalBusPositionsManager = RegionalBusPositionsManager_1 = __decorate([
|
|
262
276
|
(0, tsyringe_1.injectable)(),
|
|
263
277
|
__param(0, (0, tsyringe_1.inject)(VPContainerToken_1.VPContainerToken.ValidToCalculator)),
|
|
264
|
-
|
|
278
|
+
__param(1, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
|
|
279
|
+
__metadata("design:paramtypes", [ValidToCalculator_1.ValidToCalculator, Object])
|
|
265
280
|
], RegionalBusPositionsManager);
|
|
266
281
|
//# sourceMappingURL=RegionalBusPositionsManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegionalBusPositionsManager.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2EAAuD;AACvD,uEAA8E;AAG9E,iEAAwE;AACxE,iDAAmC;AAEnC,mDAAgE;AAShE,gEAA6D;AAC7D,4DAAyD;AACzD,2FAAwF;AACxF,qGAAkG;AAClG,kEAA+D;
|
|
1
|
+
{"version":3,"file":"RegionalBusPositionsManager.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.ts"],"names":[],"mappings":"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"}
|