@golemio/pid 3.15.0 → 3.15.1-dev.1819157937
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/db/migrations/postgresql/20250509095900-get-departures-planned-start.js +53 -0
- package/db/migrations/postgresql/sqls/20250509095900-get-departures-planned-start-down.sql +189 -0
- package/db/migrations/postgresql/sqls/20250509095900-get-departures-planned-start-up.sql +200 -0
- package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js +0 -1
- package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.d.ts +6 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.js +7 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.d.ts +7 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js +94 -30
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.js.map +1 -1
- package/dist/output-gateway/pid/index.d.ts +1 -0
- package/dist/output-gateway/pid/index.js.map +1 -1
- package/dist/output-gateway/pid/models/helpers/SkipHelper.js +6 -2
- package/dist/output-gateway/pid/models/helpers/SkipHelper.js.map +1 -1
- package/docs/cache/types/redis.md +3 -1
- package/package.json +3 -3
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var dbm;
|
|
4
|
+
var type;
|
|
5
|
+
var seed;
|
|
6
|
+
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var Promise;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* We receive the dbmigrate dependency from dbmigrate initially.
|
|
12
|
+
* This enables us to not have to rely on NODE_PATH.
|
|
13
|
+
*/
|
|
14
|
+
exports.setup = function(options, seedLink) {
|
|
15
|
+
dbm = options.dbmigrate;
|
|
16
|
+
type = dbm.dataType;
|
|
17
|
+
seed = seedLink;
|
|
18
|
+
Promise = options.Promise;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.up = function(db) {
|
|
22
|
+
var filePath = path.join(__dirname, 'sqls', '20250509095900-get-departures-planned-start-up.sql');
|
|
23
|
+
return new Promise( function( resolve, reject ) {
|
|
24
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
25
|
+
if (err) return reject(err);
|
|
26
|
+
console.log('received data: ' + data);
|
|
27
|
+
|
|
28
|
+
resolve(data);
|
|
29
|
+
});
|
|
30
|
+
})
|
|
31
|
+
.then(function(data) {
|
|
32
|
+
return db.runSql(data);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.down = function(db) {
|
|
37
|
+
var filePath = path.join(__dirname, 'sqls', '20250509095900-get-departures-planned-start-down.sql');
|
|
38
|
+
return new Promise( function( resolve, reject ) {
|
|
39
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
+
if (err) return reject(err);
|
|
41
|
+
console.log('received data: ' + data);
|
|
42
|
+
|
|
43
|
+
resolve(data);
|
|
44
|
+
});
|
|
45
|
+
})
|
|
46
|
+
.then(function(data) {
|
|
47
|
+
return db.runSql(data);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports._meta = {
|
|
52
|
+
"version": 1
|
|
53
|
+
};
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
drop function get_departures;
|
|
2
|
+
create function get_departures (
|
|
3
|
+
stopsIds varchar,
|
|
4
|
+
mode int,
|
|
5
|
+
dateDepartureBetweenStart timestamptz,
|
|
6
|
+
dateDepartureBetweenEnd timestamptz,
|
|
7
|
+
isNegativeMinutesBefore int,
|
|
8
|
+
dateCanceledDepartureBetweenStart timestamptz,
|
|
9
|
+
dateCanceledDepartureBetweenEnd timestamptz,
|
|
10
|
+
airconditioninfoenabled int
|
|
11
|
+
)
|
|
12
|
+
returns table (
|
|
13
|
+
departure_datetime_real timestamptz,
|
|
14
|
+
arrival_datetime_real timestamptz,
|
|
15
|
+
stop_sequence int2,
|
|
16
|
+
stop_headsign varchar(70),
|
|
17
|
+
arrival_datetime timestamptz,
|
|
18
|
+
departure_datetime timestamptz,
|
|
19
|
+
stop_id varchar(25),
|
|
20
|
+
platform_code varchar(10),
|
|
21
|
+
wheelchair_boarding int2,
|
|
22
|
+
min_stop_sequence int2,
|
|
23
|
+
max_stop_sequence int2,
|
|
24
|
+
trip_id varchar(50),
|
|
25
|
+
trip_headsign varchar(100),
|
|
26
|
+
trip_short_name varchar(30),
|
|
27
|
+
wheelchair_accessible int2,
|
|
28
|
+
route_short_name varchar(50),
|
|
29
|
+
route_type int2,
|
|
30
|
+
route_id varchar(20),
|
|
31
|
+
is_night bpchar(1),
|
|
32
|
+
is_regional bpchar(1),
|
|
33
|
+
is_substitute_transport bpchar(1),
|
|
34
|
+
next_stop_id varchar(30),
|
|
35
|
+
delay_seconds int4,
|
|
36
|
+
real_wheelchair_accessible bool,
|
|
37
|
+
is_canceled bool,
|
|
38
|
+
"trip.gtfs_trip_short_name" varchar(255),
|
|
39
|
+
"trip.gtfs_date" date,
|
|
40
|
+
"trip.internal_route_name" varchar(50),
|
|
41
|
+
"trip.internal_run_number" int4,
|
|
42
|
+
"trip.start_timestamp" timestamptz,
|
|
43
|
+
"trip.last_position.last_stop_id" varchar(255),
|
|
44
|
+
"trip.last_position.last_stop_sequence" int4,
|
|
45
|
+
"trip.last_position.last_stop_name" varchar(255),
|
|
46
|
+
"trip.last_position.this_stop_sequence" int4,
|
|
47
|
+
"trip.cis_stop_platform_code" varchar(15),
|
|
48
|
+
"trip.vehicle_descriptor.is_air_conditioned" bool,
|
|
49
|
+
delay_minutes int4,
|
|
50
|
+
is_delay_available bool,
|
|
51
|
+
run_number int4
|
|
52
|
+
|
|
53
|
+
)
|
|
54
|
+
language SQL
|
|
55
|
+
set search_path from current
|
|
56
|
+
as $$
|
|
57
|
+
select
|
|
58
|
+
departure_boards_detailed."computed.departure_datetime_real",
|
|
59
|
+
departure_boards_detailed."computed.arrival_datetime_real",
|
|
60
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence",
|
|
61
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_headsign",
|
|
62
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.arrival_datetime",
|
|
63
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.departure_datetime",
|
|
64
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id",
|
|
65
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.platform_code",
|
|
66
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
67
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
68
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
69
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_id",
|
|
70
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_headsign",
|
|
71
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_short_name",
|
|
72
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
73
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_short_name",
|
|
74
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_type",
|
|
75
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_id",
|
|
76
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_night",
|
|
77
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_regional",
|
|
78
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
79
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.next_stop_id",
|
|
80
|
+
departure_boards_detailed."delay_seconds",
|
|
81
|
+
departure_boards_detailed."real_wheelchair_accessible",
|
|
82
|
+
departure_boards_detailed."is_canceled",
|
|
83
|
+
departure_boards_detailed."trip.gtfs_trip_short_name",
|
|
84
|
+
departure_boards_detailed."trip.gtfs_date",
|
|
85
|
+
departure_boards_detailed."trip.internal_route_name",
|
|
86
|
+
departure_boards_detailed."trip.internal_run_number",
|
|
87
|
+
departure_boards_detailed."trip.start_timestamp",
|
|
88
|
+
departure_boards_detailed."trip.last_position.last_stop_id",
|
|
89
|
+
departure_boards_detailed."trip.last_position.last_stop_sequence",
|
|
90
|
+
departure_boards_detailed."trip.last_position.last_stop_name",
|
|
91
|
+
departure_boards_detailed."trip.last_position.this_stop_sequence",
|
|
92
|
+
departure_boards_detailed.cis_stop_platform_code as "trip.cis_stop_platform_code",
|
|
93
|
+
case when airconditioninfoenabled = 1 then departure_boards_detailed."trip.vehicle_descriptor.is_air_conditioned" else NULL end,
|
|
94
|
+
TRUNC(departure_boards_detailed."trip.last_position.delay"::DECIMAL / 60, 0)::int as "delay_minutes",
|
|
95
|
+
case when departure_boards_detailed."trip.last_position.delay" is null then false else true end as "is_delay_available",
|
|
96
|
+
departure_boards_detailed."run.run_number"
|
|
97
|
+
|
|
98
|
+
from (
|
|
99
|
+
select
|
|
100
|
+
("departure_datetime"
|
|
101
|
+
+ MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end))
|
|
102
|
+
- case when (MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)) > MAKE_INTERVAL())
|
|
103
|
+
then least (
|
|
104
|
+
MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)),
|
|
105
|
+
("departure_datetime" - "arrival_datetime")::interval
|
|
106
|
+
)
|
|
107
|
+
else MAKE_INTERVAL()
|
|
108
|
+
end
|
|
109
|
+
) "computed.departure_datetime_real",
|
|
110
|
+
"arrival_datetime" + MAKE_INTERVAL(secs => (
|
|
111
|
+
CASE WHEN "trip.last_position.delay" IS NULL THEN 0 ELSE "trip.last_position.delay" end
|
|
112
|
+
)) "computed.arrival_datetime_real",
|
|
113
|
+
"ropidgtfs_precomputed_departures"."stop_sequence" as "ropidgtfs_precomputed_departures.stop_sequence",
|
|
114
|
+
"ropidgtfs_precomputed_departures"."stop_headsign" as "ropidgtfs_precomputed_departures.stop_headsign",
|
|
115
|
+
"ropidgtfs_precomputed_departures"."pickup_type" as "ropidgtfs_precomputed_departures.pickup_type",
|
|
116
|
+
"ropidgtfs_precomputed_departures"."drop_off_type" as "ropidgtfs_precomputed_departures.drop_off_type",
|
|
117
|
+
"ropidgtfs_precomputed_departures"."arrival_time" as "ropidgtfs_precomputed_departures.arrival_time",
|
|
118
|
+
"ropidgtfs_precomputed_departures"."arrival_datetime" as "ropidgtfs_precomputed_departures.arrival_datetime",
|
|
119
|
+
"ropidgtfs_precomputed_departures"."departure_time" as "ropidgtfs_precomputed_departures.departure_time",
|
|
120
|
+
"ropidgtfs_precomputed_departures"."departure_datetime" as "ropidgtfs_precomputed_departures.departure_datetime",
|
|
121
|
+
"ropidgtfs_precomputed_departures"."stop_id" as "ropidgtfs_precomputed_departures.stop_id",
|
|
122
|
+
"ropidgtfs_precomputed_departures"."stop_name" as "ropidgtfs_precomputed_departures.stop_name",
|
|
123
|
+
"ropidgtfs_precomputed_departures"."platform_code" as "ropidgtfs_precomputed_departures.platform_code",
|
|
124
|
+
"ropidgtfs_precomputed_departures"."wheelchair_boarding" as "ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
125
|
+
"ropidgtfs_precomputed_departures"."min_stop_sequence" as "ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
126
|
+
"ropidgtfs_precomputed_departures"."max_stop_sequence" as "ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
127
|
+
"ropidgtfs_precomputed_departures"."trip_id" as "ropidgtfs_precomputed_departures.trip_id",
|
|
128
|
+
"ropidgtfs_precomputed_departures"."trip_headsign" as "ropidgtfs_precomputed_departures.trip_headsign",
|
|
129
|
+
"ropidgtfs_precomputed_departures"."trip_short_name" as "ropidgtfs_precomputed_departures.trip_short_name",
|
|
130
|
+
"ropidgtfs_precomputed_departures"."wheelchair_accessible" as "ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
131
|
+
"ropidgtfs_precomputed_departures"."service_id" as "ropidgtfs_precomputed_departures.service_id",
|
|
132
|
+
"ropidgtfs_precomputed_departures"."date" as "ropidgtfs_precomputed_departures.date",
|
|
133
|
+
"ropidgtfs_precomputed_departures"."route_short_name" as "ropidgtfs_precomputed_departures.route_short_name",
|
|
134
|
+
"ropidgtfs_precomputed_departures"."route_type" as "ropidgtfs_precomputed_departures.route_type",
|
|
135
|
+
"ropidgtfs_precomputed_departures"."route_id" as "ropidgtfs_precomputed_departures.route_id",
|
|
136
|
+
"ropidgtfs_precomputed_departures"."is_night" as "ropidgtfs_precomputed_departures.is_night",
|
|
137
|
+
"ropidgtfs_precomputed_departures"."is_regional" as "ropidgtfs_precomputed_departures.is_regional",
|
|
138
|
+
"ropidgtfs_precomputed_departures"."is_substitute_transport" as "ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
139
|
+
"ropidgtfs_precomputed_departures"."next_stop_sequence" as "ropidgtfs_precomputed_departures.next_stop_sequence",
|
|
140
|
+
"ropidgtfs_precomputed_departures"."next_stop_id" as "ropidgtfs_precomputed_departures.next_stop_id",
|
|
141
|
+
"ropidgtfs_precomputed_departures"."last_stop_sequence" as "ropidgtfs_precomputed_departures.last_stop_sequence",
|
|
142
|
+
"ropidgtfs_precomputed_departures"."last_stop_id" as "ropidgtfs_precomputed_departures.last_stop_id",
|
|
143
|
+
x.*,
|
|
144
|
+
cis_stop.cis_stop_platform_code as "cis_stop_platform_code",
|
|
145
|
+
run.run_number as "run.run_number"
|
|
146
|
+
from
|
|
147
|
+
"ropidgtfs_precomputed_departures" as "ropidgtfs_precomputed_departures"
|
|
148
|
+
left join "ropidgtfs_run_numbers" as run on
|
|
149
|
+
"ropidgtfs_precomputed_departures"."trip_id" = run.trip_id
|
|
150
|
+
and "ropidgtfs_precomputed_departures"."service_id" = run.service_id
|
|
151
|
+
left outer join v_vehiclepositions_trip_position_vehicle_info as x on
|
|
152
|
+
"ropidgtfs_precomputed_departures"."trip_id" = x."trip.gtfs_trip_id"
|
|
153
|
+
left join vehiclepositions_cis_stops as cis_stop on
|
|
154
|
+
cis_stop.rt_trip_id = x."trip.id"
|
|
155
|
+
and cis_stop.cis_stop_group_id = "ropidgtfs_precomputed_departures"."cis_stop_group_id"
|
|
156
|
+
) departure_boards_detailed
|
|
157
|
+
where
|
|
158
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id" = ANY(STRING_TO_ARRAY(stopsIds,','))
|
|
159
|
+
and (
|
|
160
|
+
(
|
|
161
|
+
(
|
|
162
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
163
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
164
|
+
)
|
|
165
|
+
and
|
|
166
|
+
(
|
|
167
|
+
0 = isNegativeMinutesBefore
|
|
168
|
+
or ( -- pro záporné minutes before
|
|
169
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" >= departure_boards_detailed."trip.last_position.last_stop_sequence"
|
|
170
|
+
or departure_boards_detailed."trip.last_position.last_stop_sequence" IS null
|
|
171
|
+
)
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
)
|
|
175
|
+
or (
|
|
176
|
+
departure_boards_detailed."trip.is_canceled" = true
|
|
177
|
+
and
|
|
178
|
+
(
|
|
179
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
180
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
181
|
+
)
|
|
182
|
+
)
|
|
183
|
+
) and
|
|
184
|
+
(
|
|
185
|
+
(mode = 1 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1' and departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" != departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence")) -- mode default/departures
|
|
186
|
+
or (mode=2 and (departure_boards_detailed."ropidgtfs_precomputed_departures.drop_off_type" != '1' and departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" != departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence")) -- mode arrivals
|
|
187
|
+
or (mode=3 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1')) -- mode mixed
|
|
188
|
+
);
|
|
189
|
+
$$;
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
drop function get_departures;
|
|
2
|
+
create function get_departures (
|
|
3
|
+
stopsIds varchar,
|
|
4
|
+
mode int,
|
|
5
|
+
dateDepartureBetweenStart timestamptz,
|
|
6
|
+
dateDepartureBetweenEnd timestamptz,
|
|
7
|
+
isNegativeMinutesBefore int,
|
|
8
|
+
dateCanceledDepartureBetweenStart timestamptz,
|
|
9
|
+
dateCanceledDepartureBetweenEnd timestamptz,
|
|
10
|
+
airconditioninfoenabled int
|
|
11
|
+
)
|
|
12
|
+
returns table (
|
|
13
|
+
departure_datetime_real timestamptz,
|
|
14
|
+
arrival_datetime_real timestamptz,
|
|
15
|
+
stop_sequence int2,
|
|
16
|
+
stop_headsign varchar(70),
|
|
17
|
+
arrival_datetime timestamptz,
|
|
18
|
+
departure_datetime timestamptz,
|
|
19
|
+
stop_id varchar(25),
|
|
20
|
+
platform_code varchar(10),
|
|
21
|
+
wheelchair_boarding int2,
|
|
22
|
+
min_stop_sequence int2,
|
|
23
|
+
max_stop_sequence int2,
|
|
24
|
+
trip_id varchar(50),
|
|
25
|
+
trip_headsign varchar(100),
|
|
26
|
+
trip_short_name varchar(30),
|
|
27
|
+
wheelchair_accessible int2,
|
|
28
|
+
route_short_name varchar(50),
|
|
29
|
+
route_type int2,
|
|
30
|
+
route_id varchar(20),
|
|
31
|
+
is_night bpchar(1),
|
|
32
|
+
is_regional bpchar(1),
|
|
33
|
+
is_substitute_transport bpchar(1),
|
|
34
|
+
next_stop_id varchar(30),
|
|
35
|
+
delay_seconds int4,
|
|
36
|
+
real_wheelchair_accessible bool,
|
|
37
|
+
is_canceled bool,
|
|
38
|
+
"trip.gtfs_trip_short_name" varchar(255),
|
|
39
|
+
"trip.gtfs_date" date,
|
|
40
|
+
"trip.internal_route_name" varchar(50),
|
|
41
|
+
"trip.internal_run_number" int4,
|
|
42
|
+
"trip.start_timestamp" timestamptz,
|
|
43
|
+
"trip.last_position.last_stop_id" varchar(255),
|
|
44
|
+
"trip.last_position.last_stop_sequence" int4,
|
|
45
|
+
"trip.last_position.last_stop_name" varchar(255),
|
|
46
|
+
"trip.last_position.this_stop_sequence" int4,
|
|
47
|
+
"trip.cis_stop_platform_code" varchar(15),
|
|
48
|
+
"trip.vehicle_descriptor.is_air_conditioned" bool,
|
|
49
|
+
delay_minutes int4,
|
|
50
|
+
is_delay_available bool,
|
|
51
|
+
run_number int4,
|
|
52
|
+
planned_start_timestamp timestamptz
|
|
53
|
+
|
|
54
|
+
)
|
|
55
|
+
language SQL
|
|
56
|
+
set search_path from current
|
|
57
|
+
as $$
|
|
58
|
+
select
|
|
59
|
+
departure_boards_detailed."computed.departure_datetime_real",
|
|
60
|
+
departure_boards_detailed."computed.arrival_datetime_real",
|
|
61
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence",
|
|
62
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_headsign",
|
|
63
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.arrival_datetime",
|
|
64
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.departure_datetime",
|
|
65
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id",
|
|
66
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.platform_code",
|
|
67
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
68
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
69
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
70
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_id",
|
|
71
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_headsign",
|
|
72
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.trip_short_name",
|
|
73
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
74
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_short_name",
|
|
75
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_type",
|
|
76
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.route_id",
|
|
77
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_night",
|
|
78
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_regional",
|
|
79
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
80
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.next_stop_id",
|
|
81
|
+
departure_boards_detailed."delay_seconds",
|
|
82
|
+
departure_boards_detailed."real_wheelchair_accessible",
|
|
83
|
+
departure_boards_detailed."is_canceled",
|
|
84
|
+
departure_boards_detailed."trip.gtfs_trip_short_name",
|
|
85
|
+
departure_boards_detailed."trip.gtfs_date",
|
|
86
|
+
departure_boards_detailed."trip.internal_route_name",
|
|
87
|
+
departure_boards_detailed."trip.internal_run_number",
|
|
88
|
+
departure_boards_detailed."trip.start_timestamp",
|
|
89
|
+
departure_boards_detailed."trip.last_position.last_stop_id",
|
|
90
|
+
departure_boards_detailed."trip.last_position.last_stop_sequence",
|
|
91
|
+
departure_boards_detailed."trip.last_position.last_stop_name",
|
|
92
|
+
departure_boards_detailed."trip.last_position.this_stop_sequence",
|
|
93
|
+
departure_boards_detailed.cis_stop_platform_code as "trip.cis_stop_platform_code",
|
|
94
|
+
case when airconditioninfoenabled = 1 then departure_boards_detailed."trip.vehicle_descriptor.is_air_conditioned" else NULL end,
|
|
95
|
+
TRUNC(departure_boards_detailed."trip.last_position.delay"::DECIMAL / 60, 0)::int as "delay_minutes",
|
|
96
|
+
case when departure_boards_detailed."trip.last_position.delay" is null then false else true end as "is_delay_available",
|
|
97
|
+
departure_boards_detailed."run.run_number",
|
|
98
|
+
departure_boards_detailed.planned_start_timestamp
|
|
99
|
+
|
|
100
|
+
from (
|
|
101
|
+
select
|
|
102
|
+
("departure_datetime"
|
|
103
|
+
+ MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end))
|
|
104
|
+
- case when (MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)) > MAKE_INTERVAL())
|
|
105
|
+
then least (
|
|
106
|
+
MAKE_INTERVAL(secs => (case when "trip.last_position.delay" is null then 0 else "trip.last_position.delay" end)),
|
|
107
|
+
("departure_datetime" - "arrival_datetime")::interval
|
|
108
|
+
)
|
|
109
|
+
else MAKE_INTERVAL()
|
|
110
|
+
end
|
|
111
|
+
) "computed.departure_datetime_real",
|
|
112
|
+
"arrival_datetime" + MAKE_INTERVAL(secs => (
|
|
113
|
+
CASE WHEN "trip.last_position.delay" IS NULL THEN 0 ELSE "trip.last_position.delay" end
|
|
114
|
+
)) "computed.arrival_datetime_real",
|
|
115
|
+
"ropidgtfs_precomputed_departures"."stop_sequence" as "ropidgtfs_precomputed_departures.stop_sequence",
|
|
116
|
+
"ropidgtfs_precomputed_departures"."stop_headsign" as "ropidgtfs_precomputed_departures.stop_headsign",
|
|
117
|
+
"ropidgtfs_precomputed_departures"."pickup_type" as "ropidgtfs_precomputed_departures.pickup_type",
|
|
118
|
+
"ropidgtfs_precomputed_departures"."drop_off_type" as "ropidgtfs_precomputed_departures.drop_off_type",
|
|
119
|
+
"ropidgtfs_precomputed_departures"."arrival_time" as "ropidgtfs_precomputed_departures.arrival_time",
|
|
120
|
+
"ropidgtfs_precomputed_departures"."arrival_datetime" as "ropidgtfs_precomputed_departures.arrival_datetime",
|
|
121
|
+
"ropidgtfs_precomputed_departures"."departure_time" as "ropidgtfs_precomputed_departures.departure_time",
|
|
122
|
+
"ropidgtfs_precomputed_departures"."departure_datetime" as "ropidgtfs_precomputed_departures.departure_datetime",
|
|
123
|
+
"ropidgtfs_precomputed_departures"."stop_id" as "ropidgtfs_precomputed_departures.stop_id",
|
|
124
|
+
"ropidgtfs_precomputed_departures"."stop_name" as "ropidgtfs_precomputed_departures.stop_name",
|
|
125
|
+
"ropidgtfs_precomputed_departures"."platform_code" as "ropidgtfs_precomputed_departures.platform_code",
|
|
126
|
+
"ropidgtfs_precomputed_departures"."wheelchair_boarding" as "ropidgtfs_precomputed_departures.wheelchair_boarding",
|
|
127
|
+
"ropidgtfs_precomputed_departures"."min_stop_sequence" as "ropidgtfs_precomputed_departures.min_stop_sequence",
|
|
128
|
+
"ropidgtfs_precomputed_departures"."max_stop_sequence" as "ropidgtfs_precomputed_departures.max_stop_sequence",
|
|
129
|
+
"ropidgtfs_precomputed_departures"."trip_id" as "ropidgtfs_precomputed_departures.trip_id",
|
|
130
|
+
"ropidgtfs_precomputed_departures"."trip_headsign" as "ropidgtfs_precomputed_departures.trip_headsign",
|
|
131
|
+
"ropidgtfs_precomputed_departures"."trip_short_name" as "ropidgtfs_precomputed_departures.trip_short_name",
|
|
132
|
+
"ropidgtfs_precomputed_departures"."wheelchair_accessible" as "ropidgtfs_precomputed_departures.wheelchair_accessible",
|
|
133
|
+
"ropidgtfs_precomputed_departures"."service_id" as "ropidgtfs_precomputed_departures.service_id",
|
|
134
|
+
"ropidgtfs_precomputed_departures"."date" as "ropidgtfs_precomputed_departures.date",
|
|
135
|
+
"ropidgtfs_precomputed_departures"."route_short_name" as "ropidgtfs_precomputed_departures.route_short_name",
|
|
136
|
+
"ropidgtfs_precomputed_departures"."route_type" as "ropidgtfs_precomputed_departures.route_type",
|
|
137
|
+
"ropidgtfs_precomputed_departures"."route_id" as "ropidgtfs_precomputed_departures.route_id",
|
|
138
|
+
"ropidgtfs_precomputed_departures"."is_night" as "ropidgtfs_precomputed_departures.is_night",
|
|
139
|
+
"ropidgtfs_precomputed_departures"."is_regional" as "ropidgtfs_precomputed_departures.is_regional",
|
|
140
|
+
"ropidgtfs_precomputed_departures"."is_substitute_transport" as "ropidgtfs_precomputed_departures.is_substitute_transport",
|
|
141
|
+
"ropidgtfs_precomputed_departures"."next_stop_sequence" as "ropidgtfs_precomputed_departures.next_stop_sequence",
|
|
142
|
+
"ropidgtfs_precomputed_departures"."next_stop_id" as "ropidgtfs_precomputed_departures.next_stop_id",
|
|
143
|
+
"ropidgtfs_precomputed_departures"."last_stop_sequence" as "ropidgtfs_precomputed_departures.last_stop_sequence",
|
|
144
|
+
"ropidgtfs_precomputed_departures"."last_stop_id" as "ropidgtfs_precomputed_departures.last_stop_id",
|
|
145
|
+
plan_start.planned_departure AS planned_start_timestamp,
|
|
146
|
+
x.*,
|
|
147
|
+
cis_stop.cis_stop_platform_code as "cis_stop_platform_code",
|
|
148
|
+
run.run_number as "run.run_number"
|
|
149
|
+
from
|
|
150
|
+
"ropidgtfs_precomputed_departures" as "ropidgtfs_precomputed_departures"
|
|
151
|
+
left join "ropidgtfs_run_numbers" as run on
|
|
152
|
+
"ropidgtfs_precomputed_departures"."trip_id" = run.trip_id
|
|
153
|
+
and "ropidgtfs_precomputed_departures"."service_id" = run.service_id
|
|
154
|
+
left outer join v_vehiclepositions_trip_position_vehicle_info as x on
|
|
155
|
+
"ropidgtfs_precomputed_departures"."trip_id" = x."trip.gtfs_trip_id"
|
|
156
|
+
left join lateral (
|
|
157
|
+
select pd.departure_datetime as planned_departure
|
|
158
|
+
from ropidgtfs_precomputed_departures pd
|
|
159
|
+
where pd.trip_id = "ropidgtfs_precomputed_departures".trip_id
|
|
160
|
+
and pd.date = "ropidgtfs_precomputed_departures".date
|
|
161
|
+
and pd.stop_sequence = 1
|
|
162
|
+
limit 1
|
|
163
|
+
) as plan_start on true
|
|
164
|
+
left join vehiclepositions_cis_stops as cis_stop on
|
|
165
|
+
cis_stop.rt_trip_id = x."trip.id"
|
|
166
|
+
and cis_stop.cis_stop_group_id = "ropidgtfs_precomputed_departures"."cis_stop_group_id"
|
|
167
|
+
) departure_boards_detailed
|
|
168
|
+
where
|
|
169
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_id" = ANY(STRING_TO_ARRAY(stopsIds,','))
|
|
170
|
+
and (
|
|
171
|
+
(
|
|
172
|
+
(
|
|
173
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
174
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateDepartureBetweenStart and dateDepartureBetweenEnd)
|
|
175
|
+
)
|
|
176
|
+
and
|
|
177
|
+
(
|
|
178
|
+
0 = isNegativeMinutesBefore
|
|
179
|
+
or ( -- pro záporné minutes before
|
|
180
|
+
departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" >= departure_boards_detailed."trip.last_position.last_stop_sequence"
|
|
181
|
+
or departure_boards_detailed."trip.last_position.last_stop_sequence" IS null
|
|
182
|
+
)
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
)
|
|
186
|
+
or (
|
|
187
|
+
departure_boards_detailed."trip.is_canceled" = true
|
|
188
|
+
and
|
|
189
|
+
(
|
|
190
|
+
(mode = 1 and departure_boards_detailed."computed.arrival_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
191
|
+
or (mode != 1 and departure_boards_detailed."computed.departure_datetime_real" between dateCanceledDepartureBetweenStart and dateCanceledDepartureBetweenEnd)
|
|
192
|
+
)
|
|
193
|
+
)
|
|
194
|
+
) and
|
|
195
|
+
(
|
|
196
|
+
(mode = 1 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1' and departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" != departure_boards_detailed."ropidgtfs_precomputed_departures.max_stop_sequence")) -- mode default/departures
|
|
197
|
+
or (mode=2 and (departure_boards_detailed."ropidgtfs_precomputed_departures.drop_off_type" != '1' and departure_boards_detailed."ropidgtfs_precomputed_departures.stop_sequence" != departure_boards_detailed."ropidgtfs_precomputed_departures.min_stop_sequence")) -- mode arrivals
|
|
198
|
+
or (mode=3 and (departure_boards_detailed."ropidgtfs_precomputed_departures.pickup_type" != '1')) -- mode mixed
|
|
199
|
+
);
|
|
200
|
+
$$;
|
|
@@ -20,7 +20,6 @@ class VehiclePositionsController extends controllers_1.BaseController {
|
|
|
20
20
|
const dataBatches = this.splitData(inputData);
|
|
21
21
|
for (const batch of dataBatches) {
|
|
22
22
|
await this.sendMessageToExchange("input." + this.queuePrefix + ".saveDataToDB", JSON.stringify(batch), {
|
|
23
|
-
persistent: true,
|
|
24
23
|
timestamp: new Date().getTime(),
|
|
25
24
|
});
|
|
26
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VehiclePositionsController.js","sourceRoot":"","sources":["../../../src/input-gateway/vehicle-positions/VehiclePositionsController.ts"],"names":[],"mappings":";;;AAAA,kFAA0D;AAG1D,wEAAqE;AACrE,8EAA8E;AAC9E,8DAA6E;AAC7E,6EAA8F;AAC9F,mFAAkF;AAElF,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAa,0BAA2B,SAAQ,4BAAc;IAM1D;QACI,KAAK,CACD,oCAAgB,CAAC,IAAI,EACrB,IAAI,uCAAmB,CAAC,oCAAgB,CAAC,IAAI,GAAG,YAAY,EAAE,oCAAgB,CAAC,oBAAoB,CAAC,CACvG,CAAC;QAMN;;WAEG;QACI,gBAAW,GAAG,KAAK,EAAE,SAA2B,EAAiB,EAAE;YACtE,IAAI;gBACA,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB;gBAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC9C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;oBAC7B,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;wBACnG,
|
|
1
|
+
{"version":3,"file":"VehiclePositionsController.js","sourceRoot":"","sources":["../../../src/input-gateway/vehicle-positions/VehiclePositionsController.ts"],"names":[],"mappings":";;;AAAA,kFAA0D;AAG1D,wEAAqE;AACrE,8EAA8E;AAC9E,8DAA6E;AAC7E,6EAA8F;AAC9F,mFAAkF;AAElF,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,MAAa,0BAA2B,SAAQ,4BAAc;IAM1D;QACI,KAAK,CACD,oCAAgB,CAAC,IAAI,EACrB,IAAI,uCAAmB,CAAC,oCAAgB,CAAC,IAAI,GAAG,YAAY,EAAE,oCAAgB,CAAC,oBAAoB,CAAC,CACvG,CAAC;QAMN;;WAEG;QACI,gBAAW,GAAG,KAAK,EAAE,SAA2B,EAAiB,EAAE;YACtE,IAAI;gBACA,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB;gBAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gBAC9C,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;oBAC7B,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;wBACnG,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;qBAClC,CAAC,CAAC;iBACN;aACJ;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;oBACrC,MAAM,GAAG,CAAC;iBACb;qBAAM;oBACH,MAAM,IAAI,6BAAY,CAAC,oCAAoC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;iBACrF;aACJ;QACL,CAAC,CAAC;QAEM,cAAS,GAAG,CAAC,IAAsB,EAAsB,EAAE;YAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;YAED,MAAM,MAAM,GAAuB,EAAE,CAAC;YACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE;gBAChF,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;gBAClD,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;aACvC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QArCE,MAAM,MAAM,GAAG,2BAAqB,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC;QACpF,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,4CAA4C,EAAE,kBAAkB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;CAmCJ;AAjDD,gEAiDC"}
|
package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DelayComputationRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.ts"],"names":[],"mappings":";;;AAAA,yEAA2D;AAC3D,qCAA2D;AAM3D,iIAAoG;AACpG,wFAA6F;AAE7F,wEAAqE;AACrE,wFAAqF;AACrF,6EAAwE;AACxE,mFAAkF;
|
|
1
|
+
{"version":3,"file":"DelayComputationRedisRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,7 @@
|
|
|
1
1
|
export declare const MPS_TO_KMH = 3.6;
|
|
2
|
+
/**
|
|
3
|
+
* The ratio of the lock timeout to the refresh interval.
|
|
4
|
+
* This is used to determine how long to wait before refreshing the lock.
|
|
5
|
+
* The refresh interval checks if the lock is still held and if not, it will reset the lock timeout.
|
|
6
|
+
*/
|
|
7
|
+
export declare const LOCK_REFRESH_INTERVAL_RATIO = 0.65;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MPS_TO_KMH = void 0;
|
|
3
|
+
exports.LOCK_REFRESH_INTERVAL_RATIO = exports.MPS_TO_KMH = void 0;
|
|
4
4
|
exports.MPS_TO_KMH = 3.6;
|
|
5
|
+
/**
|
|
6
|
+
* The ratio of the lock timeout to the refresh interval.
|
|
7
|
+
* This is used to determine how long to wait before refreshing the lock.
|
|
8
|
+
* The refresh interval checks if the lock is still held and if not, it will reset the lock timeout.
|
|
9
|
+
*/
|
|
10
|
+
exports.LOCK_REFRESH_INTERVAL_RATIO = 0.65;
|
|
5
11
|
//# sourceMappingURL=const.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,GAAG,CAAC"}
|
|
1
|
+
{"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,GAAG,CAAC;AAE9B;;;;GAIG;AACU,QAAA,2BAA2B,GAAG,IAAI,CAAC"}
|
package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.d.ts
CHANGED
|
@@ -9,8 +9,14 @@ export declare class GenerateFilesTask extends AbstractEmptyTask {
|
|
|
9
9
|
private readonly gtfsRtRedisRepository;
|
|
10
10
|
private readonly alertsGenerator;
|
|
11
11
|
private readonly vehicleDescriptor;
|
|
12
|
+
private lockTimeout;
|
|
13
|
+
private refreshInterval;
|
|
12
14
|
constructor(queuePrefix: string);
|
|
13
15
|
protected execute(): Promise<void>;
|
|
16
|
+
private readStopTimeIds;
|
|
17
|
+
private speedMpsToKmh;
|
|
18
|
+
private feedEntityFromTripData;
|
|
19
|
+
protected generateFiles(): Promise<void>;
|
|
14
20
|
/**
|
|
15
21
|
* Get rid of vehicle descriptors with duplicate IDs from a given GTFS-RT message
|
|
16
22
|
*
|
|
@@ -43,4 +49,5 @@ export declare class GenerateFilesTask extends AbstractEmptyTask {
|
|
|
43
49
|
private validateAndSaveBuffer;
|
|
44
50
|
private shouldFallbackToScheduleTime;
|
|
45
51
|
private handleCanceledTrip;
|
|
52
|
+
private createMutex;
|
|
46
53
|
}
|
package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js
CHANGED
|
@@ -23,12 +23,16 @@ const workers_1 = require("@golemio/core/dist/integration-engine/workers");
|
|
|
23
23
|
const WebhookDecorators_1 = require("@golemio/core/dist/integration-engine/workers/helpers/WebhookDecorators");
|
|
24
24
|
const CloudflareCachePurgeWebhook_1 = require("@golemio/core/dist/integration-engine/workers/webhooks/CloudflareCachePurgeWebhook");
|
|
25
25
|
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
26
|
+
const connectors_1 = require("@golemio/core/dist/integration-engine/connectors");
|
|
27
|
+
const redis_semaphore_1 = require("@golemio/core/dist/shared/redis-semaphore");
|
|
28
|
+
const promises_1 = require("node:timers/promises");
|
|
26
29
|
const ovapi_gtfs_realtime_bindings_1 = require("@golemio/ovapi-gtfs-realtime-bindings");
|
|
27
30
|
const const_1 = require("../../../../../const");
|
|
28
31
|
const GtfsRtRedisRepository_1 = require("../data-access/GtfsRtRedisRepository");
|
|
29
32
|
const AlertsGenerator_1 = require("../helpers/AlertsGenerator");
|
|
30
33
|
const VehicleDescriptor_1 = require("../helpers/VehicleDescriptor");
|
|
31
34
|
const const_2 = require("../helpers/const");
|
|
35
|
+
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
32
36
|
class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
33
37
|
constructor(queuePrefix) {
|
|
34
38
|
super(queuePrefix);
|
|
@@ -44,14 +48,41 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
44
48
|
const vymiRoutesRepository = new ropid_vymi_1.RopidVYMIEventsRoutesModel();
|
|
45
49
|
this.alertsGenerator = new AlertsGenerator_1.AlertsGenerator(GenerateFilesTask.config, this.gtfsRtRedisRepository, jisEventsRepository, vymiEventsRepository, vymiRoutesRepository);
|
|
46
50
|
this.vehicleDescriptor = new VehicleDescriptor_1.VehicleDescriptor();
|
|
51
|
+
// should finish under 10 seconds
|
|
52
|
+
this.lockTimeout = GenerateFilesTask.config.getValue("module.pid.vehicle-positions.gtfsRealtime.mutexLockTimeout", 10000);
|
|
53
|
+
this.refreshInterval = this.lockTimeout * const_2.LOCK_REFRESH_INTERVAL_RATIO;
|
|
47
54
|
}
|
|
48
55
|
async execute() {
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
const mutex = this.createMutex();
|
|
57
|
+
const lockAcquired = await mutex.tryAcquire();
|
|
58
|
+
if (!lockAcquired) {
|
|
59
|
+
this.logger.info(`${this.constructor.name}: mutex lock was not acquired, other task instance is running.`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const startTimeMs = Date.now();
|
|
63
|
+
try {
|
|
64
|
+
await this.generateFiles();
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
if (err instanceof golemio_errors_1.AbstractGolemioError) {
|
|
68
|
+
throw err;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
throw new golemio_errors_1.GeneralError("Error while processing task to generate files for GTFS-RT.", this.constructor.name, err);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
await mutex.release();
|
|
76
|
+
}
|
|
77
|
+
const ellapsedTimeInMs = Date.now() - startTimeMs;
|
|
78
|
+
const outrunLockTimeoutMsg = ellapsedTimeInMs > this.lockTimeout ? "Slow" : "OK";
|
|
79
|
+
this.logger.warn(`${this.constructor.name}: finished in ${ellapsedTimeInMs}ms = ${outrunLockTimeoutMsg}.`);
|
|
80
|
+
if (ellapsedTimeInMs < this.refreshInterval) {
|
|
81
|
+
await (0, promises_1.setTimeout)(Math.abs(this.refreshInterval - ellapsedTimeInMs));
|
|
82
|
+
}
|
|
83
|
+
integration_engine_1.QueueManager.sendMessageToExchange(this.queuePrefix, this.queueName, {});
|
|
84
|
+
}
|
|
85
|
+
readStopTimeIds(tripData) {
|
|
55
86
|
const stopTimesIds = [];
|
|
56
87
|
for (const tripRecord of tripData) {
|
|
57
88
|
const { id } = this.vehicleDescriptor.getVehicleDescriptor(tripRecord);
|
|
@@ -59,6 +90,37 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
59
90
|
stopTimesIds.push(`${id}-${tripRecord.gtfs_trip_id}`);
|
|
60
91
|
}
|
|
61
92
|
}
|
|
93
|
+
return stopTimesIds;
|
|
94
|
+
}
|
|
95
|
+
speedMpsToKmh(speed) {
|
|
96
|
+
return speed ? parseFloat((speed / const_2.MPS_TO_KMH).toFixed(2)) : null;
|
|
97
|
+
}
|
|
98
|
+
feedEntityFromTripData(tripRecord, entityTimestamp, tripDescriptor, vehicleDescriptor) {
|
|
99
|
+
const feedEntity = {
|
|
100
|
+
id: tripRecord.id,
|
|
101
|
+
vehicle: {
|
|
102
|
+
currentStopSequence: tripRecord.last_position.last_stop_sequence,
|
|
103
|
+
position: {
|
|
104
|
+
bearing: tripRecord.last_position.bearing,
|
|
105
|
+
latitude: tripRecord.last_position.lat,
|
|
106
|
+
longitude: tripRecord.last_position.lng,
|
|
107
|
+
speed: this.speedMpsToKmh(tripRecord.last_position.speed),
|
|
108
|
+
},
|
|
109
|
+
timestamp: entityTimestamp,
|
|
110
|
+
trip: tripDescriptor,
|
|
111
|
+
vehicle: vehicleDescriptor,
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
return feedEntity;
|
|
115
|
+
}
|
|
116
|
+
async generateFiles() {
|
|
117
|
+
const currentDate = new Date();
|
|
118
|
+
const tripData = await this.tripsRepository.findAllForGTFSRt(currentDate);
|
|
119
|
+
const feedHeader = this.createFeedHeader();
|
|
120
|
+
const updatesMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
|
|
121
|
+
const positionsMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
|
|
122
|
+
const pidFeedMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
|
|
123
|
+
const stopTimesIds = this.readStopTimeIds(tripData);
|
|
62
124
|
if (stopTimesIds.length === 0) {
|
|
63
125
|
this.logger.warn("No stop time ids found for GTFS-RT generation. Most likely no vehicles are running.");
|
|
64
126
|
return;
|
|
@@ -96,22 +158,7 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
96
158
|
const shouldSkipTripUpdate = stopTimeUpdates.every((el) => el.scheduleRelationship === ovapi_gtfs_realtime_bindings_1.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.NO_DATA ||
|
|
97
159
|
gtfsTripIdMap[tripRecord.gtfs_trip_id]);
|
|
98
160
|
entityTripStarts.push(tripRecord.start_timestamp);
|
|
99
|
-
const positionEntity =
|
|
100
|
-
id: tripRecord.id,
|
|
101
|
-
vehicle: {
|
|
102
|
-
currentStopSequence: tripRecord.last_position.last_stop_sequence,
|
|
103
|
-
position: {
|
|
104
|
-
bearing: tripRecord.last_position.bearing,
|
|
105
|
-
latitude: tripRecord.last_position.lat,
|
|
106
|
-
longitude: tripRecord.last_position.lng,
|
|
107
|
-
speed: tripRecord.last_position.speed &&
|
|
108
|
-
parseFloat((tripRecord.last_position.speed / const_2.MPS_TO_KMH).toFixed(2)),
|
|
109
|
-
},
|
|
110
|
-
timestamp: entityTimestamp,
|
|
111
|
-
trip: tripDescriptor,
|
|
112
|
-
vehicle: vehicleDescriptor,
|
|
113
|
-
},
|
|
114
|
-
};
|
|
161
|
+
const positionEntity = this.feedEntityFromTripData(tripRecord, entityTimestamp, tripDescriptor, vehicleDescriptor);
|
|
115
162
|
const positionsMessageEntity = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedEntity.fromObject(positionEntity);
|
|
116
163
|
positionsMessage.entity.push(positionsMessageEntity);
|
|
117
164
|
feedMessageEntity = structuredClone(positionsMessageEntity);
|
|
@@ -142,10 +189,16 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
142
189
|
}
|
|
143
190
|
this.removeDuplicateVehicleDescriptors(positionsMessage, entityTripStarts);
|
|
144
191
|
this.removeDuplicateVehicleDescriptors(pidFeedMessage, entityTripStarts, { shouldRemoveVehicleOnly: true });
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
192
|
+
const results = await Promise.allSettled([
|
|
193
|
+
this.validateAndSaveBuffer("trip_updates", updatesMessage),
|
|
194
|
+
this.validateAndSaveBuffer("vehicle_positions", positionsMessage),
|
|
195
|
+
this.validateAndSaveBuffer("pid_feed", pidFeedMessage),
|
|
196
|
+
this.alertsGenerator.generateAlerts(feedHeader),
|
|
197
|
+
]);
|
|
198
|
+
const rejectedPromise = results.find((result) => result.status === "rejected");
|
|
199
|
+
if (rejectedPromise) {
|
|
200
|
+
throw rejectedPromise.reason;
|
|
201
|
+
}
|
|
149
202
|
}
|
|
150
203
|
/**
|
|
151
204
|
* Get rid of vehicle descriptors with duplicate IDs from a given GTFS-RT message
|
|
@@ -249,7 +302,7 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
249
302
|
const header = {
|
|
250
303
|
gtfsRealtimeVersion: "2.0",
|
|
251
304
|
incrementality: ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedHeader.Incrementality.FULL_DATASET,
|
|
252
|
-
timestamp: Math.round(
|
|
305
|
+
timestamp: Math.round(Date.now() / 1000),
|
|
253
306
|
};
|
|
254
307
|
return ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedHeader.fromObject(header);
|
|
255
308
|
}
|
|
@@ -264,15 +317,15 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
264
317
|
("0" + startTimestamp.getUTCDate()).slice(-2);
|
|
265
318
|
return formattedDate;
|
|
266
319
|
}
|
|
267
|
-
validateAndSaveBuffer(feedName, message) {
|
|
320
|
+
async validateAndSaveBuffer(feedName, message) {
|
|
268
321
|
const feedMessageVerificationResult = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.verify(message);
|
|
269
322
|
if (feedMessageVerificationResult !== null) {
|
|
270
323
|
this.logger.error(new golemio_errors_1.GeneralError(`Invalid GTFS-RT message for feed '${feedName}'`, this.constructor.name, feedMessageVerificationResult, undefined, "pid"));
|
|
271
324
|
return;
|
|
272
325
|
}
|
|
273
326
|
const buffer = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.encode(message).finish();
|
|
274
|
-
this.gtfsRtRedisRepository.set(feedName + "_timestamp", message.header.timestamp);
|
|
275
|
-
this.gtfsRtRedisRepository.hset(feedName + ".pb", buffer.toString("binary"));
|
|
327
|
+
await this.gtfsRtRedisRepository.set(feedName + "_timestamp", message.header.timestamp);
|
|
328
|
+
await this.gtfsRtRedisRepository.hset(feedName + ".pb", buffer.toString("binary"));
|
|
276
329
|
}
|
|
277
330
|
shouldFallbackToScheduleTime(vehiclePosition) {
|
|
278
331
|
return ((vehiclePosition.state_position === const_1.StatePositionEnum.BEFORE_TRACK ||
|
|
@@ -298,6 +351,17 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
298
351
|
updatesMessage.entity.push(feedEntity);
|
|
299
352
|
return feedEntity;
|
|
300
353
|
}
|
|
354
|
+
createMutex() {
|
|
355
|
+
const redisClient = connectors_1.RedisConnector.getConnection();
|
|
356
|
+
return new redis_semaphore_1.Mutex(redisClient, this.queueName, {
|
|
357
|
+
acquireAttemptsLimit: 1,
|
|
358
|
+
lockTimeout: this.lockTimeout,
|
|
359
|
+
refreshInterval: this.refreshInterval,
|
|
360
|
+
onLockLost: (err) => {
|
|
361
|
+
this.logger.info(`${this.constructor.name}: mutex lock was lost, will be generated in next task run.`);
|
|
362
|
+
},
|
|
363
|
+
});
|
|
364
|
+
}
|
|
301
365
|
}
|
|
302
366
|
exports.GenerateFilesTask = GenerateFilesTask;
|
|
303
367
|
GenerateFilesTask.config = Di_2.VPContainer.resolve(CoreToken_1.CoreToken.SimpleConfig);
|
package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateFilesTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GenerateFilesTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,0EAA4D;AAC5D,+CAA8C;AAC9C,6EAAkE;AAElE,uDAAkF;AAClF,wCAA2D;AAC3D,oEAA8E;AAC9E,yFAA8G;AAI9G,wEAAqE;AAErE,mEAA2E;AAC3E,2EAAkF;AAClF,+GAA4G;AAC5G,oIAAiI;AACjI,6EAA8F;AAC9F,iFAAkF;AAClF,+EAAkE;AAClE,mDAA2D;AAC3D,wFAAyF;AACzF,gDAA8C;AAE9C,gFAA6E;AAC7E,gEAA6D;AAC7D,oEAAiE;AACjE,4CAA2E;AAQ3E,8EAAqE;AAIrE,MAAa,iBAAkB,SAAQ,2BAAiB;IAgBpD,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QAdP,cAAS,GAAG,eAAe,CAAC;QAC5B,aAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;QAc/C,IAAI,CAAC,MAAM,GAAG,gBAAW,CAAC,OAAO,CAAU,oBAAc,CAAC,MAAM,CAAC,CAAC;QAElE,2CAA2C;QAC3C,MAAM,mBAAmB,GAAG,iBAAY,CAAC,OAAO,CAAsB,qCAAiB,CAAC,mBAAmB,CAAC,CAAC;QAC7G,IAAI,CAAC,kBAAkB,GAAG,gBAAW,CAAC,OAAO,CACzC,mCAAgB,CAAC,6BAA6B,CACjD,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,IAAI,iCAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,qBAAqB,GAAG,IAAI,6CAAqB,EAAE,CAAC;QAEzD,MAAM,oBAAoB,GAAG,IAAI,iCAAoB,EAAE,CAAC;QACxD,MAAM,oBAAoB,GAAG,IAAI,uCAA0B,EAAE,CAAC;QAC9D,IAAI,CAAC,eAAe,GAAG,IAAI,iCAAe,CACtC,iBAAiB,CAAC,MAAM,EACxB,IAAI,CAAC,qBAAqB,EAC1B,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,CACvB,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,qCAAiB,EAAE,CAAC;QAEjD,iCAAiC;QACjC,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAChD,4DAA4D,EAC5D,KAAM,CACC,CAAC;QAEZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,GAAG,mCAA2B,CAAC;IAC1E,CAAC;IASe,AAAN,KAAK,CAAC,OAAO;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QAE9C,IAAI,CAAC,YAAY,EAAE;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,gEAAgE,CAAC,CAAC;YAC3G,OAAO;SACV;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI;YACA,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;SAC9B;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,YAAY,qCAAoB,EAAE;gBACrC,MAAM,GAAG,CAAC;aACb;iBAAM;gBACH,MAAM,IAAI,6BAAY,CAAC,4DAA4D,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACpH;SACJ;gBAAS;YACN,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;SACzB;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;QAClD,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACjF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,iBAAiB,gBAAgB,QAAQ,oBAAoB,GAAG,CAAC,CAAC;QAC3G,IAAI,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE;YACzC,MAAM,IAAA,qBAAK,EAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,CAAC,CAAC;SAClE;QAED,iCAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAEO,eAAe,CAAC,QAA0B;QAC9C,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,UAAU,IAAI,QAAQ,EAAE;YAC/B,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YACvE,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE;gBACxB,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;aACzD;SACJ;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;IAEO,aAAa,CAAC,KAAoB;QACtC,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,GAAG,kBAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtE,CAAC;IAEO,sBAAsB,CAC1B,UAA0B,EAC1B,eAAuB,EACvB,cAA+B,EAC/B,iBAAqC;QAErC,MAAM,UAAU,GAAgB;YAC5B,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,OAAO,EAAE;gBACL,mBAAmB,EAAE,UAAU,CAAC,aAAa,CAAC,kBAAkB;gBAChE,QAAQ,EAAE;oBACN,OAAO,EAAE,UAAU,CAAC,aAAa,CAAC,OAAO;oBACzC,QAAQ,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG;oBACtC,SAAS,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG;oBACvC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC;iBAC5D;gBACD,SAAS,EAAE,eAAe;gBAC1B,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,iBAAiB;aAC7B;SACJ,CAAC;QACF,OAAO,UAAU,CAAC;IACtB,CAAC;IAES,KAAK,CAAC,aAAa;QACzB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAE/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,+CAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/E,MAAM,gBAAgB,GAAG,+CAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QACjF,MAAM,cAAc,GAAG,+CAAY,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAE/E,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEpD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;YACxG,OAAO;SACV;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QACrF,MAAM,aAAa,GAA4B,EAAE,CAAC;QAClD,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,KAAK,MAAM,UAAU,IAAI,QAAQ,EAAE;YAC/B,IAAI,oBAAoB,GAA4B,SAAS,CAAC;YAC9D,IAAI,iBAAiB,GAAwC,SAAS,CAAC;YACvE,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAClF,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;YACzG,IAAI,UAAU,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;gBACjF,oBAAoB,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;gBAC5F,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;gBAC9C,yFAAyF;aAC5F;iBAAM;gBACH,MAAM,cAAc,GAAoB;oBACpC,oBAAoB,EAAE,+CAAY,CAAC,cAAc,CAAC,oBAAoB,CAAC,SAAS;oBAChF,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,eAAe,CAAC;oBAC/D,SAAS,EAAE,UAAU,CAAC,UAAU;oBAChC,MAAM,EAAE,UAAU,CAAC,YAAY;oBAC/B,OAAO,EAAE,UAAU,CAAC,aAAa;iBACpC,CAAC;gBAEF,IAAI,eAAe,GAAsB,EAAE,CAAC;gBAC5C,IAAI,OAAO,iBAAiB,CAAC,EAAE,KAAK,QAAQ,EAAE;oBAC1C,MAAM,mBAAmB,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,EAAE,IAAI,UAAU,CAAC,YAAY,EAAE,CAAE,CAAC;oBACjG,eAAe,GAAG,IAAI,CAAC,sBAAsB,CACzC,UAAU,CAAC,eAAe,EAC1B,mBAAmB,EACnB,UAAU,CAAC,aAAa,CAC3B,CAAC;iBACL;qBAAM;oBACH,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,IAAI,6BAAY,CACZ;gCACI,UAAU,CAAC,YAAY,GAAG,EAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,SAAS,EACT,SAAS,EACT,KAAK,CACR,CACJ,CAAC;iBACL;gBAED,MAAM,oBAAoB,GAAG,eAAe,CAAC,KAAK,CAC9C,CAAC,EAAE,EAAE,EAAE,CACH,EAAE,CAAC,oBAAoB,KAAK,+CAAY,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CAAC,OAAO;oBAC/F,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,CAC7C,CAAC;gBAEF,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;gBAClD,MAAM,cAAc,GAAG,IAAI,CAAC,sBAAsB,CAC9C,UAAU,EACV,eAAe,EACf,cAAc,EACd,iBAAiB,CACpB,CAAC;gBACF,MAAM,sBAAsB,GAAG,+CAAY,CAAC,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gBAClF,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACrD,iBAAiB,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAC;gBAE5D,IAAI,CAAC,oBAAoB,EAAE;oBACvB,MAAM,UAAU,GAAG;wBACf,cAAc,EAAE,eAAe;wBAC/B,SAAS,EAAE,eAAe;wBAC1B,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,iBAAiB;qBAC7B,CAAC;oBAEF,MAAM,YAAY,GAAgB;wBAC9B,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,UAAU;qBACb,CAAC;oBAEF,MAAM,oBAAoB,GAAG,+CAAY,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;oBAC9E,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;oBACjD,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;oBAC9C,iBAAiB,CAAC,UAAU,GAAG,UAAU,CAAC;iBAC7C;aACJ;YAED,IAAI,iBAAiB,EAAE;gBACnB,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACjD;iBAAM,IAAI,oBAAoB,EAAE;gBAC7B,4EAA4E;gBAC5E,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aACpD;SACJ;QAED,IAAI,CAAC,iCAAiC,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;QAC3E,IAAI,CAAC,iCAAiC,CAAC,cAAc,EAAE,gBAAgB,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5G,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YACrC,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,cAAc,CAAC;YAC1D,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;YACjE,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,cAAc,CAAC;YACtD,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,UAAU,CAAC;SAClD,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAmC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;QAChH,IAAI,eAAe,EAAE;YACjB,MAAM,eAAe,CAAC,MAAM,CAAC;SAChC;IACL,CAAC;IAED;;;;;;;;;OASG;IACK,iCAAiC,CACrC,OAAkC,EAClC,gBAA0B,EAC1B,UAAiD;QAC7C,uBAAuB,EAAE,KAAK;KACjC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACjB,OAAO;SACV;QACD,MAAM,wBAAwB,GAA+B,EAAE,CAAC;QAChE,MAAM,oCAAoC,GAA+B,EAAE,CAAC;QAC5E,MAAM,8BAA8B,GAAmC,IAAI,GAAG,EAAE,CAAC;QACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC;YACtD,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,SAAS,KAAK,IAAI,EAAE;gBACpB,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzC;iBAAM,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBACvD,8BAA8B,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;aAC9E;iBAAM;gBACH,MAAM,YAAY,GAAG,IAAI,CAAC,oCAAoC,CAC1D,8BAA8B,EAC9B,SAAS,EACT,MAAM,EACN,eAAe,CAClB,CAAC;gBACF,IAAI,OAAO,CAAC,uBAAuB,EAAE;oBACjC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,GAAG,oBAAoB,EAAE,GAAG,YAAY,CAAC;oBACjE,IAAI,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE;wBAC/D,oCAAoC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;qBACnE;iBACJ;aACJ;SACJ;QACD,OAAO,CAAC,MAAM,GAAG,wBAAwB,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;QACvF,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,8BAA8B,CAAC,MAAM,EAAE;YAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClG,CAAC;IAED;;;;;;;;;OASG;IACK,oCAAoC,CACxC,8BAA8D,EAC9D,SAAiB,EACjB,MAAgC,EAChC,eAAqB;QAErB,MAAM,OAAO,GAAG,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;QAC/D,MAAM,8BAA8B,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,oBAAoB,IAAI,IAAI,CAAC;QAC1F,IACI,8BAA8B,KAAK,+CAAY,CAAC,cAAc,CAAC,oBAAoB,CAAC,QAAQ;YAC5F,eAAe,GAAG,OAAO,CAAC,eAAe,EAC3C;YACE,8BAA8B,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;YAC3E,OAAO,OAAO,CAAC,MAAM,CAAC;SACzB;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,sBAAsB,CAC1B,SAA4B,EAC5B,SAAoC,EACpC,eAAgD;QAEhD,MAAM,eAAe,GAAsB,EAAE,CAAC;QAE9C,4FAA4F;QAC5F,0GAA0G;QAC1G,oHAAoH;QACpH,MAAM,4BAA4B,GAAG,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;QAExF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;YAC9B,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC;YAC9C,IAAI,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC;YAEzC,IAAI,SAAS,KAAK,kCAAiB,CAAC,KAAK,EAAE;gBACvC,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CAAC;aACjD;YAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;YACjG,MAAM,cAAc,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;YAEnG,eAAe,CAAC,IAAI,CAAC;gBACjB,OAAO,EAAE;oBACL,KAAK,EAAE,YAAY;iBACtB;gBACD,SAAS,EAAE;oBACP,KAAK,EAAE,cAAc;iBACxB;gBACD,GAAG,CAAC,YAAY,KAAK,IAAI;oBACrB,cAAc,KAAK,IAAI,IAAI;oBACvB,oBAAoB,EAAE,+CAAY,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CAAC,OAAO;iBAC5F,CAAC;gBACN,YAAY,EAAE,QAAQ,CAAC,QAAQ;gBAC/B,MAAM,EAAE,QAAQ,CAAC,OAAO;gBACxB,uCAAuC,EAAE;oBACrC,GAAG,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,CAAC;oBACzC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,CAAC;iBACtC;aACJ,CAAC,CAAC;SACN;QAED,OAAO,eAAe,CAAC;IAC3B,CAAC;IAEO,gBAAgB;QACpB,MAAM,MAAM,GAAgB;YACxB,mBAAmB,EAAE,KAAK;YAC1B,cAAc,EAAE,+CAAY,CAAC,UAAU,CAAC,cAAc,CAAC,YAAY;YACnE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;SAC3C,CAAC;QAEF,OAAO,+CAAY,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,SAAiB;QACzC,MAAM,cAAc,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,aAAa,GACf,cAAc,CAAC,cAAc,EAAE;YAC/B,CAAC,GAAG,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC,GAAG,GAAG,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,OAAO,aAAa,CAAC;IACzB,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,QAAgB,EAAE,OAAiC;QACnF,MAAM,6BAA6B,GAAG,+CAAY,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/E,IAAI,6BAA6B,KAAK,IAAI,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,IAAI,6BAAY,CACZ,qCAAqC,QAAQ,GAAG,EAChD,IAAI,CAAC,WAAW,CAAC,IAAI,EACrB,6BAA6B,EAC7B,SAAS,EACT,KAAK,CACR,CACJ,CAAC;YACF,OAAO;SACV;QAED,MAAM,MAAM,GAAG,+CAAY,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAY,CAAC;QAE3E,MAAM,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxF,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvF,CAAC;IAEO,4BAA4B,CAAC,eAAgD;QACjF,OAAO,CACH,CAAC,eAAe,CAAC,cAAc,KAAK,yBAAiB,CAAC,YAAY;YAC9D,eAAe,CAAC,cAAc,KAAK,yBAAiB,CAAC,oBAAoB,CAAC;YAC9E,CAAC,eAAe,CAAC,KAAK,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,KAAK,IAAI,CAAC,CAClE,CAAC;IACN,CAAC;IAEO,kBAAkB,CACtB,UAA0B,EAC1B,SAAiB,EACjB,cAAwC;QAExC,MAAM,UAAU,GAAG;YACf,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,UAAU,EAAE;gBACR,cAAc,EAAE,IAAI;gBACpB,SAAS;gBACT,IAAI,EAAE;oBACF,oBAAoB,EAAE,+CAAY,CAAC,cAAc,CAAC,oBAAoB,CAAC,QAAQ;oBAC/E,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,eAAe,CAAC;oBAC/D,SAAS,EAAE,UAAU,CAAC,UAAU;oBAChC,MAAM,EAAE,UAAU,CAAC,YAAY;oBAC/B,OAAO,EAAE,UAAU,CAAC,aAAa;iBACpC;gBACD,OAAO,EAAE,IAAI;aAChB;SACJ,CAAC;QAEF,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC;IACtB,CAAC;IAEO,WAAW;QACf,MAAM,WAAW,GAAG,2BAAc,CAAC,aAAa,EAAE,CAAC;QACnD,OAAO,IAAI,uBAAK,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE;YAC1C,oBAAoB,EAAE,CAAC;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,4DAA4D,CAAC,CAAC;YAC3G,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;;AAzcL,8CA0cC;AAzc2B,wBAAM,GAAkB,gBAAW,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,AAA5E,CAA6E;AAsD3F;IAPf,qCAAiB,CAAC,KAAK,CACpB,IAAI,yDAA2B,CAC3B,MAAM,CAAC,MAAM,CACT,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAyB,yCAAyC,EAAE,EAAE,CAAC,CAC3G,CACJ,CACJ;;;;gDA+BA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PropagateTrainDelayTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.ts"],"names":[],"mappings":";;;AACA,sDAA2D;AAC3D,gGAAqF;AAErF,wEAAqE;AAErE,mEAAuF;AACvF,mEAAyD;AAGzD,mFAAqF;AACrF,sFAAmF;AAEnF,MAAa,uBAAwB,SAAQ,uDAAqD;IAU9F,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QAVP,cAAS,GAAG,qBAAqB,CAAC;QAClC,aAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;QACtC,WAAM,GAAG,0DAA8B,CAAC;QAiEhD,sBAAiB,GAAG,KAAK,EAC7B,aAAiC,EACjC,eAAuB,EACI,EAAE;YAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;gBAC5C,UAAU,EAAE,CAAC,cAAc,CAAC;gBAC5B,KAAK,EAAE;oBACH,aAAa,EAAE,aAAa;oBAC5B,eAAe,EAAE,EAAE,CAAC,cAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE;iBAChD;gBACD,KAAK,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBACnC,GAAG,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,OAAO,IAAI,EAAE,YAAY,CAAC;QAC9B,CAAC,CAAC;QAvEE,IAAI,CAAC,MAAM,GAAG,gCAA0B,CAAC,OAAO,CAAU,qBAAS,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,oBAAoB,GAAG,uBAAkB,CAAC,OAAO,CAClD,iDAAuB,CAAC,yBAAyB,CACpD,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,gCAA0B,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CACnD,sEAAsE,EACtE,CAAC,CACM,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,KAAgC;QACpD,KAAK,MAAM,gBAAgB,IAAI,KAAK,CAAC,IAAI,EAAE;YACvC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,2BAA2B,EAAE,eAAe,EAAE,aAAa,EAAE,GAC9F,gBAAgB,CAAC,IAAI,CAAC;YAC1B,IAAI;gBACA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;gBAEpF,IAAI,CAAC,cAAc,EAAE;oBACjB,SAAS;iBACZ;gBACD,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,aAAc,CAAC,CAAsB,CAAC;gBAEhG,MAAM,mBAAmB,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;gBACpF,MAAM,iBAAiB,GAAG,YAAY,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;gBACjF,MAAM,yBAAyB,GAC3B,mBAAmB,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC;gBAErF,MAAM,IAAI,CAAC,yBAAyB,CAAC;oBACjC,iBAAiB,EAAE,YAAY;oBAC/B,kBAAkB,EAAE,aAAa,IAAI,IAAI;oBACzC,sBAAsB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,eAAe;oBACjE,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,cAAc;oBACtD,yBAAyB,EAAE,2BAA2B;oBACtD,gBAAgB,EAAE,eAAe;oBACjC,cAAc,EAAE,aAAc;oBAC9B,cAAc,EAAE,gBAAgB,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"PropagateTrainDelayTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.ts"],"names":[],"mappings":";;;AACA,sDAA2D;AAC3D,gGAAqF;AAErF,wEAAqE;AAErE,mEAAuF;AACvF,mEAAyD;AAGzD,mFAAqF;AACrF,sFAAmF;AAEnF,MAAa,uBAAwB,SAAQ,uDAAqD;IAU9F,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QAVP,cAAS,GAAG,qBAAqB,CAAC;QAClC,aAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;QACtC,WAAM,GAAG,0DAA8B,CAAC;QAiEhD,sBAAiB,GAAG,KAAK,EAC7B,aAAiC,EACjC,eAAuB,EACI,EAAE;YAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;gBAC5C,UAAU,EAAE,CAAC,cAAc,CAAC;gBAC5B,KAAK,EAAE;oBACH,aAAa,EAAE,aAAa;oBAC5B,eAAe,EAAE,EAAE,CAAC,cAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE;iBAChD;gBACD,KAAK,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBACnC,GAAG,EAAE,IAAI;aACZ,CAAC,CAAC;YAEH,OAAO,IAAI,EAAE,YAAY,CAAC;QAC9B,CAAC,CAAC;QAvEE,IAAI,CAAC,MAAM,GAAG,gCAA0B,CAAC,OAAO,CAAU,qBAAS,CAAC,MAAM,CAAC,CAAC;QAC5E,IAAI,CAAC,oBAAoB,GAAG,uBAAkB,CAAC,OAAO,CAClD,iDAAuB,CAAC,yBAAyB,CACpD,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,gCAA0B,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC;QACxF,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CACnD,sEAAsE,EACtE,CAAC,CACM,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,OAAO,CAAC,KAAgC;QACpD,KAAK,MAAM,gBAAgB,IAAI,KAAK,CAAC,IAAI,EAAE;YACvC,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,2BAA2B,EAAE,eAAe,EAAE,aAAa,EAAE,GAC9F,gBAAgB,CAAC,IAAI,CAAC;YAC1B,IAAI;gBACA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;gBAEpF,IAAI,CAAC,cAAc,EAAE;oBACjB,SAAS;iBACZ;gBACD,MAAM,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,aAAc,CAAC,CAAsB,CAAC;gBAEhG,MAAM,mBAAmB,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;gBACpF,MAAM,iBAAiB,GAAG,YAAY,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;gBACjF,MAAM,yBAAyB,GAC3B,mBAAmB,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC;gBAErF,MAAM,IAAI,CAAC,yBAAyB,CAAC;oBACjC,iBAAiB,EAAE,YAAY;oBAC/B,kBAAkB,EAAE,aAAa,IAAI,IAAI;oBACzC,sBAAsB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,eAAe;oBACjE,YAAY,EAAE,gBAAgB,CAAC,QAAQ,CAAC,cAAc;oBACtD,yBAAyB,EAAE,2BAA2B;oBACtD,gBAAgB,EAAE,eAAe;oBACjC,cAAc,EAAE,aAAc;oBAC9B,cAAc,EAAE,gBAAgB,CAAC,QAAQ,CAAC,OAAO;oBACjD,aAAa,EAAE,cAAc;wBACzB,CAAC,CAAC;4BACI;gCACI,OAAO,EAAE,cAAc;gCACvB,yBAAyB,EAAE,yBAAyB;6BACvD;yBACJ;wBACH,CAAC,CAAC,EAAE;oBACR,gBAAgB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,QAAQ;iBACvD,CAAC,CAAC;aACN;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,GAAG,IAAI,CAAC,SAAS,oDAAoD,YAAY,MAAM,GAAG,CAAC,OAAO,EAAE,CACvG,CAAC;aACL;SACJ;IACL,CAAC;CAkBJ;AApFD,0DAoFC"}
|
|
@@ -41,6 +41,7 @@ export interface IPIDDeparture {
|
|
|
41
41
|
"trip.last_position.this_stop_sequence": number | null;
|
|
42
42
|
"trip.cis_stop_platform_code": string | null;
|
|
43
43
|
"trip.vehicle_descriptor.is_air_conditioned"?: boolean | null;
|
|
44
|
+
planned_start_timestamp: string | null;
|
|
44
45
|
}
|
|
45
46
|
export interface ITransferDeparture {
|
|
46
47
|
departure_datetime_real: Date | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/output-gateway/pid/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,4CAA0B;AAC1B,2CAAyB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/output-gateway/pid/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,4CAA0B;AAC1B,2CAAyB;AAiHzB,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,0CAAyB,CAAA;IACzB,sCAAqB,CAAA;IACrB,gCAAe,CAAA;AACnB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,+BAAa,CAAA;IACb,yCAAuB,CAAA;AAC3B,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAED,IAAY,eAQX;AARD,WAAY,eAAe;IACvB,gCAAa,CAAA;IACb,2CAAwB,CAAA;IACxB,0DAAuC,CAAA;IACvC,oDAAiC,CAAA;IACjC,mEAAgD,CAAA;IAChD,qEAAkD,CAAA;IAClD,8EAA2D,CAAA;AAC/D,CAAC,EARW,eAAe,+BAAf,eAAe,QAQ1B;AAED,IAAY,aAMX;AAND,WAAY,aAAa;IACrB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;IACnB,sCAAqB,CAAA;IACrB,mCAAkB,CAAA;IAClB,8BAA8B;AAClC,CAAC,EANW,aAAa,6BAAb,aAAa,QAMxB"}
|
|
@@ -32,13 +32,17 @@ class SkipHelper {
|
|
|
32
32
|
static isVehicleMissing(departure, runScheduleMap, untrackedTrips, nowDate = new Date()) {
|
|
33
33
|
// Not missing if essential trip data is missing or if delay information is available
|
|
34
34
|
if (!("trip.start_timestamp" in departure) ||
|
|
35
|
-
departure["trip.start_timestamp"] === null ||
|
|
36
35
|
departure.run_number === null ||
|
|
37
36
|
departure.route_id === null ||
|
|
38
37
|
departure.is_delay_available) {
|
|
39
38
|
return false;
|
|
40
39
|
}
|
|
41
|
-
|
|
40
|
+
// Use fallback to planned_start_timestamp if trip.start_timestamp is null
|
|
41
|
+
const rawStartTimestamp = departure["trip.start_timestamp"] ?? departure.planned_start_timestamp;
|
|
42
|
+
if (!rawStartTimestamp) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
const startTimestamp = new Date(rawStartTimestamp);
|
|
42
46
|
const minutesToStart = (startTimestamp.getTime() - nowDate.getTime()) / 60000;
|
|
43
47
|
/// Not missing if departure is too far in the future (threshold varies for metro)
|
|
44
48
|
if (this.isOutsideStartThreshold(minutesToStart, departure.route_type)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkipHelper.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/models/helpers/SkipHelper.ts"],"names":[],"mappings":";;;AAAA,uEAA4D;AAG5D,2CAAwC;AACxC,mCAKiB;AAEjB;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAE1C,MAAa,UAAU;IACnB;;;OAGG;IACI,MAAM,CAAC,oBAAoB,CAAC,SAAyB,EAAE,UAAkB;QAC5E,MAAM,aAAa,GAAG,SAAS,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,aAAa,EAAE;YAChB,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC,UAAU,IAAI,UAAU,KAAK,UAAU,CAAC;IACrD,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,SAAyB;QAClD,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC;IACzC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,gBAAgB,CAC1B,SAAyB,EACzB,cAAkD,EAClD,cAAkC,EAClC,OAAO,GAAG,IAAI,IAAI,EAAE;QAEpB,qFAAqF;QACrF,IACI,CAAC,CAAC,sBAAsB,IAAI,SAAS,CAAC;YACtC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"SkipHelper.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/models/helpers/SkipHelper.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,9 @@ flowchart TD;
|
|
|
60
60
|
- Feedy jsou nabízený přes API `/v2/vehiclepositions/gtfsrt/{feed}`, kde `{feed}` je název feedu s příponou `.pb`
|
|
61
61
|
- Žádaný feed se načte pomocí `HGET` a vrátí se jako binární blob. Pokud feed neexistuje, vrátí se 404
|
|
62
62
|
- Pomocný timestamp se načte pomocí `GET` a vrátí se jako hodnota hlavičky `Last-Modified` převedená na ISO string. Pokud timestamp neexistuje, hodnota hlavičky bude unix timestamp 0 jako ISO string. Využívá se především pro monitoring a alerting
|
|
63
|
-
- Feedy se generují 3x za minutu (rabín 2x)
|
|
63
|
+
- Feedy se generují nejméně 3x za minutu (rabín 2x) pomocí queue-message
|
|
64
|
+
- Používají redis-mutex na zamykání, aby neběželo více shodných tasků v jeden okamžik
|
|
65
|
+
- Pokud generování stíhá běžet rychleji, task se snaží do ±7 vteřin svého běhu spustit nové generování souborů (opět přes queue-message).
|
|
64
66
|
|
|
65
67
|
### Flowchart
|
|
66
68
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/pid",
|
|
3
|
-
"version": "3.15.
|
|
3
|
+
"version": "3.15.1-dev.1819157937",
|
|
4
4
|
"description": "Golemio PID Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"@golemio/core": ">=1.16.0-rc.1551191551"
|
|
77
77
|
},
|
|
78
78
|
"dependencies": {
|
|
79
|
-
"@golemio/ovapi-gtfs-realtime-bindings": "1.2.
|
|
79
|
+
"@golemio/ovapi-gtfs-realtime-bindings": "1.2.4-dev.1288219308",
|
|
80
80
|
"@turf/turf": "^6.5.0",
|
|
81
81
|
"cheap-ruler": "^3.0.2",
|
|
82
82
|
"csv-parser": "^3.0.0",
|
|
@@ -84,4 +84,4 @@
|
|
|
84
84
|
"html-entities": "^2.3.3",
|
|
85
85
|
"pg-copy-streams": "^5.1.1"
|
|
86
86
|
}
|
|
87
|
-
}
|
|
87
|
+
}
|