@golemio/pid 5.19.1-dev.2799089619 → 5.19.1-dev.2815853394
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/helpers/PositionsMapper.js +10 -4
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.d.ts +30 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.js +73 -53
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/BasePositionsManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/DPPUtils.d.ts +2 -2
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.js +12 -20
- 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/VPUtils.d.ts +21 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/VPUtils.js +31 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/VPUtils.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/ComputeDelayHelper.js +35 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/ComputeDelayHelper.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/AbstractDelayAtStop.js +35 -5
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/AbstractDelayAtStop.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/CommonDelayAtStop.js +37 -5
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/CommonDelayAtStop.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/MetroDelayAtStop.js +37 -5
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/MetroDelayAtStop.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js +12 -20
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.js +35 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/RegionalBusComputeDelayHelper.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/BusDelayAtStop.js +37 -5
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/compute-positions/strategy/BusDelayAtStop.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/trip-context/TripContextHelper.d.ts +68 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/trip-context/TripContextHelper.js +216 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/trip-context/TripContextHelper.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/abstract/AbstractPropagateDelayTask.js +37 -11
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/abstract/AbstractPropagateDelayTask.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/models/VPTripsModel.js +22 -10
- package/dist/schema-definitions/vehicle-positions/models/VPTripsModel.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces.d.ts +8 -8
- package/docs/asyncapi.yaml +0 -9
- package/docs/cache/types/psql.md +6 -11
- package/docs/processing/index.md +1 -0
- package/docs/processing/state_position_tracking/tcp_dpp_common.md +6 -0
- package/docs/processing/trip_context/index.md +149 -0
- package/package.json +1 -1
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createInitial = createInitial;
|
|
37
|
+
exports.commitValidPosition = commitValidPosition;
|
|
38
|
+
exports.transitionState = transitionState;
|
|
39
|
+
exports.recordTracking = recordTracking;
|
|
40
|
+
exports.recordBeforeTrackDelayed = recordBeforeTrackDelayed;
|
|
41
|
+
exports.updateAtStopStreak = updateAtStopStreak;
|
|
42
|
+
exports.clearAtStopStreak = clearAtStopStreak;
|
|
43
|
+
exports.resetLastStopDelay = resetLastStopDelay;
|
|
44
|
+
exports.updateLastStopSequenceIfUnset = updateLastStopSequenceIfUnset;
|
|
45
|
+
exports.setLastStopArrivalDelay = setLastStopArrivalDelay;
|
|
46
|
+
exports.setLastStopDepartureDelay = setLastStopDepartureDelay;
|
|
47
|
+
exports.setLastPositionDelay = setLastPositionDelay;
|
|
48
|
+
exports.recordPropagatedDelay = recordPropagatedDelay;
|
|
49
|
+
const turf = __importStar(require("@turf/turf"));
|
|
50
|
+
const const_1 = require("../../../../../../const");
|
|
51
|
+
/**
|
|
52
|
+
* Builds a fresh trip context for a trip that has no persisted context yet.
|
|
53
|
+
*/
|
|
54
|
+
function createInitial(tripId) {
|
|
55
|
+
return {
|
|
56
|
+
atStopStreak: {
|
|
57
|
+
stop_sequence: null,
|
|
58
|
+
firstPositionTimestamp: null,
|
|
59
|
+
firstPositionDelay: null,
|
|
60
|
+
},
|
|
61
|
+
lastPositionLastStop: {
|
|
62
|
+
sequence: null,
|
|
63
|
+
arrival_delay: null,
|
|
64
|
+
departure_delay: null,
|
|
65
|
+
},
|
|
66
|
+
lastPositionDelay: null,
|
|
67
|
+
lastPositionId: null,
|
|
68
|
+
lastPositionLat: null,
|
|
69
|
+
lastPositionLng: null,
|
|
70
|
+
lastPositionOriginTimestamp: null,
|
|
71
|
+
lastPositionTracking: null,
|
|
72
|
+
lastPositionCanceled: null,
|
|
73
|
+
lastPositionBeforeTrackDelayed: null,
|
|
74
|
+
lastPositionState: null,
|
|
75
|
+
lastStopSequence: null,
|
|
76
|
+
lastPositionStateChange: null,
|
|
77
|
+
tripId,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Commits a successfully processed position into the context - id, coordinates, canceled flag,
|
|
82
|
+
* origin timestamp, last stop sequence and the position state transition.
|
|
83
|
+
*/
|
|
84
|
+
function commitValidPosition(context, position, positionToUpdate, canceled) {
|
|
85
|
+
context.lastPositionId = position.id;
|
|
86
|
+
context.lastPositionLat = position.lat;
|
|
87
|
+
context.lastPositionLng = position.lng;
|
|
88
|
+
context.lastPositionCanceled = canceled;
|
|
89
|
+
context.lastPositionOriginTimestamp = position.origin_timestamp.getTime();
|
|
90
|
+
context.lastStopSequence = positionToUpdate.last_stop_sequence ?? context.lastStopSequence ?? null;
|
|
91
|
+
transitionState(context, positionToUpdate.state_position);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Transitions the position state. By default only stamps `lastPositionStateChange` when the state
|
|
95
|
+
* actually changes; `forceTimestamp` always restamps regardless of whether the state changed.
|
|
96
|
+
*/
|
|
97
|
+
function transitionState(context, state, options) {
|
|
98
|
+
const forceTimestamp = options?.forceTimestamp ?? false;
|
|
99
|
+
if (forceTimestamp || context.lastPositionState !== state) {
|
|
100
|
+
context.lastPositionState = state;
|
|
101
|
+
context.lastPositionStateChange = new Date().toISOString();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Records the last known tracking point (only for AT_STOP/ON_TRACK positions).
|
|
106
|
+
*/
|
|
107
|
+
function recordTracking(context, position, positionToUpdate) {
|
|
108
|
+
if (positionToUpdate?.state_position === const_1.StatePositionEnum.AT_STOP ||
|
|
109
|
+
positionToUpdate?.state_position === const_1.StatePositionEnum.ON_TRACK ||
|
|
110
|
+
position.state_position === const_1.StatePositionEnum.AT_STOP ||
|
|
111
|
+
position.state_position === const_1.StatePositionEnum.ON_TRACK) {
|
|
112
|
+
const mergedPosition = { ...position, ...positionToUpdate };
|
|
113
|
+
// Explicit literal with `?? null` per field: any field that would otherwise merge in as
|
|
114
|
+
// `undefined` now persists as `null` instead. This is an intentional, documented behavior
|
|
115
|
+
// change - `undefined` keys get dropped by `JSON.stringify`, `null` keys are kept.
|
|
116
|
+
//
|
|
117
|
+
// mergedPosition.lat/lng (not raw position's) - avoids re-crashing turf.point on the same
|
|
118
|
+
// invalid coordinates the caller's guard already sanitized.
|
|
119
|
+
context.lastPositionTracking = turf.point([mergedPosition.lng, mergedPosition.lat], {
|
|
120
|
+
bearing: mergedPosition.bearing ?? null,
|
|
121
|
+
shape_dist_traveled: mergedPosition.shape_dist_traveled ?? null,
|
|
122
|
+
tcp_event: mergedPosition.tcp_event ?? null,
|
|
123
|
+
last_stop_sequence: mergedPosition.last_stop_sequence ?? null,
|
|
124
|
+
last_stop_id: mergedPosition.last_stop_id ?? null,
|
|
125
|
+
last_stop_arrival_time: mergedPosition.last_stop_arrival_time ?? null,
|
|
126
|
+
last_stop_departure_time: mergedPosition.last_stop_departure_time ?? null,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Records the sticky BEFORE_TRACK_DELAYED position. Stores the timestamp as-is (Date), never calls
|
|
132
|
+
* `.getTime()` on it.
|
|
133
|
+
*/
|
|
134
|
+
function recordBeforeTrackDelayed(context, position, positionToUpdate) {
|
|
135
|
+
if (position.state_position === const_1.StatePositionEnum.BEFORE_TRACK_DELAYED) {
|
|
136
|
+
context.lastPositionBeforeTrackDelayed = {
|
|
137
|
+
delay: positionToUpdate?.delay ?? position.delay,
|
|
138
|
+
origin_timestamp: positionToUpdate?.origin_timestamp ?? position.origin_timestamp,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Starts a new at-stop streak when the stop sequence changed.
|
|
144
|
+
*/
|
|
145
|
+
function updateAtStopStreak(context, position, positionToUpdate) {
|
|
146
|
+
const stopSequenceChanged = positionToUpdate
|
|
147
|
+
? positionToUpdate.this_stop_sequence && context.atStopStreak.stop_sequence !== positionToUpdate.this_stop_sequence
|
|
148
|
+
: position.this_stop_sequence && context.atStopStreak.stop_sequence !== position.this_stop_sequence;
|
|
149
|
+
if (stopSequenceChanged) {
|
|
150
|
+
context.atStopStreak.stop_sequence = positionToUpdate
|
|
151
|
+
? positionToUpdate.this_stop_sequence
|
|
152
|
+
: position.this_stop_sequence;
|
|
153
|
+
context.atStopStreak.firstPositionTimestamp = position.origin_timestamp.getTime();
|
|
154
|
+
context.atStopStreak.firstPositionDelay = positionToUpdate ? positionToUpdate.delay : position.delay;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Disrupts the at-stop streak. Zeroes ONLY `stop_sequence` - `firstPositionTimestamp` and
|
|
159
|
+
* `firstPositionDelay` are intentionally left untouched (persisted as-is).
|
|
160
|
+
*/
|
|
161
|
+
function clearAtStopStreak(context) {
|
|
162
|
+
context.atStopStreak.stop_sequence = null;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Resets all last-stop-delay bookkeeping (sequence, arrival delay, departure delay).
|
|
166
|
+
*/
|
|
167
|
+
function resetLastStopDelay(context) {
|
|
168
|
+
context.lastPositionLastStop.arrival_delay = null;
|
|
169
|
+
context.lastPositionLastStop.sequence = null;
|
|
170
|
+
context.lastPositionLastStop.departure_delay = null;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Sets the last-stop sequence only when it is currently unset, falling back from `positionToUpdate`
|
|
174
|
+
* to `position` to `null`.
|
|
175
|
+
*/
|
|
176
|
+
function updateLastStopSequenceIfUnset(context, positionToUpdate, position) {
|
|
177
|
+
if (context.lastPositionLastStop.sequence === null) {
|
|
178
|
+
context.lastPositionLastStop.sequence = positionToUpdate?.last_stop_sequence ?? position?.last_stop_sequence ?? null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Verbatim pass-through - `undefined` must remain `undefined` (dropped by `JSON.stringify`), never
|
|
183
|
+
* coerced to `null`, since that would change the persisted bytes.
|
|
184
|
+
*/
|
|
185
|
+
function setLastStopArrivalDelay(context, delay) {
|
|
186
|
+
context.lastPositionLastStop.arrival_delay = delay;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Verbatim pass-through - `undefined` must remain `undefined` (dropped by `JSON.stringify`), never
|
|
190
|
+
* coerced to `null`, since that would change the persisted bytes.
|
|
191
|
+
*/
|
|
192
|
+
function setLastStopDepartureDelay(context, delay) {
|
|
193
|
+
context.lastPositionLastStop.departure_delay = delay;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Verbatim pass-through - `undefined` must remain `undefined` (dropped by `JSON.stringify`), never
|
|
197
|
+
* coerced to `null`, since that would change the persisted bytes.
|
|
198
|
+
*/
|
|
199
|
+
function setLastPositionDelay(context, positionToUpdate, position) {
|
|
200
|
+
context.lastPositionDelay = (positionToUpdate ? positionToUpdate.delay : position.delay);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Force-restamps the context for a propagated delay (mutation site #12): coordinates, forced state
|
|
204
|
+
* transition to BEFORE_TRACK_DELAYED and the sticky before-track-delayed snapshot.
|
|
205
|
+
*/
|
|
206
|
+
function recordPropagatedDelay(context, lat, lng, delay, originTimestamp) {
|
|
207
|
+
// Sequelize DECIMAL columns come back as strings.
|
|
208
|
+
context.lastPositionLat = typeof lat === "string" ? parseFloat(lat) : lat;
|
|
209
|
+
context.lastPositionLng = typeof lng === "string" ? parseFloat(lng) : lng;
|
|
210
|
+
transitionState(context, const_1.StatePositionEnum.BEFORE_TRACK_DELAYED, { forceTimestamp: true });
|
|
211
|
+
context.lastPositionBeforeTrackDelayed = {
|
|
212
|
+
delay,
|
|
213
|
+
origin_timestamp: originTimestamp,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=TripContextHelper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TripContextHelper.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/trip-context/TripContextHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
21
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
23
|
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
8
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
43
|
};
|
|
@@ -19,6 +52,7 @@ const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
|
19
52
|
const const_1 = require("../../../../../../const");
|
|
20
53
|
const PositionsRepository_1 = require("../../data-access/PositionsRepository");
|
|
21
54
|
const constants_1 = require("../../constants");
|
|
55
|
+
const TripContextHelper = __importStar(require("../../helpers/trip-context/TripContextHelper"));
|
|
22
56
|
let AbstractPropagateDelayTask = class AbstractPropagateDelayTask extends integration_engine_1.AbstractTask {
|
|
23
57
|
constructor(tripsRepository, positionsRepository) {
|
|
24
58
|
super(constants_1.WORKER_NAME);
|
|
@@ -54,20 +88,12 @@ let AbstractPropagateDelayTask = class AbstractPropagateDelayTask extends integr
|
|
|
54
88
|
}
|
|
55
89
|
delayInSeconds = Math.max(0, delayInSeconds - turnTimeAcc);
|
|
56
90
|
}
|
|
91
|
+
const context = { ...(trip.last_position_context ?? TripContextHelper.createInitial(trip.id)) };
|
|
92
|
+
TripContextHelper.recordPropagatedDelay(context, lastPosition.lat, lastPosition.lng, delayInSeconds, lastPosition.origin_timestamp);
|
|
57
93
|
tripsToUpdate.set(trip.id, {
|
|
58
94
|
id: trip.id,
|
|
59
95
|
last_position_id: lastPosition.id,
|
|
60
|
-
last_position_context:
|
|
61
|
-
...trip.last_position_context,
|
|
62
|
-
lastPositionLat: typeof lastPosition.lat === "string" ? parseFloat(lastPosition.lat) : lastPosition.lat,
|
|
63
|
-
lastPositionLng: typeof lastPosition.lng === "string" ? parseFloat(lastPosition.lng) : lastPosition.lng,
|
|
64
|
-
lastPositionState: const_1.StatePositionEnum.BEFORE_TRACK_DELAYED,
|
|
65
|
-
lastPositionStateChange: new Date().toISOString(),
|
|
66
|
-
lastPositionBeforeTrackDelayed: {
|
|
67
|
-
delay: delayInSeconds,
|
|
68
|
-
origin_timestamp: lastPosition.origin_timestamp,
|
|
69
|
-
},
|
|
70
|
-
},
|
|
96
|
+
last_position_context: context,
|
|
71
97
|
});
|
|
72
98
|
positionsToUpdate.push({
|
|
73
99
|
id: lastPosition.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractPropagateDelayTask.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/abstract/AbstractPropagateDelayTask.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AbstractPropagateDelayTask.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/abstract/AbstractPropagateDelayTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -215,7 +215,28 @@ VPTripsModel.jsonSchema = {
|
|
|
215
215
|
},
|
|
216
216
|
properties: {
|
|
217
217
|
type: "object",
|
|
218
|
-
|
|
218
|
+
properties: {
|
|
219
|
+
bearing: {
|
|
220
|
+
type: ["number", "null"],
|
|
221
|
+
},
|
|
222
|
+
shape_dist_traveled: {
|
|
223
|
+
type: ["number", "null"],
|
|
224
|
+
},
|
|
225
|
+
tcp_event: {
|
|
226
|
+
type: ["string", "null"],
|
|
227
|
+
},
|
|
228
|
+
last_stop_sequence: {
|
|
229
|
+
type: ["number", "null"],
|
|
230
|
+
},
|
|
231
|
+
last_stop_id: {
|
|
232
|
+
type: ["string", "null"],
|
|
233
|
+
},
|
|
234
|
+
// last_stop_arrival_time/last_stop_departure_time are written as Date
|
|
235
|
+
// instances (see TripContextHelper.recordTracking) before JSON
|
|
236
|
+
// serialization turns them into strings, so they are left unvalidated
|
|
237
|
+
// here rather than typed as "string" only.
|
|
238
|
+
},
|
|
239
|
+
required: [],
|
|
219
240
|
},
|
|
220
241
|
geometry: {
|
|
221
242
|
$ref: "#/definitions/geometry",
|
|
@@ -234,18 +255,9 @@ VPTripsModel.jsonSchema = {
|
|
|
234
255
|
lastPositionLastStop: {
|
|
235
256
|
type: "object",
|
|
236
257
|
properties: {
|
|
237
|
-
id: {
|
|
238
|
-
type: ["string", "null"],
|
|
239
|
-
},
|
|
240
258
|
sequence: {
|
|
241
259
|
type: ["number", "null"],
|
|
242
260
|
},
|
|
243
|
-
arrival_time: {
|
|
244
|
-
type: ["number", "null"],
|
|
245
|
-
},
|
|
246
|
-
departure_time: {
|
|
247
|
-
type: ["number", "null"],
|
|
248
|
-
},
|
|
249
261
|
},
|
|
250
262
|
required: [],
|
|
251
263
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VPTripsModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/vehicle-positions/models/VPTripsModel.ts"],"names":[],"mappings":";;;AAAA,8EAA6E;AAE7E,mEAAwF;AAKxF,MAAa,YAAa,SAAQ,iBAAmB;;AAArD,
|
|
1
|
+
{"version":3,"file":"VPTripsModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/vehicle-positions/models/VPTripsModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,29 +6,29 @@ export interface IVPTripsComputedPositionAtStopStreak {
|
|
|
6
6
|
firstPositionDelay: number | null;
|
|
7
7
|
stop_sequence: number | null;
|
|
8
8
|
}
|
|
9
|
+
type VPTripsTrackingFields = "bearing" | "shape_dist_traveled" | "tcp_event" | "last_stop_sequence" | "last_stop_id" | "last_stop_arrival_time" | "last_stop_departure_time";
|
|
10
|
+
export type IVPTripsTrackingProperties = Pick<IVPTripsPositionAttributes, VPTripsTrackingFields>;
|
|
9
11
|
export interface IVPTripsLastPositionContext {
|
|
10
12
|
lastPositionId: string | null;
|
|
11
|
-
lastPositionLat
|
|
12
|
-
lastPositionLng
|
|
13
|
+
lastPositionLat: number | null;
|
|
14
|
+
lastPositionLng: number | null;
|
|
13
15
|
lastPositionOriginTimestamp: number | null;
|
|
14
|
-
lastPositionTracking: Feature<Point,
|
|
16
|
+
lastPositionTracking: Feature<Point, IVPTripsTrackingProperties> | null;
|
|
15
17
|
lastPositionCanceled: boolean | null;
|
|
16
18
|
lastPositionLastStop: {
|
|
17
|
-
id: string | null;
|
|
18
19
|
sequence: number | null;
|
|
19
|
-
arrival_time: number | null;
|
|
20
20
|
arrival_delay: number | null;
|
|
21
|
-
departure_time: number | null;
|
|
22
21
|
departure_delay: number | null;
|
|
23
22
|
};
|
|
24
23
|
lastPositionDelay: number | null;
|
|
25
24
|
atStopStreak: IVPTripsComputedPositionAtStopStreak;
|
|
26
25
|
lastPositionBeforeTrackDelayed: {
|
|
27
26
|
delay: number | null;
|
|
28
|
-
origin_timestamp: Date;
|
|
27
|
+
origin_timestamp: string | Date | null;
|
|
29
28
|
} | null;
|
|
30
29
|
lastPositionState: StatePositionEnum | null;
|
|
31
|
-
lastStopSequence
|
|
30
|
+
lastStopSequence: number | null;
|
|
32
31
|
lastPositionStateChange: string | null;
|
|
33
32
|
tripId: string;
|
|
34
33
|
}
|
|
34
|
+
export {};
|
package/docs/asyncapi.yaml
CHANGED
|
@@ -1254,21 +1254,12 @@ components:
|
|
|
1254
1254
|
lastPositionLastStop:
|
|
1255
1255
|
type: object
|
|
1256
1256
|
properties:
|
|
1257
|
-
id:
|
|
1258
|
-
type: string
|
|
1259
|
-
nullable: true
|
|
1260
1257
|
sequence:
|
|
1261
1258
|
type: number
|
|
1262
1259
|
nullable: true
|
|
1263
|
-
arrival_time:
|
|
1264
|
-
type: number
|
|
1265
|
-
nullable: true
|
|
1266
1260
|
arrival_delay:
|
|
1267
1261
|
type: number
|
|
1268
1262
|
nullable: true
|
|
1269
|
-
departure_time:
|
|
1270
|
-
type: number
|
|
1271
|
-
nullable: true
|
|
1272
1263
|
departure_delay:
|
|
1273
1264
|
type: number
|
|
1274
1265
|
nullable: true
|
package/docs/cache/types/psql.md
CHANGED
|
@@ -5,31 +5,29 @@
|
|
|
5
5
|
- Uložen jako JSON objekt s variabilními daty a atributy - v závislosti na stavu vozidla/spoje některé atributy chybí nebo jsou prázdné/null
|
|
6
6
|
- Pokud se jedná o první pozici na spoji, pak všechny atributy kromě `tripId` budou null a nepovinné atributy můžou chybět
|
|
7
7
|
- Aktuální interface viz [IVPTripsLastPositionContext](../../../src/schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces.ts)
|
|
8
|
+
- Invarianty mutace kontextu (kdo a jak smí kontext měnit) viz [Trip context](../../processing/trip_context/index.md)
|
|
8
9
|
|
|
9
10
|
```typescript
|
|
10
11
|
interface IVPTripsLastPositionContext {
|
|
11
12
|
lastPositionId: string | null;
|
|
12
|
-
lastPositionLat
|
|
13
|
-
lastPositionLng
|
|
13
|
+
lastPositionLat: number | null;
|
|
14
|
+
lastPositionLng: number | null;
|
|
14
15
|
lastPositionOriginTimestamp: number | null;
|
|
15
|
-
lastPositionTracking: Feature<Point,
|
|
16
|
+
lastPositionTracking: Feature<Point, IVPTripsTrackingProperties> | null;
|
|
16
17
|
lastPositionCanceled: boolean | null;
|
|
17
18
|
lastPositionLastStop: {
|
|
18
|
-
id: string | null;
|
|
19
19
|
sequence: number | null;
|
|
20
|
-
arrival_time: number | null;
|
|
21
20
|
arrival_delay: number | null;
|
|
22
|
-
departure_time: number | null;
|
|
23
21
|
departure_delay: number | null;
|
|
24
22
|
};
|
|
25
23
|
lastPositionDelay: number | null;
|
|
26
24
|
atStopStreak: IVPTripsComputedPositionAtStopStreak;
|
|
27
25
|
lastPositionBeforeTrackDelayed: {
|
|
28
26
|
delay: number | null;
|
|
29
|
-
origin_timestamp: Date;
|
|
27
|
+
origin_timestamp: string | Date | null;
|
|
30
28
|
} | null;
|
|
31
29
|
lastPositionState: StatePositionEnum | null;
|
|
32
|
-
lastStopSequence
|
|
30
|
+
lastStopSequence: number | null;
|
|
33
31
|
lastPositionStateChange: string | null;
|
|
34
32
|
tripId: string;
|
|
35
33
|
}
|
|
@@ -49,11 +47,8 @@ interface IVPTripsLastPositionContext {
|
|
|
49
47
|
- _poznámka_: využití během aktualizace tripu v databázi. Zbytečné a lze nahradit stavem pozice
|
|
50
48
|
- **lastPositionLastStop** - informace o poslední zastávce, kterou vozidlo projelo
|
|
51
49
|
- _poznámka_: využití pouze pro výpočet zpoždění na zastávce
|
|
52
|
-
- **id** - GTFS ID zastávky. V současnosti je vždy null a nepoužívá se
|
|
53
50
|
- **sequence** - pořadí zastávky v rámci GTFS stop times
|
|
54
|
-
- **arrival_time** - čas příjezdu na zastávku podle GTFS
|
|
55
51
|
- **arrival_delay** - vypočítané zpoždění příjezdu na zastávku oproti GTFS v sekundách
|
|
56
|
-
- **departure_time** - čas odjezdu ze zastávky podle GTFS
|
|
57
52
|
- **departure_delay** - vypočítané zpoždění odjezdu ze zastávky oproti GTFS v sekundách
|
|
58
53
|
- **lastPositionDelay** - poslední vypočítané zpoždění vozidla na spoji
|
|
59
54
|
- _poznámka_: využití pouze pro výpočet zpoždění na zastávce
|
package/docs/processing/index.md
CHANGED
|
@@ -16,3 +16,4 @@
|
|
|
16
16
|
- [TCP Telmax Arriva City](./state_position_tracking/tcp_telmax_arriva_city.md)
|
|
17
17
|
- [**Mapování MPVNet vehicle type na GTFS**](./vehicle_types.md)
|
|
18
18
|
- [**Mapování MPVNet spojů na GTFS**](./trip_matching.md)
|
|
19
|
+
- [**Trip context (stav spoje mezi pozicemi)**](./trip_context/index.md)
|
|
@@ -35,6 +35,12 @@
|
|
|
35
35
|
- jinak je stav `after_track`
|
|
36
36
|
- **zvláštní případ**: pokud má pozice `cis_last_stop_id = null`, stav se znovu nevyhodnocuje – pozice si zachovává poslední známý stav (zmrazení stavu); to zabraňuje nežádoucímu cyklování zpět do `untracked` pouze kvůli chybějící CIS zastávce
|
|
37
37
|
- Tracking (`tracking` je `2`)
|
|
38
|
+
- **neplatné/chybějící souřadnice** - pokud pozice nese `this_stop_id`/`last_stop_id`
|
|
39
|
+
odpovídající zastávce v GTFS trase spoje, dopočítá se poloha z této zastávky (stejný
|
|
40
|
+
pipeline jako reálné GPS, viz [trip_context/index.md](../trip_context/index.md#invalid-gps-coordinates-stop-based-fallback));
|
|
41
|
+
bez shody se stav zmrazí na posledním známém - v obou případech se pozice vždy uloží
|
|
42
|
+
jako zpracovaná (`state_process = processed`), aby se stejná chybná pozice nezacyklila
|
|
43
|
+
při dalším běhu
|
|
38
44
|
- pokud je vozidlo 200 metrů od nejblizšího bodu na trase, stav je `off_track`
|
|
39
45
|
- pokud je vozidlo v zastávce, je stav `at_stop`
|
|
40
46
|
- pokud je vozidlo mimo zastávku a zároveň vozidlo poslalo zprávu `O` mimo poslední zastávku, je stav `on_track`
|