@golemio/pid 3.15.0 → 3.15.1-dev.1824469495
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 +9 -0
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js +109 -39
- 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,16 @@ 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 logFinishTime;
|
|
17
|
+
private readStopTimeIds;
|
|
18
|
+
private speedMpsToKmh;
|
|
19
|
+
private feedEntityFromTripData;
|
|
20
|
+
private stopTimeUpdatesFromVehicleTrip;
|
|
21
|
+
protected generateFiles(): Promise<void>;
|
|
14
22
|
/**
|
|
15
23
|
* Get rid of vehicle descriptors with duplicate IDs from a given GTFS-RT message
|
|
16
24
|
*
|
|
@@ -43,4 +51,5 @@ export declare class GenerateFilesTask extends AbstractEmptyTask {
|
|
|
43
51
|
private validateAndSaveBuffer;
|
|
44
52
|
private shouldFallbackToScheduleTime;
|
|
45
53
|
private handleCanceledTrip;
|
|
54
|
+
private createMutex;
|
|
46
55
|
}
|
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,45 @@ 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
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
56
|
+
const startTimeMs = Date.now();
|
|
57
|
+
const mutex = this.createMutex();
|
|
58
|
+
const lockAcquired = await mutex.tryAcquire();
|
|
59
|
+
if (!lockAcquired) {
|
|
60
|
+
this.logger.info(`${this.constructor.name}: mutex lock was not acquired, other task instance is running.`);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
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
|
+
this.logFinishTime(ellapsedTimeInMs);
|
|
79
|
+
if (ellapsedTimeInMs < this.refreshInterval) {
|
|
80
|
+
await (0, promises_1.setTimeout)(Math.abs(this.refreshInterval - ellapsedTimeInMs));
|
|
81
|
+
}
|
|
82
|
+
integration_engine_1.QueueManager.sendMessageToExchange(this.queuePrefix, this.queueName, {});
|
|
83
|
+
}
|
|
84
|
+
logFinishTime(ellapsedTimeInMs) {
|
|
85
|
+
const outrunLockTimeoutMsg = ellapsedTimeInMs > this.lockTimeout ? "Slow" : "OK";
|
|
86
|
+
const logLevel = ellapsedTimeInMs > this.lockTimeout ? "warn" : "info";
|
|
87
|
+
this.logger[logLevel](`${this.constructor.name}: finished in ${ellapsedTimeInMs}ms = ${outrunLockTimeoutMsg}.`);
|
|
88
|
+
}
|
|
89
|
+
readStopTimeIds(tripData) {
|
|
55
90
|
const stopTimesIds = [];
|
|
56
91
|
for (const tripRecord of tripData) {
|
|
57
92
|
const { id } = this.vehicleDescriptor.getVehicleDescriptor(tripRecord);
|
|
@@ -59,6 +94,47 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
59
94
|
stopTimesIds.push(`${id}-${tripRecord.gtfs_trip_id}`);
|
|
60
95
|
}
|
|
61
96
|
}
|
|
97
|
+
return stopTimesIds;
|
|
98
|
+
}
|
|
99
|
+
speedMpsToKmh(speed) {
|
|
100
|
+
return speed ? parseFloat((speed / const_2.MPS_TO_KMH).toFixed(2)) : null;
|
|
101
|
+
}
|
|
102
|
+
feedEntityFromTripData(tripRecord, entityTimestamp, tripDescriptor, vehicleDescriptor) {
|
|
103
|
+
const feedEntity = {
|
|
104
|
+
id: tripRecord.id,
|
|
105
|
+
vehicle: {
|
|
106
|
+
currentStopSequence: tripRecord.last_position.last_stop_sequence,
|
|
107
|
+
position: {
|
|
108
|
+
bearing: tripRecord.last_position.bearing,
|
|
109
|
+
latitude: tripRecord.last_position.lat,
|
|
110
|
+
longitude: tripRecord.last_position.lng,
|
|
111
|
+
speed: this.speedMpsToKmh(tripRecord.last_position.speed),
|
|
112
|
+
},
|
|
113
|
+
timestamp: entityTimestamp,
|
|
114
|
+
trip: tripDescriptor,
|
|
115
|
+
vehicle: vehicleDescriptor,
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
return feedEntity;
|
|
119
|
+
}
|
|
120
|
+
stopTimeUpdatesFromVehicleTrip(stopTimes, vehicleDescriptor, tripRecord) {
|
|
121
|
+
if (typeof vehicleDescriptor.id === "string") {
|
|
122
|
+
const stopTimesForVehicle = stopTimes.get(`${vehicleDescriptor.id}-${tripRecord.gtfs_trip_id}`);
|
|
123
|
+
const stopTimeUpdates = this.generateStopTimeUpdate(tripRecord.gtfs_route_type, stopTimesForVehicle, tripRecord.last_position);
|
|
124
|
+
return stopTimeUpdates;
|
|
125
|
+
}
|
|
126
|
+
this.logger.error(new golemio_errors_1.GeneralError(`Cannot get stopTimeUpdates for trip with unknown vehicleId and gtfsTripId \
|
|
127
|
+
'${tripRecord.gtfs_trip_id}'`, this.constructor.name, undefined, undefined, "pid"));
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
async generateFiles() {
|
|
131
|
+
const currentDate = new Date();
|
|
132
|
+
const tripData = await this.tripsRepository.findAllForGTFSRt(currentDate);
|
|
133
|
+
const feedHeader = this.createFeedHeader();
|
|
134
|
+
const updatesMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
|
|
135
|
+
const positionsMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
|
|
136
|
+
const pidFeedMessage = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.create({ header: feedHeader });
|
|
137
|
+
const stopTimesIds = this.readStopTimeIds(tripData);
|
|
62
138
|
if (stopTimesIds.length === 0) {
|
|
63
139
|
this.logger.warn("No stop time ids found for GTFS-RT generation. Most likely no vehicles are running.");
|
|
64
140
|
return;
|
|
@@ -84,34 +160,11 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
84
160
|
tripId: tripRecord.gtfs_trip_id,
|
|
85
161
|
routeId: tripRecord.gtfs_route_id,
|
|
86
162
|
};
|
|
87
|
-
|
|
88
|
-
if (typeof vehicleDescriptor.id === "string") {
|
|
89
|
-
const stopTimesForVehicle = stopTimes.get(`${vehicleDescriptor.id}-${tripRecord.gtfs_trip_id}`);
|
|
90
|
-
stopTimeUpdates = this.generateStopTimeUpdate(tripRecord.gtfs_route_type, stopTimesForVehicle, tripRecord.last_position);
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
this.logger.error(new golemio_errors_1.GeneralError(`Cannot get stopTimeUpdates for trip with unknown vehicleId and gtfsTripId \
|
|
94
|
-
'${tripRecord.gtfs_trip_id}'`, this.constructor.name, undefined, undefined, "pid"));
|
|
95
|
-
}
|
|
163
|
+
const stopTimeUpdates = this.stopTimeUpdatesFromVehicleTrip(stopTimes, vehicleDescriptor, tripRecord);
|
|
96
164
|
const shouldSkipTripUpdate = stopTimeUpdates.every((el) => el.scheduleRelationship === ovapi_gtfs_realtime_bindings_1.transit_realtime.TripUpdate.StopTimeUpdate.ScheduleRelationship.NO_DATA ||
|
|
97
165
|
gtfsTripIdMap[tripRecord.gtfs_trip_id]);
|
|
98
166
|
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
|
-
};
|
|
167
|
+
const positionEntity = this.feedEntityFromTripData(tripRecord, entityTimestamp, tripDescriptor, vehicleDescriptor);
|
|
115
168
|
const positionsMessageEntity = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedEntity.fromObject(positionEntity);
|
|
116
169
|
positionsMessage.entity.push(positionsMessageEntity);
|
|
117
170
|
feedMessageEntity = structuredClone(positionsMessageEntity);
|
|
@@ -142,10 +195,16 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
142
195
|
}
|
|
143
196
|
this.removeDuplicateVehicleDescriptors(positionsMessage, entityTripStarts);
|
|
144
197
|
this.removeDuplicateVehicleDescriptors(pidFeedMessage, entityTripStarts, { shouldRemoveVehicleOnly: true });
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
198
|
+
const results = await Promise.allSettled([
|
|
199
|
+
this.validateAndSaveBuffer("trip_updates", updatesMessage),
|
|
200
|
+
this.validateAndSaveBuffer("vehicle_positions", positionsMessage),
|
|
201
|
+
this.validateAndSaveBuffer("pid_feed", pidFeedMessage),
|
|
202
|
+
this.alertsGenerator.generateAlerts(feedHeader),
|
|
203
|
+
]);
|
|
204
|
+
const rejectedPromise = results.find((result) => result.status === "rejected");
|
|
205
|
+
if (rejectedPromise) {
|
|
206
|
+
throw rejectedPromise.reason;
|
|
207
|
+
}
|
|
149
208
|
}
|
|
150
209
|
/**
|
|
151
210
|
* Get rid of vehicle descriptors with duplicate IDs from a given GTFS-RT message
|
|
@@ -249,7 +308,7 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
249
308
|
const header = {
|
|
250
309
|
gtfsRealtimeVersion: "2.0",
|
|
251
310
|
incrementality: ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedHeader.Incrementality.FULL_DATASET,
|
|
252
|
-
timestamp: Math.round(
|
|
311
|
+
timestamp: Math.round(Date.now() / 1000),
|
|
253
312
|
};
|
|
254
313
|
return ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedHeader.fromObject(header);
|
|
255
314
|
}
|
|
@@ -264,15 +323,15 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
264
323
|
("0" + startTimestamp.getUTCDate()).slice(-2);
|
|
265
324
|
return formattedDate;
|
|
266
325
|
}
|
|
267
|
-
validateAndSaveBuffer(feedName, message) {
|
|
326
|
+
async validateAndSaveBuffer(feedName, message) {
|
|
268
327
|
const feedMessageVerificationResult = ovapi_gtfs_realtime_bindings_1.transit_realtime.FeedMessage.verify(message);
|
|
269
328
|
if (feedMessageVerificationResult !== null) {
|
|
270
329
|
this.logger.error(new golemio_errors_1.GeneralError(`Invalid GTFS-RT message for feed '${feedName}'`, this.constructor.name, feedMessageVerificationResult, undefined, "pid"));
|
|
271
330
|
return;
|
|
272
331
|
}
|
|
273
332
|
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"));
|
|
333
|
+
await this.gtfsRtRedisRepository.set(feedName + "_timestamp", message.header.timestamp);
|
|
334
|
+
await this.gtfsRtRedisRepository.hset(feedName + ".pb", buffer.toString("binary"));
|
|
276
335
|
}
|
|
277
336
|
shouldFallbackToScheduleTime(vehiclePosition) {
|
|
278
337
|
return ((vehiclePosition.state_position === const_1.StatePositionEnum.BEFORE_TRACK ||
|
|
@@ -298,6 +357,17 @@ class GenerateFilesTask extends workers_1.AbstractEmptyTask {
|
|
|
298
357
|
updatesMessage.entity.push(feedEntity);
|
|
299
358
|
return feedEntity;
|
|
300
359
|
}
|
|
360
|
+
createMutex() {
|
|
361
|
+
const redisClient = connectors_1.RedisConnector.getConnection();
|
|
362
|
+
return new redis_semaphore_1.Mutex(redisClient, this.queueName, {
|
|
363
|
+
acquireAttemptsLimit: 1,
|
|
364
|
+
lockTimeout: this.lockTimeout,
|
|
365
|
+
refreshInterval: this.refreshInterval,
|
|
366
|
+
onLockLost: (err) => {
|
|
367
|
+
this.logger.info(`${this.constructor.name}: mutex lock was lost, will be generated in next task run.`);
|
|
368
|
+
},
|
|
369
|
+
});
|
|
370
|
+
}
|
|
301
371
|
}
|
|
302
372
|
exports.GenerateFilesTask = GenerateFilesTask;
|
|
303
373
|
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":"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"}
|
|
@@ -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":"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"}
|
|
@@ -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.1824469495",
|
|
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
|
+
}
|