@golemio/pid 3.17.2-dev.1964072627 → 3.17.2-dev.1969248519
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/data-access/PositionsRepository.js +2 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/PositionsRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.d.ts +90 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.js +316 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.d.ts +10 -61
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.js +67 -280
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.d.ts +10 -49
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js +16 -229
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js.map +1 -1
- package/package.json +1 -1
|
@@ -37,45 +37,28 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
37
37
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
38
38
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
39
39
|
};
|
|
40
|
+
var PositionsManager_1;
|
|
40
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
42
|
exports.PositionsManager = void 0;
|
|
42
43
|
const DateTimeUtils_1 = require("../../../../../helpers/DateTimeUtils");
|
|
43
44
|
const VPContainerToken_1 = require("../../../ioc/VPContainerToken");
|
|
44
|
-
const moment_timezone_1 = __importDefault(require("@golemio/core/dist/shared/moment-timezone"));
|
|
45
45
|
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
46
46
|
const turf = __importStar(require("@turf/turf"));
|
|
47
47
|
const const_1 = require("../../../../../const");
|
|
48
48
|
const RouteTypeEnums_1 = require("../../../../../helpers/RouteTypeEnums");
|
|
49
|
+
const BasePositionsManager_1 = require("./BasePositionsManager");
|
|
49
50
|
const DPPUtils_1 = __importDefault(require("./DPPUtils"));
|
|
50
51
|
const PositionHandlerEnum_1 = require("./PositionHandlerEnum");
|
|
51
52
|
const ValidToCalculator_1 = require("./ValidToCalculator");
|
|
52
|
-
const AnchorPointSegmenter_1 = require("./anchor-points/AnchorPointSegmenter");
|
|
53
53
|
const ComputeDelayHelper_1 = __importDefault(require("./compute-positions/ComputeDelayHelper"));
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
const ONE_SECOND_IN_MILLIS = 1000;
|
|
57
|
-
let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
54
|
+
const PositionStateDelayManager = __importStar(require("./state-position/PositionStateDelayManager"));
|
|
55
|
+
let PositionsManager = exports.PositionsManager = PositionsManager_1 = class PositionsManager extends BasePositionsManager_1.BasePositionsManager {
|
|
58
56
|
constructor(validToCalculator) {
|
|
57
|
+
super({ useEndTimestamp: true, allowCancelState: true });
|
|
59
58
|
this.validToCalculator = validToCalculator;
|
|
60
|
-
/**
|
|
61
|
-
* Compute positions and return computed positions
|
|
62
|
-
*
|
|
63
|
-
* @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
|
|
64
|
-
* @returns {IProcessedPositions} - Returns computed/updated positions
|
|
65
|
-
*/
|
|
66
|
-
this.computePositions = (tripPositions, schedule) => {
|
|
67
|
-
const startTimestamp = tripPositions.start_timestamp.getTime();
|
|
68
|
-
const startDayTimestamp = this.getStartDayTimestamp(startTimestamp, tripPositions.gtfsData.shapes_anchor_points[0].time_scheduled_seconds);
|
|
69
|
-
const gtfsRouteType = tripPositions.gtfs_route_type;
|
|
70
|
-
const context = this.getCurrentContext(tripPositions);
|
|
71
|
-
const computedPositions = [];
|
|
72
|
-
const endTimestamp = tripPositions.end_timestamp;
|
|
73
|
-
return this.updatePositions({ tripPositions, startTimestamp, endTimestamp, startDayTimestamp, context, computedPositions, gtfsRouteType }, schedule);
|
|
74
|
-
};
|
|
75
59
|
/**
|
|
76
60
|
* Takes position one by one, set proper handler for type of position, and do the process of position
|
|
77
61
|
*
|
|
78
|
-
* @param {number} i - Iteration
|
|
79
62
|
* @param {IUpdatePositionsIteratorOptions} options - Initial options
|
|
80
63
|
* @param {number} cb - Callback function of iterator
|
|
81
64
|
* @returns {IProcessedPositions} - Returns computed/updated positions
|
|
@@ -83,12 +66,14 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
83
66
|
this.updatePositions = (options, schedule) => {
|
|
84
67
|
const { tripPositions, startDayTimestamp, startTimestamp, endTimestamp, context, computedPositions, gtfsRouteType } = options;
|
|
85
68
|
let isBacktrackingDetected = false;
|
|
86
|
-
|
|
87
|
-
|
|
69
|
+
let lastPositionStaysCanceled = false;
|
|
70
|
+
const positionsSource = tripPositions.positions;
|
|
71
|
+
positionsSource.sort(PositionsManager_1.sortByOriginTimestamp);
|
|
72
|
+
for (const position of positionsSource) {
|
|
88
73
|
let positionToUpdate = null;
|
|
89
74
|
// situations
|
|
90
75
|
switch (this.setPositionUpdateHandler(position)) {
|
|
91
|
-
case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING:
|
|
76
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.TRACKING: {
|
|
92
77
|
const currentPosition = turf.point([position.lng, position.lat], {
|
|
93
78
|
id: position.id,
|
|
94
79
|
origin_time: position.origin_time,
|
|
@@ -103,48 +88,26 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
103
88
|
}
|
|
104
89
|
positionToUpdate.bearing = position.bearing ?? positionToUpdate.bearing;
|
|
105
90
|
break;
|
|
106
|
-
|
|
91
|
+
}
|
|
92
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING: {
|
|
107
93
|
// if there is no previous positions with tracking status, set position as before_track
|
|
108
94
|
const firstShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[0];
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
position.scheduled_timestamp === null ||
|
|
112
|
-
endTimestamp > position.scheduled_timestamp)) {
|
|
95
|
+
const invisibleByDpp = DPPUtils_1.default.isInvisible(tripPositions.agency_name_scheduled, position.origin_timestamp, startTimestamp, [position.lng, position.lat], firstShapesAnchorPoint.coordinates, schedule, tripPositions.gtfs_trip_id, context.lastPositionTracking, position.is_tracked);
|
|
96
|
+
if (this.isFreshNewVehicleInSystem(context, position, endTimestamp)) {
|
|
113
97
|
const firstStopTime = tripPositions.gtfsData.stop_times[0];
|
|
114
98
|
// if there is propagated delay we can use it for new position
|
|
115
99
|
const lastPositionDelayed = context.lastPositionBeforeTrackDelayed;
|
|
116
100
|
// if there is no delay to duplicate and DPP trip is far from start then invisible
|
|
117
|
-
const setAsInvisible = !lastPositionDelayed &&
|
|
118
|
-
|
|
119
|
-
positionToUpdate = {
|
|
120
|
-
id: position.id,
|
|
121
|
-
next_stop_arrival_time: DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(firstStopTime.arrival_time_seconds, startDayTimestamp),
|
|
122
|
-
next_stop_departure_time: DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(firstStopTime.departure_time_seconds, startDayTimestamp),
|
|
123
|
-
next_stop_id: firstStopTime.stop_id,
|
|
124
|
-
next_stop_sequence: firstStopTime.stop_sequence,
|
|
125
|
-
next_stop_name: firstStopTime.stop.stop_name,
|
|
126
|
-
shape_dist_traveled: firstStopTime.shape_dist_traveled,
|
|
127
|
-
state_position: setAsInvisible ? const_1.StatePositionEnum.INVISIBLE : const_1.StatePositionEnum.BEFORE_TRACK,
|
|
128
|
-
state_process: const_1.StateProcessEnum.PROCESSED,
|
|
129
|
-
...(firstStopTime.stop_headsign && {
|
|
130
|
-
last_stop_headsign: firstStopTime.stop_headsign,
|
|
131
|
-
}),
|
|
132
|
-
};
|
|
133
|
-
if (positionToUpdate.state_position === const_1.StatePositionEnum.BEFORE_TRACK) {
|
|
134
|
-
positionToUpdate.delay = this.getDelayBeforeTrack(lastPositionDelayed?.delay ?? position.delay, firstStopTime.departure_time_seconds, position.origin_timestamp.getTime(), startDayTimestamp);
|
|
135
|
-
}
|
|
101
|
+
const setAsInvisible = !lastPositionDelayed && invisibleByDpp;
|
|
102
|
+
positionToUpdate = this.defaultNonTrackingPositionToUpdate(position, firstStopTime, startDayTimestamp, setAsInvisible, lastPositionDelayed);
|
|
136
103
|
}
|
|
137
104
|
else {
|
|
138
105
|
// if there is tracking 2 position with same origin_timestamp then this position is duplicate
|
|
139
|
-
const statePosition =
|
|
140
|
-
tripPositions.positions.findIndex((positionItem) => positionItem.origin_timestamp.getTime() === position.origin_timestamp.getTime() &&
|
|
141
|
-
positionItem.is_tracked) >= 0
|
|
142
|
-
? const_1.StatePositionEnum.DUPLICATE
|
|
143
|
-
: const_1.StatePositionEnum.AFTER_TRACK;
|
|
106
|
+
const statePosition = this.detectDuplicatePosition(position, context.lastPositionOriginTimestamp, positionsSource);
|
|
144
107
|
const lastShapesAnchorPoint = tripPositions.gtfsData.shapes_anchor_points[tripPositions.gtfsData.shapes_anchor_points.length - 1];
|
|
145
108
|
const lastStopTime = tripPositions.gtfsData.stop_times[tripPositions.gtfsData.stop_times.length - 1];
|
|
146
109
|
// set as invisible if there are some AFTER_TRACK before
|
|
147
|
-
const setAsInvisible =
|
|
110
|
+
const setAsInvisible = invisibleByDpp && statePosition === const_1.StatePositionEnum.AFTER_TRACK;
|
|
148
111
|
const lastShapesAnchorPointTimeScheduled = DateTimeUtils_1.DateTimeUtils.getStopDateTimeForDayStart(lastShapesAnchorPoint.time_scheduled_seconds, startDayTimestamp);
|
|
149
112
|
positionToUpdate = {
|
|
150
113
|
id: position.id,
|
|
@@ -163,7 +126,7 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
163
126
|
// if state was changed in last 30 seconds, then it is AFTER_TRACK_DELAYED
|
|
164
127
|
// with delay computation (copied from delay at stop)
|
|
165
128
|
if (positionToUpdate.state_position === const_1.StatePositionEnum.AFTER_TRACK &&
|
|
166
|
-
|
|
129
|
+
PositionStateDelayManager.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
|
|
167
130
|
positionToUpdate.state_position = const_1.StatePositionEnum.AFTER_TRACK_DELAYED;
|
|
168
131
|
}
|
|
169
132
|
positionToUpdate = ComputeDelayHelper_1.default.updatePositionToUpdate(context, positionToUpdate, position, gtfsRouteType);
|
|
@@ -172,7 +135,8 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
172
135
|
}
|
|
173
136
|
}
|
|
174
137
|
break;
|
|
175
|
-
|
|
138
|
+
}
|
|
139
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.CANCELED: {
|
|
176
140
|
positionToUpdate = {
|
|
177
141
|
id: position.id,
|
|
178
142
|
lat: position.lat ?? context.lastPositionLat ?? null,
|
|
@@ -180,70 +144,35 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
180
144
|
state_position: const_1.StatePositionEnum.CANCELED,
|
|
181
145
|
state_process: const_1.StateProcessEnum.PROCESSED,
|
|
182
146
|
};
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
// where it is used to indicate a canceled trip
|
|
186
|
-
positionToUpdate.lat = 0;
|
|
187
|
-
positionToUpdate.lng = 0;
|
|
188
|
-
}
|
|
147
|
+
positionToUpdate.lat = positionToUpdate.lat || 0;
|
|
148
|
+
positionToUpdate.lng = positionToUpdate.lng || 0;
|
|
189
149
|
break;
|
|
190
|
-
|
|
150
|
+
}
|
|
151
|
+
case PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING: {
|
|
191
152
|
break;
|
|
192
|
-
|
|
153
|
+
}
|
|
154
|
+
default: {
|
|
193
155
|
break;
|
|
194
|
-
}
|
|
195
|
-
// if not null push to update
|
|
196
|
-
if (positionToUpdate) {
|
|
197
|
-
positionToUpdate.is_tracked ??= position.is_tracked;
|
|
198
|
-
positionToUpdate.valid_to = this.validToCalculator.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp);
|
|
199
|
-
// backtracking detection so we can later invalidate old positions
|
|
200
|
-
if (!isBacktrackingDetected && positionToUpdate.last_stop_sequence && context.lastStopSequence) {
|
|
201
|
-
isBacktrackingDetected = positionToUpdate.last_stop_sequence < context.lastStopSequence;
|
|
202
156
|
}
|
|
203
|
-
computedPositions.push(positionToUpdate);
|
|
204
|
-
}
|
|
205
|
-
else {
|
|
206
|
-
computedPositions.push(null);
|
|
207
|
-
}
|
|
208
|
-
// set last known BEFORE_TRACK_DELAYED position
|
|
209
|
-
if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
|
|
210
|
-
context.lastPositionBeforeTrackDelayed = {
|
|
211
|
-
delay: positionToUpdate?.delay ?? position.delay,
|
|
212
|
-
origin_timestamp: positionToUpdate?.origin_timestamp ?? position.origin_timestamp,
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
// set last position tracking (only for at_stop and on_track)
|
|
216
|
-
if (positionToUpdate?.state_position === const_1.StatePositionEnum.AT_STOP ||
|
|
217
|
-
positionToUpdate?.state_position === const_1.StatePositionEnum.ON_TRACK ||
|
|
218
|
-
position.state_position === const_1.StatePositionEnum.AT_STOP ||
|
|
219
|
-
position.state_position === const_1.StatePositionEnum.ON_TRACK) {
|
|
220
|
-
context.lastPositionTracking = turf.point([position.lng, position.lat], {
|
|
221
|
-
...position,
|
|
222
|
-
...positionToUpdate,
|
|
223
|
-
});
|
|
224
157
|
}
|
|
158
|
+
const detection = this.detectBacktracking(position, context, positionToUpdate, gtfsRouteType, tripPositions, startTimestamp, isBacktrackingDetected);
|
|
159
|
+
positionToUpdate = detection.positionToUpdate;
|
|
160
|
+
isBacktrackingDetected = detection.isBacktrackingDetected;
|
|
161
|
+
computedPositions.push(positionToUpdate);
|
|
162
|
+
// sets last known BEFORE_TRACK_DELAYED position
|
|
163
|
+
// sets last position tracking (only for at_stop and on_track)
|
|
164
|
+
this.setLastPositionTracking(position, context, positionToUpdate);
|
|
225
165
|
// set new first position at stop streak if this stop seqence is set and it is not same as before
|
|
226
|
-
|
|
227
|
-
? positionToUpdate.this_stop_sequence &&
|
|
228
|
-
context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
|
|
229
|
-
: position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence) {
|
|
230
|
-
context.atStopStreak.stop_sequence = positionToUpdate
|
|
231
|
-
? positionToUpdate.this_stop_sequence
|
|
232
|
-
: position.this_stop_sequence;
|
|
233
|
-
context.atStopStreak.firstPositionTimestamp = position.origin_timestamp.getTime();
|
|
234
|
-
context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
|
|
235
|
-
}
|
|
166
|
+
this.setFirstUniqueStopSequence(positionToUpdate, context, position);
|
|
236
167
|
// IF currently valid updated position / position was processed before
|
|
237
168
|
// and it is NOT AT_STOP
|
|
238
169
|
// then disrupt atStopStreak
|
|
239
|
-
if (positionToUpdate
|
|
240
|
-
positionToUpdate.state_position !== const_1.StatePositionEnum.MISMATCHED &&
|
|
241
|
-
!positionToUpdate.this_stop_sequence) {
|
|
242
|
-
context.atStopStreak.stop_sequence = null;
|
|
243
|
-
}
|
|
244
|
-
else if (!positionToUpdate && !position.this_stop_sequence) {
|
|
170
|
+
if (this.disruptAtStopStreak(position, positionToUpdate)) {
|
|
245
171
|
context.atStopStreak.stop_sequence = null;
|
|
246
172
|
}
|
|
173
|
+
// based on the fact that current position has some tcp_event
|
|
174
|
+
// allows the canceled boolean to be changed, otherwise use the prev.value
|
|
175
|
+
lastPositionStaysCanceled = this.hasTcpEventOrCancel(position) ?? lastPositionStaysCanceled;
|
|
247
176
|
// duplicated or mismatched position should not be considered at all
|
|
248
177
|
if (positionToUpdate &&
|
|
249
178
|
positionToUpdate.state_position !== const_1.StatePositionEnum.DUPLICATE &&
|
|
@@ -252,7 +181,7 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
252
181
|
context.lastPositionId = position.id;
|
|
253
182
|
context.lastPositionLat = position.lat;
|
|
254
183
|
context.lastPositionLng = position.lng;
|
|
255
|
-
context.lastPositionCanceled = position.is_canceled;
|
|
184
|
+
context.lastPositionCanceled = lastPositionStaysCanceled || position.is_canceled;
|
|
256
185
|
context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
|
|
257
186
|
context.lastStopSequence = positionToUpdate.last_stop_sequence ?? context.lastStopSequence ?? null;
|
|
258
187
|
if (context.lastPositionState !== positionToUpdate.state_position) {
|
|
@@ -268,97 +197,6 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
268
197
|
isBacktrackingDetected: isBacktrackingDetected,
|
|
269
198
|
};
|
|
270
199
|
};
|
|
271
|
-
this.getCurrentContext = (tripPositions) => {
|
|
272
|
-
const context = tripPositions.last_position_context ?? {
|
|
273
|
-
atStopStreak: {
|
|
274
|
-
stop_sequence: null,
|
|
275
|
-
firstPositionTimestamp: null,
|
|
276
|
-
firstPositionDelay: null,
|
|
277
|
-
},
|
|
278
|
-
lastPositionLastStop: {
|
|
279
|
-
id: null,
|
|
280
|
-
sequence: null,
|
|
281
|
-
arrival_time: null,
|
|
282
|
-
arrival_delay: null,
|
|
283
|
-
departure_time: null,
|
|
284
|
-
departure_delay: null,
|
|
285
|
-
},
|
|
286
|
-
lastPositionDelay: null,
|
|
287
|
-
lastPositionId: null,
|
|
288
|
-
lastPositionLat: null,
|
|
289
|
-
lastPositionLng: null,
|
|
290
|
-
lastPositionOriginTimestamp: null,
|
|
291
|
-
lastPositionTracking: null,
|
|
292
|
-
lastPositionCanceled: null,
|
|
293
|
-
lastPositionBeforeTrackDelayed: null,
|
|
294
|
-
lastPositionState: null,
|
|
295
|
-
lastStopSequence: null,
|
|
296
|
-
lastPositionStateChange: null,
|
|
297
|
-
tripId: tripPositions.id,
|
|
298
|
-
};
|
|
299
|
-
return context;
|
|
300
|
-
};
|
|
301
|
-
/**
|
|
302
|
-
* Decide how to process input position data
|
|
303
|
-
*
|
|
304
|
-
* @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
|
|
305
|
-
* @returns {PositionHandlerEnum} - Returns action handler enum
|
|
306
|
-
*/
|
|
307
|
-
this.setPositionUpdateHandler = (position) => {
|
|
308
|
-
if (position.state_process === const_1.StateProcessEnum.PROCESSED || position.state_process === const_1.StateProcessEnum.INVALIDATED)
|
|
309
|
-
return PositionHandlerEnum_1.PositionHandlerEnum.DO_NOTHING;
|
|
310
|
-
else if (position.is_canceled)
|
|
311
|
-
return PositionHandlerEnum_1.PositionHandlerEnum.CANCELED;
|
|
312
|
-
else if (position.is_tracked)
|
|
313
|
-
return PositionHandlerEnum_1.PositionHandlerEnum.TRACKING;
|
|
314
|
-
else
|
|
315
|
-
return PositionHandlerEnum_1.PositionHandlerEnum.NOT_TRACKING;
|
|
316
|
-
};
|
|
317
|
-
/**
|
|
318
|
-
* Returns estimate of point on shape, where the trip should be with appropriate delay
|
|
319
|
-
*
|
|
320
|
-
* @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
|
|
321
|
-
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
|
|
322
|
-
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
323
|
-
* @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
|
|
324
|
-
* @returns {IPositionToUpdate} - Position object to update
|
|
325
|
-
*/
|
|
326
|
-
this.getEstimatedPoint = (tripGtfsData, currentPosition, context, startDayTimestamp, gtfsRouteType) => {
|
|
327
|
-
const anchorPointSegmenter = new AnchorPointSegmenter_1.AnchorPointSegmenter(tripGtfsData.shapes_anchor_points, currentPosition);
|
|
328
|
-
const defaultStatePosition = const_1.StatePositionEnum.OFF_TRACK;
|
|
329
|
-
// Initial value
|
|
330
|
-
let estimatedPoint = {
|
|
331
|
-
id: currentPosition.properties.id,
|
|
332
|
-
state_position: defaultStatePosition,
|
|
333
|
-
state_process: const_1.StateProcessEnum.PROCESSED,
|
|
334
|
-
tcp_event: currentPosition.properties.tcp_event,
|
|
335
|
-
valid_to: this.validToCalculator.getDefaultValidToAttribute(currentPosition.properties.origin_timestamp),
|
|
336
|
-
...(context &&
|
|
337
|
-
context.lastPositionTracking?.properties.last_stop_sequence && {
|
|
338
|
-
shape_dist_traveled: context.lastPositionTracking?.properties.shape_dist_traveled,
|
|
339
|
-
last_stop_arrival_time: context.lastPositionTracking?.properties.last_stop_arrival_time
|
|
340
|
-
? new Date(context.lastPositionTracking?.properties.last_stop_arrival_time)
|
|
341
|
-
: undefined,
|
|
342
|
-
last_stop_departure_time: context.lastPositionTracking?.properties.last_stop_departure_time
|
|
343
|
-
? new Date(context.lastPositionTracking?.properties.last_stop_departure_time)
|
|
344
|
-
: undefined,
|
|
345
|
-
last_stop_sequence: context.lastPositionTracking?.properties.last_stop_sequence,
|
|
346
|
-
last_stop_id: context.lastPositionTracking?.properties.last_stop_id,
|
|
347
|
-
}),
|
|
348
|
-
};
|
|
349
|
-
let lastStopSequence = null;
|
|
350
|
-
if (context?.lastPositionState === const_1.StatePositionEnum.BEFORE_TRACK) {
|
|
351
|
-
lastStopSequence = 1;
|
|
352
|
-
}
|
|
353
|
-
else if (context?.lastPositionTracking) {
|
|
354
|
-
lastStopSequence = context.lastPositionTracking.properties.last_stop_sequence;
|
|
355
|
-
}
|
|
356
|
-
const closesPoint = anchorPointSegmenter.getClosesPoint(lastStopSequence);
|
|
357
|
-
if (!closesPoint) {
|
|
358
|
-
return estimatedPoint;
|
|
359
|
-
}
|
|
360
|
-
return this.getClosestPoint(currentPosition, context, startDayTimestamp, closesPoint, tripGtfsData, gtfsRouteType);
|
|
361
|
-
};
|
|
362
200
|
/**
|
|
363
201
|
* Picks only one closest point for multiple possible points based on delay of last position and stop times
|
|
364
202
|
*
|
|
@@ -421,7 +259,7 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
421
259
|
}
|
|
422
260
|
if (isBusOrTram && this.isAfterTrack(lastStopSequence, lastTripShapePoint)) {
|
|
423
261
|
statePosition = const_1.StatePositionEnum.AFTER_TRACK;
|
|
424
|
-
if (
|
|
262
|
+
if (PositionStateDelayManager.PositionStateDelayManager.shouldPropagateAfterTrackDelay(context)) {
|
|
425
263
|
statePosition = const_1.StatePositionEnum.AFTER_TRACK_DELAYED;
|
|
426
264
|
}
|
|
427
265
|
else {
|
|
@@ -472,84 +310,20 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
472
310
|
};
|
|
473
311
|
return estimatedPoint;
|
|
474
312
|
};
|
|
475
|
-
/**
|
|
476
|
-
* Corrects time delay at stop with dwelling time
|
|
477
|
-
*
|
|
478
|
-
* @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
|
|
479
|
-
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
480
|
-
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
|
|
481
|
-
* @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
|
|
482
|
-
* @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
|
|
483
|
-
* @returns {number} - Result delay in seconds, can be negative for trip ahead
|
|
484
|
-
*/
|
|
485
|
-
this.getCorrectedTimeDelay = (timeDelay, context, currentPosition, thisStopSequence, stopTimes) => {
|
|
486
|
-
// compute dwell time in stop, most common is zero
|
|
487
|
-
const stopDwellTimeSeconds = stopTimes.departureTime - stopTimes.arrivalTime;
|
|
488
|
-
// if dwell time is sheduled as zero, return initial computed delay
|
|
489
|
-
if (stopDwellTimeSeconds <= 0) {
|
|
490
|
-
return timeDelay;
|
|
491
|
-
}
|
|
492
|
-
// if last position was not in this same stop or there is no last position at all
|
|
493
|
-
if (!context || context.atStopStreak.stop_sequence !== thisStopSequence) {
|
|
494
|
-
// timeDelay >= 0 trip is DELAYED
|
|
495
|
-
// we presume it will lower delay by shortening its scheduled dwell time,
|
|
496
|
-
// cant go under zero of course, trip should not go ahead
|
|
497
|
-
// else trip is AHeAD
|
|
498
|
-
// left computed delay as it was
|
|
499
|
-
return timeDelay >= 0 ? Math.max(timeDelay - stopDwellTimeSeconds, 0) : timeDelay;
|
|
500
|
-
}
|
|
501
|
-
// we presume that first position at same stop is real arrival time
|
|
502
|
-
if (context.atStopStreak.firstPositionDelay >= 0) {
|
|
503
|
-
// trip was DELAYED before
|
|
504
|
-
// we presume it will lower delay by shortening its scheduled dwell time,
|
|
505
|
-
// cant go under zero of course, trip should not go ahead
|
|
506
|
-
return Math.max(timeDelay - stopDwellTimeSeconds, 0);
|
|
507
|
-
}
|
|
508
|
-
// trip was AHEAD before
|
|
509
|
-
// real dwell time so far
|
|
510
|
-
const realDwellTimeSeconds = Math.round((currentPosition.properties.origin_timestamp.getTime() - context.atStopStreak.firstPositionTimestamp) / 1000);
|
|
511
|
-
// if real dwell is longer than scheduled, then add to negative delay time
|
|
512
|
-
return context.atStopStreak.firstPositionDelay + Math.max(realDwellTimeSeconds - stopDwellTimeSeconds, 0);
|
|
513
|
-
};
|
|
514
|
-
/**
|
|
515
|
-
* Compute UTC timestamp of start of day when trip starts
|
|
516
|
-
*
|
|
517
|
-
* @param {number} startTimestamp - Unix timestamp of start of the trip
|
|
518
|
-
* @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
|
|
519
|
-
* @returns {number} - Returns unix timestamp in milliseconds.
|
|
520
|
-
*/
|
|
521
|
-
this.getStartDayTimestamp = (startTimestamp, firstStopTimeScheduledSeconds) => {
|
|
522
|
-
let startDayTimestamp = moment_timezone_1.default.utc(startTimestamp).tz("Europe/Prague").startOf("day");
|
|
523
|
-
const stopTimeDayOverflow = Math.floor(firstStopTimeScheduledSeconds / ONE_DAY_IN_SECONDS);
|
|
524
|
-
// if trip has 24+ stop times set real startDay to yesterday
|
|
525
|
-
if (stopTimeDayOverflow > 0) {
|
|
526
|
-
startDayTimestamp.subtract(1, "day");
|
|
527
|
-
}
|
|
528
|
-
return startDayTimestamp.valueOf();
|
|
529
|
-
};
|
|
530
313
|
}
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
if (typeof lastPositionDelay !== "number") {
|
|
544
|
-
return null;
|
|
314
|
+
detectBacktracking(position, context, positionToUpdate, gtfsRouteType, tripPositions, startTimestamp, isBacktrackingDetected) {
|
|
315
|
+
if (positionToUpdate) {
|
|
316
|
+
positionToUpdate.is_tracked ??= position.is_tracked;
|
|
317
|
+
positionToUpdate.valid_to = this.validToCalculator.getValidToAttribute(positionToUpdate, position, gtfsRouteType, tripPositions.gtfsData, startTimestamp);
|
|
318
|
+
// backtracking detection so we can later invalidate old positions
|
|
319
|
+
if (!isBacktrackingDetected && positionToUpdate.last_stop_sequence && context.lastStopSequence) {
|
|
320
|
+
isBacktrackingDetected = positionToUpdate.last_stop_sequence < context.lastStopSequence;
|
|
321
|
+
}
|
|
322
|
+
return { positionToUpdate, isBacktrackingDetected };
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
return { positionToUpdate: null, isBacktrackingDetected };
|
|
545
326
|
}
|
|
546
|
-
const startDayMoment = moment_timezone_1.default.utc(startDayUnixTimestamp).tz(DateTimeUtils_1.DateTimeUtils.TIMEZONE);
|
|
547
|
-
startDayMoment.hours(12).minutes(0).seconds(0).milliseconds(0);
|
|
548
|
-
startDayMoment.subtract(12, "hours");
|
|
549
|
-
startDayMoment.add(firstStopDepartureTime, "seconds");
|
|
550
|
-
const departureTimeInSeconds = Math.floor(startDayMoment.toDate().valueOf() / ONE_SECOND_IN_MILLIS);
|
|
551
|
-
const positionOriginTimeInSeconds = Math.floor(positionOriginUnixTimestamp / ONE_SECOND_IN_MILLIS);
|
|
552
|
-
return Math.max(lastPositionDelay, positionOriginTimeInSeconds - departureTimeInSeconds);
|
|
553
327
|
}
|
|
554
328
|
getStateAndStopSequences(gtfsRouteType, thisClosestPoint, positionProperties, context) {
|
|
555
329
|
let statePosition = thisClosestPoint.this_stop_sequence ? const_1.StatePositionEnum.AT_STOP : const_1.StatePositionEnum.ON_TRACK;
|
|
@@ -591,12 +365,25 @@ let PositionsManager = exports.PositionsManager = class PositionsManager {
|
|
|
591
365
|
nextStopSequence,
|
|
592
366
|
};
|
|
593
367
|
}
|
|
368
|
+
hasTcpEventOrCancel(position) {
|
|
369
|
+
const tcpEvent = position.tcp_event;
|
|
370
|
+
if (tcpEvent === const_1.TCPEventEnum.TERMINATED) {
|
|
371
|
+
return true;
|
|
372
|
+
}
|
|
373
|
+
else if (tcpEvent === const_1.TCPEventEnum.ARRIVAL_ANNOUNCED || tcpEvent === const_1.TCPEventEnum.DEPARTURED) {
|
|
374
|
+
return false;
|
|
375
|
+
}
|
|
376
|
+
else if (tcpEvent === const_1.RegionalBusEventEnum.DEPARTURED) {
|
|
377
|
+
return false;
|
|
378
|
+
}
|
|
379
|
+
return null;
|
|
380
|
+
}
|
|
594
381
|
isAfterTrack(lastStopSequence, lastTripShapePoint) {
|
|
595
382
|
// Trip is terminated OR the vehicle is close to/in the terminus
|
|
596
383
|
return lastStopSequence >= lastTripShapePoint.last_stop_sequence;
|
|
597
384
|
}
|
|
598
385
|
};
|
|
599
|
-
exports.PositionsManager = PositionsManager = __decorate([
|
|
386
|
+
exports.PositionsManager = PositionsManager = PositionsManager_1 = __decorate([
|
|
600
387
|
(0, tsyringe_1.injectable)(),
|
|
601
388
|
__param(0, (0, tsyringe_1.inject)(VPContainerToken_1.VPContainerToken.ValidToCalculator)),
|
|
602
389
|
__metadata("design:paramtypes", [ValidToCalculator_1.ValidToCalculator])
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PositionsManager.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PositionsManager.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,37 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IVPTripsLastPositionContext } from "../../../../../../schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces";
|
|
2
|
+
import { Feature, Point } from "@turf/turf";
|
|
3
|
+
import { IComputationTrip, ICurrentPositionProperties, IPositionToUpdate, IProcessedPositions, IShapeAnchorPoint, IUpdatePositionsIteratorOptions } from "../../interfaces/VPInterfaces";
|
|
2
4
|
import { ValidToCalculator } from "../ValidToCalculator";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
import { BasePositionsManager } from "../BasePositionsManager";
|
|
6
|
+
import { IScheduleDto } from "../../../../../../schema-definitions/vehicle-positions/redis/interfaces/IGtfsRunTripCacheDto";
|
|
7
|
+
import { GTFSRouteTypeEnum } from "../../../../../../helpers/RouteTypeEnums";
|
|
8
|
+
export declare class RegionalBusPositionsManager extends BasePositionsManager {
|
|
9
|
+
protected validToCalculator: ValidToCalculator;
|
|
5
10
|
constructor(validToCalculator: ValidToCalculator);
|
|
6
|
-
/**
|
|
7
|
-
* Compute positions and return computed positions
|
|
8
|
-
*
|
|
9
|
-
* @param {ITripPositionsWithGTFS} tripPositions - Trip positions with shape anchors data
|
|
10
|
-
* @returns {IProcessedPositions} - Returns computed/updated positions
|
|
11
|
-
*/
|
|
12
|
-
computePositions: (tripPositions: ITripPositionsWithGTFS) => IProcessedPositions;
|
|
13
11
|
/**
|
|
14
12
|
* Takes position one by one, set proper handler for type of position, and do the process of position
|
|
15
13
|
*/
|
|
16
|
-
updatePositions: (options: IUpdatePositionsIteratorOptions) => IProcessedPositions;
|
|
17
|
-
private getCurrentContext;
|
|
18
|
-
/**
|
|
19
|
-
* Decide how to process input position data
|
|
20
|
-
*
|
|
21
|
-
* @param {IVPTripsPositionAttributes} position - Input vehiclepositions_positions row data
|
|
22
|
-
* @returns {PositionHandlerEnum} - Returns action handler enum
|
|
23
|
-
*/
|
|
24
|
-
private setPositionUpdateHandler;
|
|
25
|
-
/**
|
|
26
|
-
* Returns estimate of point on shape, where the trip should be with appropriate delay
|
|
27
|
-
*
|
|
28
|
-
* @param {IShapeAnchorPoint[]} tripShapePoints - Precalculated trip shape equidistant points with scheduled times
|
|
29
|
-
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Current position of trip
|
|
30
|
-
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
31
|
-
* @param {number} startDayTimestamp - Unix timestamp of midnight before trip starts
|
|
32
|
-
* @returns {IPositionToUpdate} - Position object to update
|
|
33
|
-
*/
|
|
34
|
-
private getEstimatedPoint;
|
|
14
|
+
updatePositions: (options: IUpdatePositionsIteratorOptions, _schedule: IScheduleDto[] | undefined) => IProcessedPositions;
|
|
35
15
|
/**
|
|
36
16
|
* Picks only one closest point for multiple possible points based on delay of last position and stop times
|
|
37
17
|
*
|
|
@@ -42,25 +22,6 @@ export declare class RegionalBusPositionsManager {
|
|
|
42
22
|
* @param {IComputationTrip} tripGtfsData - GTFS data and all set of known positions
|
|
43
23
|
* @returns {IPositionToUpdate} - Result point as position to update in DB
|
|
44
24
|
*/
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Corrects time delay at stop with dwelling time
|
|
48
|
-
*
|
|
49
|
-
* @param {number} timeDelay - Initial computed delay in seconds, can be negative for trip ahead
|
|
50
|
-
* @param {IVPTripsLastPositionContext | null} context - Context state, holds information about previous positions
|
|
51
|
-
* @param {Feature<Point, ICurrentPositionProperties>} currentPosition - Feature Point of current position
|
|
52
|
-
* @param {IShapeAnchorPoint} thisClosestPoint - Closest point of shape anchors
|
|
53
|
-
* @param { departureTime: number; arrivalTime: number } stopTimes - departure and arrival stop times in seconds
|
|
54
|
-
* @returns {number} - Result delay in seconds, can be negative for trip ahead
|
|
55
|
-
*/
|
|
56
|
-
private getCorrectedTimeDelay;
|
|
57
|
-
/**
|
|
58
|
-
* Compute UTC timestamp of start of day when trip starts
|
|
59
|
-
*
|
|
60
|
-
* @param {number} startTimestamp - Unix timestamp of start of the trip
|
|
61
|
-
* @param {number} firstStopTimeScheduledSeconds - Number of seconds from midnight of first stop departure
|
|
62
|
-
* @returns {number} - Returns unix timestamp in milliseconds.
|
|
63
|
-
*/
|
|
64
|
-
private getStartDayTimestamp;
|
|
25
|
+
protected getClosestPoint: (currentPosition: Feature<Point, ICurrentPositionProperties>, context: IVPTripsLastPositionContext | null, startDayTimestamp: number, thisClosestPoint: IShapeAnchorPoint, tripGtfsData: IComputationTrip, _gtfsRouteType?: GTFSRouteTypeEnum) => IPositionToUpdate;
|
|
65
26
|
private determineStatePosition;
|
|
66
27
|
}
|