@golemio/pid 5.9.0 → 5.9.1-dev.2451558942
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/example/redis/publicDepartureBoardsMock.json +1 -0
- package/db/migrations/postgresql/20260407151651-add-direction-id-to-precomputed-table.js +53 -0
- package/db/migrations/postgresql/sqls/20260407151651-add-direction-id-to-precomputed-table-down.sql +2 -0
- package/db/migrations/postgresql/sqls/20260407151651-add-direction-id-to-precomputed-table-up.sql +2 -0
- package/dist/helpers/GtfsStopParser.js +1 -0
- package/dist/helpers/GtfsStopParser.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js +3 -1
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/interfaces/IPublicDepartureDto.d.ts +1 -0
- package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.js +1 -0
- package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.js.map +1 -1
- package/dist/output-gateway/pid/helpers/TransferBoardSorter.js +2 -2
- package/dist/output-gateway/pid/helpers/TransferBoardSorter.js.map +1 -1
- package/dist/output-gateway/pid/service/facade/TransferFacade.js +8 -4
- package/dist/output-gateway/pid/service/facade/TransferFacade.js.map +1 -1
- package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.d.ts +1 -1
- package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.js +9 -14
- package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.d.ts +1 -0
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js +4 -0
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel.d.ts +1 -0
- package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IPublicGtfsDepartureCacheDto.d.ts +1 -0
- package/dist/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.js +5 -0
- package/dist/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.js.map +1 -1
- package/docs/asyncapi.yaml +6 -2
- package/docs/cache/types/redis.md +31 -2
- package/docs/implementation_documentation.md +98 -3
- package/docs/jis/index.md +17 -0
- package/docs/processing/input_realtime_data/http_mpvnet.md +21 -0
- package/docs/processing/state_position_tracking/http_mpvnet.md +1 -0
- package/docs/processing/state_position_tracking/tcp_dpp_common.md +1 -0
- package/docs/processing/transferboards_filtering.md +316 -0
- package/package.json +2 -2
|
@@ -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', '20260407151651-add-direction-id-to-precomputed-table-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', '20260407151651-add-direction-id-to-precomputed-table-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
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GtfsStopParser.js","sourceRoot":"","sources":["../../src/helpers/GtfsStopParser.ts"],"names":[],"mappings":";;;AAAA,6EAAwE;AACxE,mEAA8E;AAC9E,oCAAmD;AAEnD,MAAM,YAAY,GAAG,KAAK,CAAC;AAC3B,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnC,MAAa,cAAc;IACf,MAAM,CAAC,cAAc,CAAC,KAAa;QACvC,OAAO,KAAK,IAAI,kBAAU,IAAI,KAAK,IAAI,kBAAU,CAAC;IACtD,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,MAAgB;QACjD,IAAI,eAAe,GAAmB,EAAE,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,SAAS;YACb,CAAC;YACD,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAExD,eAAe,CAAC,IAAI,CAChB,qBAAS,CAAC,GAAG,CACT,qBAAS,CAAC,KAAK,CAAC,qBAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAC3D,SAAS,IAAI,qBAAS,CAAC,KAAK,CAAC,qBAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAC7E,CACJ,CAAC;QACN,CAAC;QACD,OAAO,eAAe,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,KAAa,EAAE,MAAc,EAAE,MAAe;QACvE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1G,MAAM,IAAI,6BAAY,CAAC,mBAAmB,KAAK,EAAE,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,mBAAmB,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QACzH,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,KAAa;QAInC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,KAAa;QACxC,OAAO,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,MAAc;QACzC,OAAO,MAAM;aACR,KAAK,CAAC,gBAAgB,CAAC;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aACzB,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,MAAc;QACzC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"GtfsStopParser.js","sourceRoot":"","sources":["../../src/helpers/GtfsStopParser.ts"],"names":[],"mappings":";;;AAAA,6EAAwE;AACxE,mEAA8E;AAC9E,oCAAmD;AAEnD,MAAM,YAAY,GAAG,KAAK,CAAC;AAC3B,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnC,MAAa,cAAc;IACf,MAAM,CAAC,cAAc,CAAC,KAAa;QACvC,OAAO,KAAK,IAAI,kBAAU,IAAI,KAAK,IAAI,kBAAU,CAAC;IACtD,CAAC;IAEM,MAAM,CAAC,sBAAsB,CAAC,MAAgB;QACjD,IAAI,eAAe,GAAmB,EAAE,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,SAAS;YACb,CAAC;YACD,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YAExD,eAAe,CAAC,IAAI,CAChB,qBAAS,CAAC,GAAG,CACT,qBAAS,CAAC,KAAK,CAAC,qBAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAC3D,SAAS,IAAI,qBAAS,CAAC,KAAK,CAAC,qBAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAC7E,CACJ,CAAC;QACN,CAAC;QACD,OAAO,eAAe,CAAC;IAC3B,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,KAAa,EAAE,MAAc,EAAE,MAAe;QACvE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1G,MAAM,IAAI,6BAAY,CAAC,mBAAmB,KAAK,EAAE,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI,EAAE,mBAAmB,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;QACzH,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,UAAU,CAAC,KAAa;QAInC,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,KAAa;QACxC,OAAO,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,MAAc;QACzC,OAAO,MAAM;aACR,KAAK,CAAC,gBAAgB,CAAC;aACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aACzB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sEAAsE;aAClF,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,MAAc;QACzC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;CACJ;AAvDD,wCAuDC"}
|
|
@@ -78,7 +78,8 @@ let DeparturesRepository = class DeparturesRepository extends models_1.PostgresM
|
|
|
78
78
|
t8."connections" AS trip_connections,
|
|
79
79
|
next_route.route_short_name AS next_route_short_name,
|
|
80
80
|
next_trip.trip_headsign AS next_trip_headsign,
|
|
81
|
-
max_headsign_seq.max_seq_with_headsign AS max_stop_sequence_with_stop_headsign
|
|
81
|
+
max_headsign_seq.max_seq_with_headsign AS max_stop_sequence_with_stop_headsign,
|
|
82
|
+
t2.direction_id
|
|
82
83
|
FROM ropidgtfs_stop_times${sourceTableSuffix} t
|
|
83
84
|
LEFT JOIN ropidgtfs_trips${sourceTableSuffix} t2 ON t.trip_id = t2.trip_id
|
|
84
85
|
INNER JOIN ropidgtfs_precomputed_services_calendar_tmp t4 ON t2.service_id = t4.service_id
|
|
@@ -175,6 +176,7 @@ let DeparturesRepository = class DeparturesRepository extends models_1.PostgresM
|
|
|
175
176
|
"trip_headsign_icons",
|
|
176
177
|
"trip_connections",
|
|
177
178
|
"wheelchair_accessible",
|
|
179
|
+
"direction_id",
|
|
178
180
|
],
|
|
179
181
|
where: {
|
|
180
182
|
departure_datetime: {
|
package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,uEAA4D;AAG5D,gEAAuC;AACvC,8FAAqE;AAErE,wEAAqE;AAErE,yEAAqF;AACrF,6EAAwE;AACxE,mFAAkF;AAClF,mEAAiF;AACjF,iEAAwE;AACxE,+EAA4E;AAGrE,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,sBAAa;IACnD,YACoC,MAA6B,EACnC,MAAuB;QAEjD,KAAK,CACD,sBAAsB,EACtB;YACI,WAAW,EAAE,6BAAe,CAAC,UAAU;YACvC,QAAQ,EAAE,iBAAS;YACnB,yBAAyB,EAAE,6BAAe,CAAC,cAAc;YACzD,kBAAkB,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC;YACtD,UAAU,EAAE,YAAY;SAC3B,EACD,IAAI,uCAAmB,CAAC,sBAAsB,EAAE,6BAAe,CAAC,UAAU,CAAC,CAC9E,CAAC;QAbsC,WAAM,GAAN,MAAM,CAAe;QAC3B,WAAM,GAAN,MAAM,CAAS;QAe9C,sBAAiB,GAAG,KAAK,EAAE,iBAAwC,EAAiB,EAAE;YACzF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;YACpE,MAAM,qBAAqB,GACvB,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,4EAA4E,CAAC,CAAC,CAAC,EAAE,CAAC;YAE3G,4BAA4B;YAC5B,MAAM,GAAG,GAAG
|
|
1
|
+
{"version":3,"file":"DeparturesRepository.js","sourceRoot":"","sources":["../../../../../src/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.ts"],"names":[],"mappings":"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"}
|
package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.js
CHANGED
|
@@ -30,6 +30,7 @@ let PublicDepartureCacheTransformation = class PublicDepartureCacheTransformatio
|
|
|
30
30
|
trip_headsign_icons: inputDto.trip_headsign_icons ?? null,
|
|
31
31
|
connections: inputDto.trip_connections ?? null,
|
|
32
32
|
wheelchair_accessible: inputDto.wheelchair_accessible ?? null,
|
|
33
|
+
direction_id: inputDto.direction_id ?? null,
|
|
33
34
|
};
|
|
34
35
|
return outputDto;
|
|
35
36
|
};
|
package/dist/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublicDepartureCacheTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.ts"],"names":[],"mappings":";;;;;;;;;AACA,6GAA0G;AAC1G,iEAAgE;AAIzD,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,+CAGvD;IAHM;;QAII,SAAI,GAAG,oCAAoC,CAAC;QAEzC,sBAAiB,GAAG,CAAC,QAA6B,EAAE,EAAE;YAC5D,MAAM,SAAS,GAAiC;gBAC5C,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,WAAW,EAAE;gBAC7D,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,IAAI;gBAClE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;gBAC3C,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa;gBAC/D,6FAA6F;gBAC7F,wFAAwF;gBACxF,8EAA8E;gBAC9E,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,IAAI,IAAI;gBACzD,WAAW,EAAE,QAAQ,CAAC,gBAAgB,IAAI,IAAI;gBAC9C,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,IAAI,IAAI;
|
|
1
|
+
{"version":3,"file":"PublicDepartureCacheTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.ts"],"names":[],"mappings":";;;;;;;;;AACA,6GAA0G;AAC1G,iEAAgE;AAIzD,IAAM,kCAAkC,GAAxC,MAAM,kCAAmC,SAAQ,+CAGvD;IAHM;;QAII,SAAI,GAAG,oCAAoC,CAAC;QAEzC,sBAAiB,GAAG,CAAC,QAA6B,EAAE,EAAE;YAC5D,MAAM,SAAS,GAAiC;gBAC5C,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,CAAC,WAAW,EAAE;gBAC7D,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,EAAE,WAAW,EAAE,IAAI,IAAI;gBAClE,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;gBAC3C,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,aAAa,EAAE,QAAQ,CAAC,aAAa;gBACrC,aAAa,EAAE,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa;gBAC/D,6FAA6F;gBAC7F,wFAAwF;gBACxF,8EAA8E;gBAC9E,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,IAAI,IAAI;gBACzD,WAAW,EAAE,QAAQ,CAAC,gBAAgB,IAAI,IAAI;gBAC9C,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,IAAI,IAAI;gBAC7D,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,IAAI;aAC9C,CAAC;YAEF,OAAO,SAAS,CAAC;QACrB,CAAC,CAAC;IACN,CAAC;CAAA,CAAA;AA5BY,gFAAkC;6CAAlC,kCAAkC;IAD9C,IAAA,qBAAU,GAAE;GACA,kCAAkC,CA4B9C"}
|
|
@@ -45,8 +45,8 @@ TransferBoardSorter.compareFns = {
|
|
|
45
45
|
return 1;
|
|
46
46
|
},
|
|
47
47
|
directionIdAsc: (a, b) => {
|
|
48
|
-
const aDirectionId = a.
|
|
49
|
-
const bDirectionId = b.
|
|
48
|
+
const aDirectionId = a.departure.direction_id;
|
|
49
|
+
const bDirectionId = b.departure.direction_id;
|
|
50
50
|
if (aDirectionId !== bDirectionId)
|
|
51
51
|
return aDirectionId ? -1 : 1;
|
|
52
52
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransferBoardSorter.js","sourceRoot":"","sources":["../../../../src/output-gateway/pid/helpers/TransferBoardSorter.ts"],"names":[],"mappings":";;;;AAAA,oEAA4D;AAG5D,MAAa,mBAAmB;IACrB,MAAM,CAAC,cAAc,CAAC,UAAoC;QAC7D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,KAAK,MAAM,SAAS,IAAI,EAAmB,CAAC,iBAAiB,EAAE,CAAC;gBAC5D,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,IAAI,GAAG,KAAK,CAAC;oBAAE,OAAO,GAAG,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACP,CAAC;;AATL,kDAiDC;;AAtC2B,8BAAU,GAAqF;IACnH,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,kCAAiB,CAAC,KAAK,CAAC;QACpE,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,kCAAiB,CAAC,KAAK,CAAC;QACpE,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACb,CAAC;IACD,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,kCAAiB,CAAC,KAAK,CAAC;QACpE,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,kCAAiB,CAAC,KAAK,CAAC;QACpE,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,KAAK,IAAI;YACtG,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC;IACb,CAAC;IACD,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC;QAC3D,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC;QAC3D,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;YAC3B,OAAO,UAAU,GAAG,UAAU,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC;IACb,CAAC;IACD,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrB,MAAM,YAAY,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"TransferBoardSorter.js","sourceRoot":"","sources":["../../../../src/output-gateway/pid/helpers/TransferBoardSorter.ts"],"names":[],"mappings":";;;;AAAA,oEAA4D;AAG5D,MAAa,mBAAmB;IACrB,MAAM,CAAC,cAAc,CAAC,UAAoC;QAC7D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,KAAK,MAAM,SAAS,IAAI,EAAmB,CAAC,iBAAiB,EAAE,CAAC;gBAC5D,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,IAAI,GAAG,KAAK,CAAC;oBAAE,OAAO,GAAG,CAAC;YAC9B,CAAC;YACD,OAAO,CAAC,CAAC;QACb,CAAC,CAAC,CAAC;IACP,CAAC;;AATL,kDAiDC;;AAtC2B,8BAAU,GAAqF;IACnH,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,kCAAiB,CAAC,KAAK,CAAC;QACpE,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,kCAAiB,CAAC,KAAK,CAAC;QACpE,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACb,CAAC;IACD,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnB,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,kCAAiB,CAAC,KAAK,CAAC;QACpE,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,UAAU,KAAK,kCAAiB,CAAC,KAAK,CAAC;QACpE,IAAI,QAAQ,IAAI,QAAQ,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,gBAAgB,KAAK,IAAI;YACtG,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC;IACb,CAAC;IACD,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC;QAC3D,MAAM,UAAU,GAAG,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC;QAC3D,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;YAC3B,OAAO,UAAU,GAAG,UAAU,CAAC;QACnC,CAAC;QACD,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC,CAAC;QAC3B,OAAO,CAAC,CAAC;IACb,CAAC;IACD,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrB,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;QAC9C,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC;QAC9C,IAAI,YAAY,KAAK,YAAY;YAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,CAAC;IACb,CAAC;CACJ,AA9BiC,CA8BhC;AAEsB,qCAAiB,GAAG;IACxC,EAAI,CAAC,UAAU,CAAC,UAAU;IAC1B,EAAI,CAAC,UAAU,CAAC,YAAY;IAC5B,EAAI,CAAC,UAAU,CAAC,gBAAgB;IAChC,EAAI,CAAC,UAAU,CAAC,cAAc;CACjC,AALwC,CAKvC"}
|
|
@@ -94,11 +94,14 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
|
|
|
94
94
|
}
|
|
95
95
|
return 0;
|
|
96
96
|
}
|
|
97
|
-
static isDifferentLine(departure,
|
|
98
|
-
if (!departure.trip_id || departure.trip_id ===
|
|
97
|
+
static isDifferentLine(departure, currentArrival) {
|
|
98
|
+
if (!departure.trip_id || departure.trip_id === currentArrival.trip_id) {
|
|
99
99
|
return false; // leftover data OR same trip = remove itself
|
|
100
100
|
}
|
|
101
|
-
|
|
101
|
+
const isSameLine = departure.route_short_name === currentArrival.route_short_name && departure.route_type === currentArrival.route_type;
|
|
102
|
+
if (isSameLine && departure.direction_id != null && departure.direction_id !== currentArrival.direction_id) {
|
|
103
|
+
return false; // same line, opposite direction = not a relevant transfer
|
|
104
|
+
}
|
|
102
105
|
return true;
|
|
103
106
|
}
|
|
104
107
|
static allowedTransfers(departures, currentStopId, stopIds) {
|
|
@@ -182,7 +185,7 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
|
|
|
182
185
|
throw new golemio_errors_1.GeneralError("Failed to publicGtfsDepartureCache", this.constructor.name, error, 500);
|
|
183
186
|
}
|
|
184
187
|
// Remove current line (and trip) from departureEntities
|
|
185
|
-
departureEntities = departureEntities.filter((departure) => TransferFacade_1.isDifferentLine(departure,
|
|
188
|
+
departureEntities = departureEntities.filter((departure) => TransferFacade_1.isDifferentLine(departure, currentArrival));
|
|
186
189
|
// Remove departures of disallowed route-types on stops with different name(s)
|
|
187
190
|
departureEntities = TransferFacade_1.allowedTransfers(departureEntities, currentStop.stop_id, sameNameStopIds);
|
|
188
191
|
departureEntities.sort(TransferFacade_1.sortByDepartureTime);
|
|
@@ -251,6 +254,7 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
|
|
|
251
254
|
stop_sequence: departureAtStopId.stop_sequence,
|
|
252
255
|
platform_code: null,
|
|
253
256
|
stop_icons: departureAtStopId.stop_icons,
|
|
257
|
+
direction_id: currentPosition.detailed_info.direction_id,
|
|
254
258
|
};
|
|
255
259
|
}
|
|
256
260
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransferFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/service/facade/TransferFacade.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TransferFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/service/facade/TransferFacade.ts"],"names":[],"mappings":"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"}
|
package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.js
CHANGED
|
@@ -23,22 +23,22 @@ let TransferDepartureCacheTransformation = class TransferDepartureCacheTransform
|
|
|
23
23
|
const directionIdCache = new Map();
|
|
24
24
|
const res = [];
|
|
25
25
|
for (const { departure, position, stopTime } of data) {
|
|
26
|
+
const directionId = this.resolveDirectionId(departure, position, directionIdCache);
|
|
27
|
+
const routeDirectionKey = `${departure.route_short_name}-${departure.route_type}-${directionId}`;
|
|
26
28
|
if (departure.route_type === RouteTypeEnums_1.GTFSRouteTypeEnum.METRO) {
|
|
27
|
-
const
|
|
28
|
-
const dep = departures.get(departureRouteIdentifier);
|
|
29
|
+
const dep = departures.get(routeDirectionKey);
|
|
29
30
|
if (dep) {
|
|
30
31
|
if (dep.departure_timestamp.minutes.length >= 2) {
|
|
31
32
|
continue;
|
|
32
33
|
}
|
|
33
34
|
dep.departure_timestamp.minutes.push(this.calculateDepartureMinutes(departure.predictedDepartureDate));
|
|
34
|
-
departures.set(
|
|
35
|
+
departures.set(routeDirectionKey, dep);
|
|
35
36
|
}
|
|
36
37
|
else {
|
|
37
|
-
departures.set(
|
|
38
|
+
departures.set(routeDirectionKey, this.transformInternal({ departure, position, stopTime }));
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
41
|
else {
|
|
41
|
-
const routeDirectionKey = this.getRouteDirectionKey(departure, position, directionIdCache);
|
|
42
42
|
const currentCount = routeDirectionCount.get(routeDirectionKey) ?? 0;
|
|
43
43
|
if (currentCount >= 2) {
|
|
44
44
|
continue;
|
|
@@ -80,16 +80,11 @@ let TransferDepartureCacheTransformation = class TransferDepartureCacheTransform
|
|
|
80
80
|
}
|
|
81
81
|
return departure_minutes.toString();
|
|
82
82
|
}
|
|
83
|
-
|
|
83
|
+
resolveDirectionId(departure, position, directionIdCache) {
|
|
84
84
|
const cacheKey = `${departure.route_short_name}_${departure.trip_headsign}`;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
else {
|
|
90
|
-
directionId = directionIdCache.get(cacheKey) ?? 0;
|
|
91
|
-
}
|
|
92
|
-
return `${departure.route_short_name}-${directionId}`;
|
|
85
|
+
const directionId = departure.direction_id ?? position?.detailed_info?.direction_id ?? directionIdCache.get(cacheKey) ?? 0;
|
|
86
|
+
directionIdCache.set(cacheKey, directionId);
|
|
87
|
+
return directionId;
|
|
93
88
|
}
|
|
94
89
|
};
|
|
95
90
|
exports.TransferDepartureCacheTransformation = TransferDepartureCacheTransformation;
|
package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransferDepartureCacheTransformation.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.ts"],"names":[],"mappings":";;;;;;;;;AAAA,uEAA4D;AAC5D,yFAAwF;AAGxF,4CAAuE;AACvE,6GAA0G;AAC1G,iEAAgE;AAChE,oEAAiE;AAG1D,IAAM,oCAAoC,GAA1C,MAAM,oCAAqC,SAAQ,+CAGzD;IAHM;;QAII,SAAI,GAAG,sCAAsC,CAAC;QAE9C,mBAAc,GAAG,CAAC,IAA8B,EAAmC,EAAE;YACxF,MAAM,UAAU,GAA+C,IAAI,GAAG,EAAE,CAAC;YACzE,MAAM,mBAAmB,GAAwB,IAAI,GAAG,EAAE,CAAC;YAC3D,MAAM,gBAAgB,GAAwB,IAAI,GAAG,EAAE,CAAC;YACxD,MAAM,GAAG,GAAoC,EAAE,CAAC;YAEhD,KAAK,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;gBACnD,
|
|
1
|
+
{"version":3,"file":"TransferDepartureCacheTransformation.js","sourceRoot":"","sources":["../../../../../src/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,7 @@ export declare class DeparturesModel extends Model<DeparturesModel> implements I
|
|
|
22
22
|
trip_headsign: string;
|
|
23
23
|
trip_short_name: string | null;
|
|
24
24
|
wheelchair_accessible: number | null;
|
|
25
|
+
direction_id: number | null;
|
|
25
26
|
service_id: string | null;
|
|
26
27
|
date: string | null;
|
|
27
28
|
route_short_name: string | null;
|
|
@@ -38,6 +38,7 @@ DeparturesModel.attributeModel = {
|
|
|
38
38
|
},
|
|
39
39
|
trip_short_name: sequelize_1.DataTypes.STRING(50),
|
|
40
40
|
wheelchair_accessible: sequelize_1.DataTypes.SMALLINT,
|
|
41
|
+
direction_id: sequelize_1.DataTypes.SMALLINT,
|
|
41
42
|
service_id: sequelize_1.DataTypes.STRING(30),
|
|
42
43
|
date: sequelize_1.DataTypes.DATE,
|
|
43
44
|
route_short_name: sequelize_1.DataTypes.STRING(50),
|
|
@@ -102,6 +103,9 @@ DeparturesModel.jsonSchema = {
|
|
|
102
103
|
wheelchair_boarding: {
|
|
103
104
|
type: "integer",
|
|
104
105
|
},
|
|
106
|
+
direction_id: {
|
|
107
|
+
type: "integer",
|
|
108
|
+
},
|
|
105
109
|
min_stop_sequence: {
|
|
106
110
|
type: "integer",
|
|
107
111
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeparturesModel.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.ts"],"names":[],"mappings":";;;AACA,mEAAwF;AACxF,uEAA+D;AAG/D,MAAa,eAAgB,SAAQ,iBAAsB;;AAA3D,
|
|
1
|
+
{"version":3,"file":"DeparturesModel.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.ts"],"names":[],"mappings":"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"}
|
package/dist/schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export interface IDeparturesModel {
|
|
|
23
23
|
trip_headsign: string;
|
|
24
24
|
trip_short_name: string | null;
|
|
25
25
|
wheelchair_accessible: GtfsTripWheelchairAccessEnum | null;
|
|
26
|
+
direction_id: number | null;
|
|
26
27
|
service_id: string | null;
|
|
27
28
|
date: string | null;
|
|
28
29
|
route_short_name: string | null;
|
package/dist/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublicGtfsDepartureDtoSchema.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.ts"],"names":[],"mappings":";;;AAGA,MAAM,4BAA4B,GAAmD;IACjF,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,wBAAwB;IAC/B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;YACD,kBAAkB,EAAE;gBAChB,IAAI,EAAE,QAAQ;aACjB;YACD,gBAAgB,EAAE;gBACd,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,gBAAgB,EAAE;gBACd,IAAI,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE;gBACR,IAAI,EAAE,QAAQ;aACjB;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;YACD,aAAa,EAAE;gBACX,IAAI,EAAE,QAAQ;aACjB;YACD,aAAa,EAAE;gBACX,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,aAAa,EAAE;gBACX,IAAI,EAAE,QAAQ;aACjB;YACD,mBAAmB,EAAE;gBACjB,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,WAAW,EAAE;gBACT,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACH,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACR,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCAChC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BACnC;4BACD,oBAAoB,EAAE,KAAK;4BAC3B,QAAQ,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;yBAC7C;qBACJ;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,qBAAqB,EAAE;gBACnB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;aACxB;SACJ;QACD,QAAQ,EAAE;YACN,SAAS;YACT,oBAAoB;YACpB,kBAAkB;YAClB,kBAAkB;YAClB,YAAY;YACZ,SAAS;YACT,eAAe;YACf,eAAe;YACf,eAAe;SAClB;KACJ;CACJ,CAAC;AACuC,oEAA4B"}
|
|
1
|
+
{"version":3,"file":"PublicGtfsDepartureDtoSchema.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/ropid-gtfs/redis/schemas/PublicGtfsDepartureDtoSchema.ts"],"names":[],"mappings":";;;AAGA,MAAM,4BAA4B,GAAmD;IACjF,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,wBAAwB;IAC/B,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;YACD,kBAAkB,EAAE;gBAChB,IAAI,EAAE,QAAQ;aACjB;YACD,gBAAgB,EAAE;gBACd,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,gBAAgB,EAAE;gBACd,IAAI,EAAE,QAAQ;aACjB;YACD,UAAU,EAAE;gBACR,IAAI,EAAE,QAAQ;aACjB;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;YACD,aAAa,EAAE;gBACX,IAAI,EAAE,QAAQ;aACjB;YACD,aAAa,EAAE;gBACX,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,aAAa,EAAE;gBACX,IAAI,EAAE,QAAQ;aACjB;YACD,mBAAmB,EAAE;gBACjB,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,QAAQ;qBACjB;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,WAAW,EAAE;gBACT,KAAK,EAAE;oBACH;wBACI,IAAI,EAAE,OAAO;wBACb,KAAK,EAAE;4BACH,IAAI,EAAE,QAAQ;4BACd,UAAU,EAAE;gCACR,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCAChC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BACnC;4BACD,oBAAoB,EAAE,KAAK;4BAC3B,QAAQ,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC;yBAC7C;qBACJ;oBACD;wBACI,IAAI,EAAE,MAAM;wBACZ,QAAQ,EAAE,IAAI;qBACjB;iBACJ;aACJ;YACD,qBAAqB,EAAE;gBACnB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;aACxB;YACD,YAAY,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;aACrB;SACJ;QACD,QAAQ,EAAE;YACN,SAAS;YACT,oBAAoB;YACpB,kBAAkB;YAClB,kBAAkB;YAClB,YAAY;YACZ,SAAS;YACT,eAAe;YACf,eAAe;YACf,eAAe;SAClB;KACJ;CACJ,CAAC;AACuC,oEAA4B"}
|
package/docs/asyncapi.yaml
CHANGED
|
@@ -725,8 +725,12 @@ components:
|
|
|
725
725
|
type: string
|
|
726
726
|
description: The timestamp when the message was last sent.
|
|
727
727
|
wheelchair_accessible:
|
|
728
|
-
type: boolean
|
|
729
|
-
description:
|
|
728
|
+
type: [boolean, "null"]
|
|
729
|
+
description: |
|
|
730
|
+
Raw wheelchair accessibility flag from vehiclepositions_trips.
|
|
731
|
+
Mapped to wheelchairAccessible proto enum in GTFS-RT VehicleDescriptor:
|
|
732
|
+
null → WHEELCHAIR_ACCESSIBLE_UNSPECIFIED (0), true → WHEELCHAIR_ACCESSIBLE (1), false → WHEELCHAIR_INACCESSIBLE (2).
|
|
733
|
+
The OVAPI extension .transit_realtime.ovapiVehicleDescriptor.wheelchairAccessible retains the raw boolean/null value alongside the standard field.
|
|
730
734
|
ICommonRunsMessagesModel:
|
|
731
735
|
type: object
|
|
732
736
|
properties:
|
|
@@ -275,6 +275,7 @@ flowchart TD
|
|
|
275
275
|
- `vpPublicCache:$setId:canceled-trips-$gtfsTripId` - JSON jako string s informacemi o zrušeném spoji. Využití v public odjezdech
|
|
276
276
|
- TTL 1 minuta
|
|
277
277
|
- Nová datová sada se generuje přibližně jednou za 3 vteřiny a obsahuje všechny RT spoje (aktivní, budoucí a zrušené)
|
|
278
|
+
- Populace `future-trip-*`, `future-vehicle-*` a `canceled-trips-*` sub-klíčů je řízena stavem spoje (před trasou / zrušen) a nesouvisí s logikou deduplikace odjezdů v `/v2/public/departureboards` – ta pracuje nad `gtfsPublicDepartureCache` a tuto cache neovlivňuje
|
|
278
279
|
|
|
279
280
|
### vpPublicStopTimeCache:*
|
|
280
281
|
|
|
@@ -294,14 +295,30 @@ flowchart TD
|
|
|
294
295
|
### gtfsPublicDepartureCache:*
|
|
295
296
|
|
|
296
297
|
- Klíč `gtfsPublicDepartureCache:*`, kde `*` je GTFS id zastávky
|
|
297
|
-
- Hodnota je sorted set, kde score je unix timestamp odjezdu v sekundách a member
|
|
298
|
+
- Hodnota je sorted set, kde score je unix timestamp odjezdu v sekundách a member je JSON string s informacemi o odjezdu:
|
|
299
|
+
- `stop_id` – GTFS id zastávky
|
|
300
|
+
- `departure_datetime` – plánovaný čas odjezdu (ISO 8601)
|
|
301
|
+
- `arrival_datetime` – plánovaný čas příjezdu (ISO 8601), nebo `null`
|
|
302
|
+
- `route_short_name` – název linky
|
|
303
|
+
- `route_type` – typ dopravy (GTFS route_type)
|
|
304
|
+
- `trip_id` – GTFS id spoje
|
|
305
|
+
- `stop_sequence` – pořadí zastávky v spoji
|
|
306
|
+
- `platform_code` – označení nástupiště, nebo `null`
|
|
307
|
+
- `trip_headsign` – cílová zastávka spoje (nebo `stop_headsign`, pokud je definován)
|
|
308
|
+
- `trip_headsign_icons` – ikony přestupů u cílové zastávky jako řetězec dvouznaková kódů (např. `"MbMcSb"`), nebo `null`
|
|
309
|
+
- `connections` – seznam garantovaných přestupů čekajících na tento spoj, nebo `null`; každý záznam obsahuje:
|
|
310
|
+
- `from_trip_id` – GTFS id spoje, na který se čeká
|
|
311
|
+
- `max_wait_sec` – maximální čekací doba v sekundách
|
|
312
|
+
- Přednačítá se z tabulky `ropidgtfs_precomputed_trip_connections` (původně z `transfers.txt` kde `transfer_type = 1`), JOIN na odjezdy přes `to_trip_id` a `to_stop_id`
|
|
313
|
+
- `wheelchair_accessible` – přístupnost vozidla pro vozíčkáře z GTFS `trips.txt` (`0` = bez informace, `1` = přístupné, `2` = nepřístupné), nebo `null`
|
|
314
|
+
- `direction_id` – směr jízdy z GTFS `trips.txt` (`0` nebo `1`), nebo `null`; využívá se při seskupování odjezdů podle směru a filtrování opačného směru v přestupních tabulích
|
|
298
315
|
- Existuje záznam pro každou zastávku v GTFS. Pokud v ní ale není žádný odjezd, je vyplněný pouze jeden prázdný member - detekce validní zastávky bez odjezdu
|
|
299
316
|
- TTL 7 hodin
|
|
300
317
|
- Retence dat aktivní, jednou za hodinu se smažou všechny odjezdy starší než 3 hodiny
|
|
301
318
|
- Jednou za hodinu se vygenerují nové odjezdy pro všechny zastávky v intervalu +5 hodin až +7 hodin, po přenačtení JŘ se přegenerují všechny odjezdy v interval -3 hodiny až +7 hodin
|
|
302
319
|
- Ukládá se pomocí `ZADD`, čte se pomocí `ZRANGEBYSCORE` (-inf, now + `minutesAfter`)
|
|
303
320
|
- Využití v public odjezdech
|
|
304
|
-
- Využití v endpointu přestupních tabulí
|
|
321
|
+
- Využití v endpointu přestupních tabulí (`/v4/pid/transferboards`)
|
|
305
322
|
|
|
306
323
|
### Flowchart (refresh)
|
|
307
324
|
|
|
@@ -529,6 +546,18 @@ flowchart LR
|
|
|
529
546
|
|
|
530
547
|
link na .drawio [soubor](../../assets/V4Transferboards.drawio)
|
|
531
548
|
|
|
549
|
+
## Cache pro konfiguraci
|
|
550
|
+
|
|
551
|
+
### config:notPublicVehicles
|
|
552
|
+
|
|
553
|
+
- Klíč `config:notPublicVehicles` (jednoduchý klíč, žádný wildcard)
|
|
554
|
+
- Hodnota je JSON string struktury `INotPublicVehicles`:
|
|
555
|
+
- `tram.registrationNumbers` – seznam evidenčních čísel tramvají bez platného GTFS spoje
|
|
556
|
+
- `road.registrationNumbers` – seznam evidenčních čísel autobusů a trolejbusů bez platného GTFS spoje (`road` pokrývá obě kategorie, protože sdílejí číselnou řadu)
|
|
557
|
+
- `routeIds` – whitelist čísel linek (např. `"861"` pro náhradní autobus X-C při výluce metra C) zobrazovaných i bez platného JŘ spoje
|
|
558
|
+
- TTL žádné – hodnota se přepíše při každém spuštění `SaveStaticDataTask` (po načtení nových JŘ)
|
|
559
|
+
- Zapisuje `NotPublicVehiclesRedisRepository` (IE), čte `TripsRepository` / `PositionsMapper` (IE) a `UpdateRunsGtfsTripIdTask` (IE) pro povolení průchodu vozidel bez GTFS spoje
|
|
560
|
+
|
|
532
561
|
## Manuální refresh cache (EnsureCacheTask)
|
|
533
562
|
|
|
534
563
|
`EnsureCacheTask` slouží jako manuální spouštěč obnovy všech 4 caches, jejichž data nejsou real-time obnovována. Po přijetí prázdné zprávy na frontě `vehicle-positions.ropidgtfs.ensureCache` odešle paralelně prázdné zprávy do všech 4 cílových front. Dvě z nich míří do různých workerů (cross-worker routing přes RabbitMQ exchange), dvě míří do stejného workeru (TimetableWorker).
|
|
@@ -264,12 +264,14 @@ _:warning: Původním záměrem bylo využití OIS číselníku během zpracová
|
|
|
264
264
|
- baseUrl: module.pid.staticData.baseUrl
|
|
265
265
|
- departure directions url: module.pid.staticData.departuresDirection.path
|
|
266
266
|
- metro rail track url: module.pid.staticData.metroRailTracks.path
|
|
267
|
+
- not public vehicles url: module.pid.staticData.notPublicVehicles.path
|
|
267
268
|
- formát dat
|
|
268
269
|
- protokol: http
|
|
269
|
-
- datový typ: csv
|
|
270
|
+
- datový typ: csv (DeparturesDirection, MetroRailTrack), json (NotPublicVehicles)
|
|
270
271
|
- validační schéma:
|
|
271
272
|
- [MetroRailTrack](../src/schema-definitions/datasources/static-data/MetroRailTrackJsonSchema.ts)
|
|
272
273
|
- [DeparturesDirection](../src/schema-definitions/datasources/static-data/DeparturesDirectionsJsonSchema.ts)
|
|
274
|
+
- [NotPublicVehicles](../src/schema-definitions/datasources/static-data/interfaces/NotPublicVehiclesDataInterface.ts) – interface `INotPublicVehicles`
|
|
273
275
|
- příklad vstupnich dat: viz zdroj data
|
|
274
276
|
- frekvence stahování
|
|
275
277
|
- Po nacteni jizdnich radu (fronta: vehicle-positions.ropidgtfs.checkForNewData)
|
|
@@ -512,6 +514,9 @@ Všechny tabulky se nachází ve schématu `pid`
|
|
|
512
514
|
- [RopidGTFSRunNumbersTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidGTFSRunNumbersTransformation.ts)
|
|
513
515
|
- [RopidGtfsRouteSubAgencyTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidGtfsRouteSubAgencyTransformation.ts)
|
|
514
516
|
- on top of transformation functionality it also removes duplicates. Rule: If there are multiple rows with same `route_id` and `sub_agency_id` only the first with filled licence number is kept.
|
|
517
|
+
- rozšířené sloupce GTFS souborů (nestandardní rozšíření ROPID)
|
|
518
|
+
- `trips.txt` – sloupec `headsign_icons`: řetězec dvouznakových kódů ikon (např. `"MbSb"`), uložen do `ropidgtfs_trips.headsign_icons`
|
|
519
|
+
- `stop_times.txt` – sloupec `headsign_icons`: přepis na úrovni zastávky, uložen do `ropidgtfs_stop_times.headsign_icons`; má přednost před hodnotou z `trips.txt` pokud je zároveň vyplněn `stop_headsign`
|
|
515
520
|
- data modely
|
|
516
521
|
- RopidGTFSMetadataModel `ropidgtfs_metadata`
|
|
517
522
|
- RopidGTFSAgencyModel `ropidgtfs_agency`
|
|
@@ -562,6 +567,7 @@ Všechny tabulky se nachází ve schématu `pid`
|
|
|
562
567
|
- RopidGTFSPrecomputedMinMaxStopSequencesModel `ropidgtfs_precomputed_minmax_stop_sequences`
|
|
563
568
|
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
|
|
564
569
|
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
|
|
570
|
+
- RopidGTFSPrecomputedTripConnectionsModel `ropidgtfs_precomputed_trip_connections`
|
|
565
571
|
|
|
566
572
|
#### task _RefreshPrecomputedTables_
|
|
567
573
|
|
|
@@ -581,6 +587,7 @@ Všechny tabulky se nachází ve schématu `pid`
|
|
|
581
587
|
- RopidGTFSPrecomputedMinMaxStopSequencesModel `ropidgtfs_precomputed_minmax_stop_sequences`
|
|
582
588
|
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
|
|
583
589
|
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
|
|
590
|
+
- RopidGTFSPrecomputedTripConnectionsModel `ropidgtfs_precomputed_trip_connections`
|
|
584
591
|
|
|
585
592
|
#### task _RefreshPublicGtfsDepartureCacheTask_
|
|
586
593
|
|
|
@@ -596,8 +603,10 @@ Task se stará o aktualizaci cache pro public odjezdy. Pouští se pravidelně c
|
|
|
596
603
|
- ROPID FTP
|
|
597
604
|
- transformace
|
|
598
605
|
- [PublicDepartureCacheTransformation](../src/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.ts)
|
|
606
|
+
- výsledný cache záznam obsahuje pole `connections` (garantované přestupy – přednačtené z `ropidgtfs_precomputed_trip_connections`, původně z `transfers.txt` kde `transfer_type = 1`) a pole `wheelchair_accessible` (přístupnost vozidla pro vozíčkáře z GTFS `trips.txt`)
|
|
607
|
+
- pole `trip_headsign_icons`: pokud je pro danou zastávku spoje vyplněn `stop_headsign`, použije se `stop_headsign_icons` z `ropidgtfs_stop_times`; jinak se použije `headsign_icons` z `ropidgtfs_trips`; výsledek je řetězec dvouznakových kódů (např. `"MbMcSb"`) nebo `null`
|
|
599
608
|
- data modely
|
|
600
|
-
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
|
|
609
|
+
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures` (obsahuje JOIN na `ropidgtfs_precomputed_trip_connections_tmp` přes `to_trip_id` a `to_stop_id`)
|
|
601
610
|
|
|
602
611
|
#### task _SaveStaticData_
|
|
603
612
|
|
|
@@ -613,9 +622,19 @@ Task se stará o aktualizaci statickych dat. Pouští se po dokončení načten
|
|
|
613
622
|
- transformace
|
|
614
623
|
- [DeparturesDirectionTransformation](../src/integration-engine/ropid-gtfs/workers/timetables/tasks/transformations/DeparturesDirectionTransformation.ts)
|
|
615
624
|
- [MetroRailtrackDataTransformation](../src/integration-engine/ropid-gtfs/workers/timetables/tasks/transformations/MetroRailtrackDataTransformation.ts)
|
|
625
|
+
- `NotPublicVehicles` – data se ukládají přímo do cache klíče `config:notPublicVehicles` přes `NotPublicVehiclesRedisRepository` (žádná DB tabulka)
|
|
616
626
|
- data modely
|
|
617
627
|
- RopidDeparturesDirections `ropid_departures_directions`
|
|
618
628
|
- RopidGtfsMetroRailtrackGps `ropidgtfs_metro_railtrack_gps`
|
|
629
|
+
- Cache `config:notPublicVehicles` – JSON blob struktury `INotPublicVehicles`:
|
|
630
|
+
```json
|
|
631
|
+
{
|
|
632
|
+
"tram": { "registrationNumbers": ["string"] },
|
|
633
|
+
"road": { "registrationNumbers": ["string"] },
|
|
634
|
+
"routeIds": ["string"]
|
|
635
|
+
}
|
|
636
|
+
```
|
|
637
|
+
`road` pokrývá autobusy i trolejbusy (evidenční čísla se mohou překrývat s tramvajemi, proto jsou oddělena). `routeIds` je whitelist číselných identifikátorů náhradních nebo dočasných linek (např. náhradní autobus za metro při výluce nebo mimořádné události), které se mají zobrazovat i bez platného JŘ spoje.
|
|
619
638
|
|
|
620
639
|
#### task _EnsureCacheTask_
|
|
621
640
|
|
|
@@ -1086,6 +1105,18 @@ Worker má na starost generování souborů s realtime daty pro `gtfsrt` endpoin
|
|
|
1086
1105
|
- VPTripsModel `vehiclepositions_trips`
|
|
1087
1106
|
- VPPositionsModel `vehiclepositions_positions`
|
|
1088
1107
|
|
|
1108
|
+
**`wheelchairAccessible` ve VehicleDescriptor**
|
|
1109
|
+
|
|
1110
|
+
Pole `wheelchairAccessible` je součástí standardního `VehicleDescriptor` ve feedech `vehicle_positions.pb` a `pid_feed.pb`:
|
|
1111
|
+
|
|
1112
|
+
| Interní hodnota | Proto enum |
|
|
1113
|
+
|---|---|
|
|
1114
|
+
| `null` | `WHEELCHAIR_ACCESSIBLE_UNSPECIFIED = 0` |
|
|
1115
|
+
| `true` | `WHEELCHAIR_ACCESSIBLE = 1` |
|
|
1116
|
+
| `false` | `WHEELCHAIR_INACCESSIBLE = 2` |
|
|
1117
|
+
|
|
1118
|
+
Zdrojem je pole `wheelchair_accessible` z tabulky `vehiclepositions_trips` (přenášené přes `IGtfsRtTripDto`). Vedle standardního pole zůstává zachováno rozšíření `.transit_realtime.ovapiVehicleDescriptor.wheelchairAccessible` s původní boolean/null hodnotou.
|
|
1119
|
+
|
|
1089
1120
|
**Určení zpoždění v trip_updates.pb**
|
|
1090
1121
|
|
|
1091
1122
|
Predikce odjezdů probíhá podle vzorce:
|
|
@@ -1191,6 +1222,10 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1191
1222
|
- data modely
|
|
1192
1223
|
- JISEventsModel `jis_events`
|
|
1193
1224
|
- JISEventsRopidGTFSRoutesModel `jis_events_ropidgtfs_routes`
|
|
1225
|
+
- poznámky k datovému modelu
|
|
1226
|
+
- pole `effects` je pole až 3 unikátních řetězců; v GTFS-RT `Alert.effect` se použije pouze `effects[0]`, zbývající hodnoty jsou dostupné pouze v custom-format exportu
|
|
1227
|
+
- pole `cause_detail` je volný text zpřesňující příčinu události; může být `null`
|
|
1228
|
+
- pole `cause` obsahuje překlady do češtiny i angličtiny; anglické hodnoty jsou zahrnuty i ve výstupu GTFS-RT alert feedu
|
|
1194
1229
|
|
|
1195
1230
|
#### _task: RefreshJISInfotextsTask_
|
|
1196
1231
|
|
|
@@ -1285,7 +1320,7 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1285
1320
|
- retence dat
|
|
1286
1321
|
- jízdní řády se generují 1-2x denně na 14 dní dopředu
|
|
1287
1322
|
- polohová data si uchováváme 24 hodin (30 minut od poslední aktualizace, poté v historických tabulkách)
|
|
1288
|
-
- popis vozidel
|
|
1323
|
+
- popis vozidel se nepromazává – přetrvávají do přepsání novými daty (fixní TTL bylo odstraněno)
|
|
1289
1324
|
- preset logy si uchováváme 8 hodin
|
|
1290
1325
|
- JIS události a infotexty si uchováváme neomezeně
|
|
1291
1326
|
|
|
@@ -1428,6 +1463,12 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1428
1463
|
|
|
1429
1464
|
- zdrojové tabulky
|
|
1430
1465
|
- `ropidgtfs_precomputed_departures`, `ropidgtfs_stops`, `ropidgtfs_cis_stops`, `jis_infotexts`, `jis_infotexts_ropidgtfs_stops`, `ropid_departures_directions`, `vehiclepositions_positions`, `vehiclepositions_trips`
|
|
1466
|
+
- odpověď obsahuje hlavičku `X-Golemio-Preset-Metadata: airConditionPossible=0|1`
|
|
1467
|
+
- `1` pokud byl zadán query parametr `airCondition` s pravdivou hodnotou, `0` jinak
|
|
1468
|
+
- slouží monitorovacím systémům (preset systémy monitorovacího centra ROPID) k detekci aktivního filtrování dle klimatizace
|
|
1469
|
+
- kód nástupiště (`platform_code`)
|
|
1470
|
+
- **vlaky**: preferuje se CIS hodnota `cis_stop_platform_code` uložená z MPVNet zpráv (`PlatformCodeResolver`); MPVNet atribut `$.stan` je před uložením oříznut na první platný segment (viz [parsování `stan` u vlaků](../processing/input_realtime_data/http_mpvnet.md#parsování-stanoviště-stan-u-vlaků))
|
|
1471
|
+
- **ostatní typy**: používá se GTFS `platform_code` ze `stop_times.txt`
|
|
1431
1472
|
|
|
1432
1473
|
### PID Departure Boards v3
|
|
1433
1474
|
|
|
@@ -1435,6 +1476,44 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1435
1476
|
|
|
1436
1477
|
- načte odjezdy pro přestupní tabule ve vozidlech a aktivní infotexty exportované z aplikace VYMI (JIS) Infotexty
|
|
1437
1478
|
|
|
1479
|
+
### PID Departure Boards v4
|
|
1480
|
+
|
|
1481
|
+
#### _/v4/pid/transferboards_
|
|
1482
|
+
|
|
1483
|
+
- načte odjezdy pro přestupní tabule ve vozidlech na základě aktuální polohy vozidla a aktivní infotexty exportované z aplikace VYMI (JIS) Infotexty
|
|
1484
|
+
- parametry
|
|
1485
|
+
- `aswId` + `vehicleRegistrationNumber` + `routeType` – identifikace zastávky a vozidla přes ASW číselník (vzájemně se vylučuje s `cisId`+`tripNumber`)
|
|
1486
|
+
- `cisId` + `tripNumber` – identifikace zastávky a spoje přes CIS číselník (zatím neimplementováno, vrací 501)
|
|
1487
|
+
- `timeFrom` – volitelný ISO8601 čas příjezdu (pokud není zadán, použije se reálný čas příjezdu z RT dat)
|
|
1488
|
+
- `limit` – volitelný počet odjezdů (výchozí 8, max 30)
|
|
1489
|
+
- cachováno na 5 sekund (stale-while-revalidate 5 sekund)
|
|
1490
|
+
- zdrojové cache záznamy
|
|
1491
|
+
- `gtfsStopsCache:*` – převod ASW node ID na GTFS stop_id
|
|
1492
|
+
- `gtfsDelayComputation:*` – zjištění zastávek spoje a predikovaného času příjezdu
|
|
1493
|
+
- `vpPublicCache:*` – aktuální poloha a zpoždění vozidla
|
|
1494
|
+
- `gtfsPublicDepartureCache:*` – statické odjezdy ze zastávek (vč. `connections` a `wheelchair_accessible`)
|
|
1495
|
+
- `vpPublicStopTimeCache:*` – live zastávkové časy pro spoje se známou polohou
|
|
1496
|
+
- `jisCache:*` – aktivní infotexty pro dané zastávky
|
|
1497
|
+
- načítání odjezdů z cache (`gtfsPublicDepartureCache`)
|
|
1498
|
+
- z každé zastávky se načte `max(80, min(120, limit × 10))` položek v časovém okně `[plannedTimeFrom − 61 min, plannedTimeFrom + 60 min + delay]`; lookback 61 minut zajišťuje, že se zachytí i navazující spoj, jehož plánovaný odjezd je v minulosti, ale díky vlastnímu zpoždění (až 60 minut) dorazí na zastávku až po příjezdu aktuálního vozidla
|
|
1499
|
+
- ihned po načtení se aplikuje pre-filter: odjezdy autobusů, tramvají a trolejbusů ze zastávek s jiným názvem než aktuální zastávka jsou zahozeny; metro/vlak/přívoz/lanovka procházejí vždy; odjezdy s neprázdným polem `connections[]` jsou zachovány bez ohledu na název zastávky (potenciální garantovaný přestup)
|
|
1500
|
+
- garantované přestupy (`is_guaranteed_transfer`)
|
|
1501
|
+
- označují odjezdy, které na příjezd aktuálního spoje čekají – detekováno z pole `connections` v `gtfsPublicDepartureCache`, kde `from_trip_id` odpovídá aktuálnímu spoji a `arrivalTime < departure_datetime + max_wait_sec`
|
|
1502
|
+
- zobrazované minuty u garantovaného přestupu jsou nastaveny na čas příjezdu aktuálního spoje (ne na plánovaný odjezd navazujícího spoje)
|
|
1503
|
+
- garantované přestupy jsou vyjmuty z filtru opačného směru a filtru podskupiny linky – jsou přidány do `tripIdsToKeep` před spuštěním `findRelevantTripIdsFromLines`, takže projdou bez ohledu na zastávkovou sekvenci
|
|
1504
|
+
- typy "vždy zobrazit" (metro, vlak, přívoz, lanovka) filtr `findRelevantTripIdsFromLines` zcela přeskakují
|
|
1505
|
+
- dostupnost pro vozíčkáře (`is_wheelchair_accessible`)
|
|
1506
|
+
- **metro**: určeno výhradně podle `wheelchair_boarding` zastávky (hodnota `1` = přístupná)
|
|
1507
|
+
- **ostatní typy dopravy**: primárně z RT dat vozidla (`detailed_info.is_wheelchair_accessible`); pokud RT data nejsou k dispozici, použije se GTFS příznak `wheelchair_accessible` z `trips.txt` (`1` = přístupné vozidlo)
|
|
1508
|
+
- odfiltrování odjezdů stejné linky v opačném směru (`TransferFacade.isDifferentLine`) — odjezdy se shodným `route_short_name` + `route_type`, ale odlišným `direction_id` oproti aktuálnímu vozidlu jsou odstraněny; odjezdy s neznámým `direction_id` (null) jsou ponechány
|
|
1509
|
+
- seskupování a omezení výstupu (`TransferDepartureCacheTransformation`)
|
|
1510
|
+
- **metro**: seskupuje se podle `route_short_name + route_type + direction_id`; na jeden záznam výstupu připadají až 2 hodnoty v poli `departure_timestamp.minutes[]`
|
|
1511
|
+
- **ostatní typy**: seskupuje se podle `route_short_name + route_type + direction_id`; na skupinu připadají nejvýše 2 samostatné záznamy odjezdů
|
|
1512
|
+
- `direction_id` se řeší s fallback řetězcem: `departure.direction_id` (z cache odjezdů) → `position.detailed_info.direction_id` (z RT poloh vozidel) → in-memory cache (klíč `route_short_name + trip_headsign`) → `0`
|
|
1513
|
+
- konfigurace filtrování opačného směru (backtracking)
|
|
1514
|
+
- `module.pid.vehicle-positions.transferboards.isOppositeDirectionFilterStopNameStrict` (boolean, výchozí `true`) – pokud `true`, zastávka je považována za "zpětnou" pouze pokud se shoduje `stop_id` i `stop_name`; pokud `false`, stačí shoda `stop_id`
|
|
1515
|
+
- `module.pid.vehicle-positions.transferboards.countPreviousStopsToAllow` (integer, výchozí `0`) – kolik předchozích zastávek aktuálního spoje smí kandidátní spoj sdílet ve svých nadcházejících zastávkách, než je považován za zpětný směr a odfiltrován; `0` znamená žádná shoda není povolena
|
|
1516
|
+
|
|
1438
1517
|
#### _/v3/pid/infotexts_
|
|
1439
1518
|
|
|
1440
1519
|
- načte aktivní infotexty exportované z aplikace VYMI (JIS) Infotexty
|
|
@@ -1482,4 +1561,20 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1482
1561
|
- podle názvů linek a jak daleko do budoucnosti se mají odjezdy navracet
|
|
1483
1562
|
- limitování počtu odjezdů v každé skupině
|
|
1484
1563
|
- EP je optimalizován pro vyšší zátěž z mobilní aplikace PID lítačka - požadavek do databáze z OG pouze v případě nutnosti obnovit cache s vehicle descriptory (klimatizace, usb nabíječky), jinak je vše z Redisu
|
|
1564
|
+
- deduplikace odjezdů (pro seskupení "jeden za linka+směr") se provádí podle klíče `route_id + trip_headsign + platform_code`; toto se liší od původního přístupu deduplikace podle `stop_id` a správně pokrývá situace, kdy jeden ASW uzel odpovídá více GTFS `stop_id`
|
|
1565
|
+
- dostupnost pro vozíčkáře (`is_wheelchair_accessible`) se určuje v pořadí priority:
|
|
1566
|
+
1. RT descriptor vozidla (`detailed_info.is_wheelchair_accessible` z vehicle positions)
|
|
1567
|
+
2. GTFS statický příznak `wheelchair_accessible` z `trips.txt` (`1` = přístupné), pokud RT data nejsou k dispozici
|
|
1485
1568
|
- je použit `CompressionByDefaultMiddleware` a odpovědi jsou tak na output gateway komprimovány i pokud klient explicitně nepovolí komprimaci vhodnou hodnotou hlavičky `Accept-Encoding` (lze však komprimaci explicitně zakázat hodnotou `identity`)
|
|
1569
|
+
|
|
1570
|
+
### JIS v1
|
|
1571
|
+
|
|
1572
|
+
#### _/v1/jis/events/custom-format_
|
|
1573
|
+
|
|
1574
|
+
- vrátí seznam publikovaných událostí ve vlastním formátu pro externí konzumenty (fallback endpoint pro webhooky)
|
|
1575
|
+
- parametry
|
|
1576
|
+
- `displayPeriodStart` / `displayPeriodEnd` – filtrování podle překryvu zobrazovacího okna události s požadovaným rozsahem (ISO 8601)
|
|
1577
|
+
- `organizationNames` – filtrování podle organizace (pole řetězců)
|
|
1578
|
+
- `type` – filtrování podle typu události (`INCIDENT`, `DISRUPTION`, `SERVICE_CHANGE`)
|
|
1579
|
+
- zdrojové tabulky: `jis_events`, `jis_events_ropidgtfs_routes`
|
|
1580
|
+
- formát odpovědi: viz schéma `EventCustomFormat` v [openapi-output.yaml](./openapi-output.yaml)
|
package/docs/jis/index.md
CHANGED
|
@@ -246,3 +246,20 @@ flowchart TB
|
|
|
246
246
|
```
|
|
247
247
|
|
|
248
248
|
Zdroj a formát dat pro aktivní stahování jsou dále více popsány v implementační dokumentaci ([události](../implementation_documentation.md#jis-events), [infotexty](../implementation_documentation.md#jis-infotexts)), stejně tak jako [worker a tasky](../implementation_documentation.md#jisworker) a popis [uložení dat](../implementation_documentation.md#uložení-dat) včetně databázového schema a popisu retence.
|
|
249
|
+
|
|
250
|
+
## Datový model událostí — vybraná pole
|
|
251
|
+
|
|
252
|
+
### `cause_detail`
|
|
253
|
+
|
|
254
|
+
Volitelné textové upřesnění příčiny události (`cause_detail`). Může být `null`. Dostupné v custom-format exportu (`/v1/jis/events/custom-format`) i v GTFS-RT alert feedu jako rozšíření. Struktura:
|
|
255
|
+
```json
|
|
256
|
+
{ "cs": "Nehoda na křižovatce", "en": null }
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### `cause` — anglický překlad
|
|
260
|
+
|
|
261
|
+
Pole `cause` obsahuje překlad příčiny události do češtiny i do angličtiny. Anglická hodnota je zahrnuta i ve výstupu GTFS-RT alert feedu (pole `Alert.cause` v `pid_feed.pb` i `alerts.pb`).
|
|
262
|
+
|
|
263
|
+
### `effects` (pole příčin dopadu)
|
|
264
|
+
|
|
265
|
+
Pole `effects` může obsahovat 1–3 unikátní řetězcové hodnoty. Pouze `effects[0]` se mapuje na standardní GTFS-RT `Alert.effect`; zbývající hodnoty jsou dostupné výhradně v custom-format exportu.
|
|
@@ -92,6 +92,27 @@
|
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
## Vlaky
|
|
95
|
+
|
|
96
|
+
### Parsování stanoviště (`stan`) u vlaků
|
|
97
|
+
|
|
98
|
+
Atribut `stan` v elementu `<zast>` u vlaků může obsahovat složený řetězec ve formátu `část1/část2` nebo `část1 část2` (např. `5S/22S`, `-/6`, `2/3`). Jako kanonický kód nástupiště se použije **první platný segment** – první token oddělený lomítkem nebo mezerou, pokud není prázdný nebo `-`.
|
|
99
|
+
|
|
100
|
+
Příklady výsledků po parsování:
|
|
101
|
+
|
|
102
|
+
| Vstup (`stan`) | Výsledný `platform_code` |
|
|
103
|
+
|---|---|
|
|
104
|
+
| `1/3` | `1` |
|
|
105
|
+
| `-/BUS` | `BUS` |
|
|
106
|
+
| `2/100V` | `2` |
|
|
107
|
+
| `5A/- A C` | `5A` |
|
|
108
|
+
| `5S/22S` | `5S` |
|
|
109
|
+
|
|
110
|
+
Parsování provádí `MpvStopParser.parsePlatformCode()`. Výsledný kód je uložen jako `cis_stop_platform_code` v tabulce `vehiclepositions_positions` a na výstupu se pro vlaky preferuje před GTFS `platform_code` (viz `PlatformCodeResolver`).
|
|
111
|
+
|
|
112
|
+
### Zprávy s informací o nástupišti jako syntetická poloha
|
|
113
|
+
|
|
114
|
+
Pokud MPVNet zpráva vlaku obsahuje informaci o nástupišti (`$.stan`) pro budoucí zastávku a vlak ještě nemá žádnou aktivní RT polohu, vytvoří se syntetická poloha ve stavu `before_track` na základě dat z této zastávky. Díky tomu lze zobrazit kód nástupiště ještě před fyzickým příjezdem vlaku na stanoviště. Kód nástupiště se parsuje stejným způsobem jako výše (`MpvStopParser.parsePlatformCode()`).
|
|
115
|
+
|
|
95
116
|
```xml
|
|
96
117
|
<?xml version="1.0" encoding="utf-8"?>
|
|
97
118
|
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
- duplikace vlakových spojů a pozic podle block id (určení tracking podle cis stop id)
|
|
14
14
|
- obohacení spojů GTFS daty (včetně oběhu a kmenové linky)
|
|
15
15
|
- upsert asociovaných pozic
|
|
16
|
+
- **syntetická poloha z informace o nástupišti**: pokud zpráva obsahuje atribut `$.stan` pro budoucí zastávku a vlak ještě nemá aktivní RT polohu, vytvoří se syntetická pozice ve stavu `before_track` pro tuto zastávku – umožňuje zobrazit kód nástupiště před fyzickým příjezdem vlaku
|
|
16
17
|
- spoje se pošlou do fronty `updateDelay`
|
|
17
18
|
- updateDelay
|
|
18
19
|
- opět duplikace vlakových spojů, upsert asociovaných pozic
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
- pokud je pozice duplicitní (existuje pozice se stejným `origin_timestamp`), stav je `duplicate`
|
|
34
34
|
- pokud vozidlo jede do garáže, je stav `invisible`
|
|
35
35
|
- jinak je stav `after_track`
|
|
36
|
+
- **zvláštní případ**: pokud má pozice `cis_last_stop_id = null`, stav se znovu nevyhodnocuje – pozice si zachovává poslední známý stav (zmrazení stavu); to zabraňuje nežádoucímu cyklování zpět do `untracked` pouze kvůli chybějící CIS zastávce
|
|
36
37
|
- Tracking (`tracking` je `2`)
|
|
37
38
|
- pokud je vozidlo 200 metrů od nejblizšího bodu na trase, stav je `off_track`
|
|
38
39
|
- pokud je vozidlo v zastávce, je stav `at_stop`
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
## v4/pid/transferboards filtering pipeline (newcomer guide)
|
|
2
|
+
|
|
3
|
+
This section documents every filtering and transformation step executed by the `GET /v4/pid/transferboards` endpoint, in the order they actually run. The goal is to help a developer who is new to the codebase understand **what** each stage does, **why** it exists, and **where** the code lives.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
### Overview
|
|
8
|
+
|
|
9
|
+
The endpoint answers the question: _"Given that I am on vehicle X arriving at stop Y, which onward connections should I show on the transfer board?"_
|
|
10
|
+
|
|
11
|
+
The answer is not simply "all departures from stop Y in the next hour" — many departures must be filtered out because they go back the way the passenger just came, or depart too soon to catch, or are irrelevant in-network transfers. The pipeline also specially handles **guaranteed transfers** (connections the operator has contractually promised to wait for).
|
|
12
|
+
|
|
13
|
+
**Primary source files:**
|
|
14
|
+
- `src/output-gateway/pid/controllers/v4/V4TransferBoardsController.ts` — orchestrates the full pipeline
|
|
15
|
+
- `src/output-gateway/pid/service/facade/TransferFacade.ts` — fetches the cache, runs line-direction filters
|
|
16
|
+
- `src/output-gateway/pid/helpers/TransferBoardFilter.ts` — static filter methods (time, name, deduplication)
|
|
17
|
+
- `src/output-gateway/pid/helpers/TransferBoardSorter.ts` — sort pipeline
|
|
18
|
+
- `src/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.ts` — output grouping/capping
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
### Stage 1 — Request validation and parameter parsing
|
|
23
|
+
|
|
24
|
+
**Where:** `V4PIDRouter.ts` (validation middleware) + `V4TransferBoardsController.ts` (top of `getTransferBoards`)
|
|
25
|
+
|
|
26
|
+
The endpoint accepts two mutually exclusive identification modes:
|
|
27
|
+
|
|
28
|
+
- **ASW mode** — `aswId` + `vehicleRegistrationNumber` + `routeType`
|
|
29
|
+
- **CIS mode** — `cisId` + `tripNumber` (returns HTTP 501; not yet implemented)
|
|
30
|
+
|
|
31
|
+
If neither set of params is provided, or both are, validation rejects the request early. CIS mode always returns `501 Not Implemented`.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
### Stage 2 — Stop resolution (ASW → GTFS stop IDs)
|
|
36
|
+
|
|
37
|
+
**Where:** `TransferFacade.getTransferCache()` → `gtfsStopsCache:*`
|
|
38
|
+
|
|
39
|
+
A single ASW node can map to multiple GTFS `stop_id` values (e.g. platforms A and B at the same tram stop). The facade:
|
|
40
|
+
|
|
41
|
+
1. Looks up all GTFS `stop_id` values for the given `aswId` from `gtfsStopsCache:{aswId}`.
|
|
42
|
+
2. Fetches the stop names for those `stop_id` values.
|
|
43
|
+
3. Groups them into **same-name clusters** — stops that share a `stop_name` (e.g. both platforms of "Náměstí Míru") are treated as one logical transfer point.
|
|
44
|
+
|
|
45
|
+
This grouping matters later: only departures from stops in the same cluster pass the same-stop-name filters.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
### Stage 3 — Current vehicle lookup
|
|
50
|
+
|
|
51
|
+
**Where:** `V4TransferBoardsController.ts` + `vpPublicStopTimeCache:*`
|
|
52
|
+
|
|
53
|
+
The controller looks up the arriving vehicle's trip data using `service-{routeType}-{registrationNumber}` as the key into `vpPublicStopTimeCache`. For buses, a fallback to the trolleybus key is tried if the bus key is missing (registration numbers are shared between the two types).
|
|
54
|
+
|
|
55
|
+
This gives the controller the vehicle's **current `trip_id`** (called `currentTripId` throughout the codebase), which is central to guaranteed transfer detection and direction filtering.
|
|
56
|
+
|
|
57
|
+
If the vehicle is not found in the stop-time cache, the response is `404 Not Found`.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
### Stage 4 — Arrival time detection
|
|
62
|
+
|
|
63
|
+
**Where:** `V4TransferBoardsController.ts` → `gtfsDelayComputation:{tripId}`
|
|
64
|
+
|
|
65
|
+
The controller reads the vehicle's current trip from `gtfsDelayComputation`, which contains a per-stop array with both planned and predicted (delayed) times. It finds the entry for the target stop and extracts:
|
|
66
|
+
|
|
67
|
+
- `plannedTimeFrom` — the GTFS scheduled arrival time at this stop
|
|
68
|
+
- `delayedTimeFrom` — the real-time predicted arrival time (may differ due to delays)
|
|
69
|
+
|
|
70
|
+
Both values are used to set the departure cache query window in the next stage.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
### Stage 5 — Departure cache fetch
|
|
75
|
+
|
|
76
|
+
**Where:** `TransferFacade.getTransferCache()` → `gtfsPublicDepartureCache:*`
|
|
77
|
+
|
|
78
|
+
The facade fetches candidates from `gtfsPublicDepartureCache:{stopId}` (a Redis sorted set, scored by planned departure timestamp) for each GTFS `stop_id` in scope.
|
|
79
|
+
|
|
80
|
+
**Time window:**
|
|
81
|
+
```
|
|
82
|
+
from = plannedTimeFrom − 61 minutes
|
|
83
|
+
to = plannedTimeFrom + 60 minutes + delayMinutes
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The 61-minute lookback exists to catch transfer lines whose scheduled departure is in the past but which may still arrive at the stop after the current vehicle due to their own delay of up to 60 minutes.
|
|
87
|
+
|
|
88
|
+
**Fetch limit:** `max(80, min(120, limit × 10))` items per stop. The wide over-fetch ensures that enough candidates survive later filtering to fill the requested `limit`.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### Stage 6 — Self-removal and same-line opposite direction filter
|
|
93
|
+
|
|
94
|
+
**Where:** `TransferFacade.isDifferentLine()`
|
|
95
|
+
|
|
96
|
+
Two types of departures are removed here:
|
|
97
|
+
|
|
98
|
+
1. **Same trip** — the current vehicle's own trip (`currentTripId`) is removed. It should never appear as a "transfer option" for itself.
|
|
99
|
+
2. **Same line, opposite direction** — departures on the same `route_short_name` + `route_type` but with a different `direction_id` are removed. These represent the return journey on the same line, which the passenger just came from (typically the previous stop). This check only applies when `departure.direction_id` is known (non-null); departures with unknown direction are kept.
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
### Stage 7 — Pre-filter: bus/tram/trolleybus at wrong-name stops
|
|
104
|
+
|
|
105
|
+
**Where:** `TransferFacade.getTransferCache()` (inline, before returning)
|
|
106
|
+
|
|
107
|
+
Before the expensive line-direction filter runs, a cheap pre-filter drops departures that are:
|
|
108
|
+
- Route type **bus, tram, or trolleybus** (metro/train/ferry/funicular pass through unconditionally)
|
|
109
|
+
- From a stop whose `stop_name` differs from the current stop's name
|
|
110
|
+
|
|
111
|
+
**Exception:** if the departure has a non-empty `connections[]` array (meaning it is a possible guaranteed transfer), it is kept regardless of stop name. This is because a guaranteed transfer bus might legitimately be at a different-named stop.
|
|
112
|
+
|
|
113
|
+
This pre-filter is a performance optimization — it eliminates obviously irrelevant candidates before the costlier stages.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### Stage 8 — Sort + real-time vehicle position join
|
|
118
|
+
|
|
119
|
+
**Where:** `V4TransferBoardsController.ts`
|
|
120
|
+
|
|
121
|
+
Remaining candidates are sorted by `departure_datetime` ascending, then each is joined with live vehicle positions from `vpPublicCache` (if the trip has an active vehicle). This enriches each candidate with:
|
|
122
|
+
|
|
123
|
+
- `predictedDepartureDate` / `predictedDepartureTimestamp` — the RT-adjusted departure time
|
|
124
|
+
- `is_wheelchair_accessible` — resolved from the RT vehicle descriptor if available (see Stage 9)
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
### Stage 9 — Wheelchair accessibility resolution
|
|
129
|
+
|
|
130
|
+
**Where:** `DepartureBoardMapper.determineWheelchairAccessibility()`
|
|
131
|
+
|
|
132
|
+
For each candidate departure, accessibility is determined differently by mode:
|
|
133
|
+
|
|
134
|
+
| Mode | Source |
|
|
135
|
+
|---|---|
|
|
136
|
+
| **Metro** | `wheelchair_boarding` from the GTFS stop (stop-level, static) |
|
|
137
|
+
| **All other** | `real_wheelchair_accessible` from the RT vehicle descriptor (boolean), or if absent: GTFS static `wheelchair_accessible` (trip-level, `GtfsTripWheelchairAccessEnum`) |
|
|
138
|
+
|
|
139
|
+
The fallback to GTFS static data is the fix introduced in v5.7.1 (item 3 above).
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
### Stage 10 — Guaranteed transfer detection
|
|
144
|
+
|
|
145
|
+
**Where:** `V4TransferBoardsController.ts` (`havingConnectionFromTripId`)
|
|
146
|
+
|
|
147
|
+
A departure is a **guaranteed transfer** (Czech: _zaručený přestup_) when:
|
|
148
|
+
|
|
149
|
+
1. Its `connections[]` array contains an entry where `from_trip_id === currentTripId`, AND
|
|
150
|
+
2. The current vehicle's predicted arrival time is within the wait window:
|
|
151
|
+
```
|
|
152
|
+
vehicleArrivalMs < departurePlannedMs + max_wait_sec × 1000
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Guaranteed transfers receive special treatment in all subsequent stages — they can bypass nearly every filter and are always shown if time constraints allow.
|
|
156
|
+
|
|
157
|
+
The result is two sets: `guaranteedTripIds` and `guaranteedConnections`.
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
### Stage 11 — Minimal transfer time filter
|
|
162
|
+
|
|
163
|
+
**Where:** `TransferBoardFilter.minimalTransferTime()`
|
|
164
|
+
|
|
165
|
+
Departures whose scheduled time is too close to the vehicle's arrival are dropped — there is not enough time for passengers to board. Thresholds differ by mode:
|
|
166
|
+
|
|
167
|
+
| Mode | Minimum gap |
|
|
168
|
+
|---|---|
|
|
169
|
+
| Bus, tram, trolleybus | 60 seconds |
|
|
170
|
+
| Metro, train, ferry, funicular | 120 seconds |
|
|
171
|
+
|
|
172
|
+
**Guaranteed transfers are exempt** from this filter — the operator has guaranteed the connection, so time is irrelevant.
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
### Stage 12 — Same-stop-name filter (Stage 2)
|
|
177
|
+
|
|
178
|
+
**Where:** `TransferBoardFilter.sameStopNameTransfer()`
|
|
179
|
+
|
|
180
|
+
A second pass of the stop-name check, applied after guaranteed transfers are identified. Rules:
|
|
181
|
+
|
|
182
|
+
- Bus/tram/trolleybus at a stop with a different name than the arrival stop → **dropped**
|
|
183
|
+
- Metro/train/ferry/funicular → **kept** (they serve different physical locations by design)
|
|
184
|
+
- Any trip in `guaranteedTripIds` → **kept** (guaranteed transfer exemption)
|
|
185
|
+
- Any trip in `keepAlwaysTripIds` (see Stage 14) → **kept**
|
|
186
|
+
|
|
187
|
+
This stage is separate from the Stage 7 pre-filter because at Stage 7 we did not yet know which trips were guaranteed.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
### Stage 13 — Categorise trips for line-direction filter
|
|
192
|
+
|
|
193
|
+
**Where:** `V4TransferBoardsController.ts`
|
|
194
|
+
|
|
195
|
+
Before running the expensive direction filter, the controller categorises remaining candidates:
|
|
196
|
+
|
|
197
|
+
- **Always keep:** guaranteed transfers + "keep always" types (metro, train, ferry, funicular)
|
|
198
|
+
- **Needs filtering:** everything else (bus, tram, trolleybus that are not guaranteed)
|
|
199
|
+
|
|
200
|
+
Only the "needs filtering" set is passed to `findRelevantTripIdsFromLines`. This avoids running direction analysis on trips that will be kept unconditionally.
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### Stage 14 — Guaranteed transfer time adjustment
|
|
205
|
+
|
|
206
|
+
**Where:** `V4TransferBoardsController.ts`
|
|
207
|
+
|
|
208
|
+
For guaranteed transfers, the displayed departure time is **replaced** with the arriving vehicle's own predicted arrival time. This is the time the bus/tram will actually wait until, so showing the vehicle's arrival time as the "departure" is more useful to passengers than the originally scheduled departure time.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
### Stage 15 — Sort (pre-output)
|
|
213
|
+
|
|
214
|
+
**Where:** `TransferBoardSorter.sort()`
|
|
215
|
+
|
|
216
|
+
A four-criterion stable sort applied before the direction filter:
|
|
217
|
+
|
|
218
|
+
1. **Metro first** — metro departures before all others
|
|
219
|
+
2. **Metro name ascending** — within metro, sort by `route_short_name` (A before B before C)
|
|
220
|
+
3. **Departure time ascending** — earlier departures first
|
|
221
|
+
4. **`direction_id` ascending** — tiebreaker for trips with identical departure times
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### Stage 16 — Line-direction filter (`findRelevantTripIdsFromLines`)
|
|
226
|
+
|
|
227
|
+
**Where:** `TransferFacade.findRelevantTripIdsFromLines()`
|
|
228
|
+
|
|
229
|
+
This is the most complex stage. It determines whether each candidate trip is going somewhere _new_ for the passenger, or whether it is effectively doubling back along the route the passenger just arrived on.
|
|
230
|
+
|
|
231
|
+
For each candidate trip, the facade loads its stop sequence from `gtfsDelayComputation` or `vpPublicStopTimeCache`. It then applies two sequential sub-filters:
|
|
232
|
+
|
|
233
|
+
#### Sub-filter A: Forward-subset check (`filterOutForwardSubgroupOfLine`)
|
|
234
|
+
|
|
235
|
+
**Question:** Does this candidate trip's future stops form a strict subset of the current vehicle's future stops?
|
|
236
|
+
|
|
237
|
+
If every stop the candidate will visit is also a future stop on the current vehicle's route, then there is no point transferring — the passenger will get there anyway without changing. Such trips are **dropped**.
|
|
238
|
+
|
|
239
|
+
**Example:** Current vehicle is bus 207 going A→B→C→D. Candidate bus 150 goes B→C. Since B and C are both future stops of 207, transferring to 150 is redundant → dropped.
|
|
240
|
+
|
|
241
|
+
#### Sub-filter B: Backtracking conflict check (`filterOutLinesWithBacktrackingConflict`)
|
|
242
|
+
|
|
243
|
+
**Question:** Do this candidate trip's next N stops overlap with the current vehicle's previous N stops in a way that suggests it is heading back the same way?
|
|
244
|
+
|
|
245
|
+
Configured by `countPreviousStopsToAllow` (default `0`). The value defines how many of the current vehicle's previous stops the candidate trip is allowed to share in its upcoming stops. If the candidate shares more than that number, it is **dropped** (it's going backwards). `0` means no overlap is permitted at all.
|
|
246
|
+
|
|
247
|
+
The strictness of the stop matching is controlled by `isOppositeDirectionFilterStopNameStrict` (default `true`): when true, both `stop_id` AND `stop_name` must match; when false, only `stop_id`.
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
### Stage 17 — Combine approved trip IDs
|
|
252
|
+
|
|
253
|
+
**Where:** `TransferBoardFilter.keepAlwaysLinesAndTripIds()`
|
|
254
|
+
|
|
255
|
+
The final set of approved trip IDs is the union of:
|
|
256
|
+
- `guaranteedTripIds` (from Stage 10)
|
|
257
|
+
- `keepAlwaysTripIds` (metro/train/ferry/funicular, from Stage 13)
|
|
258
|
+
- Trips that passed the direction filter (from Stage 16)
|
|
259
|
+
|
|
260
|
+
All other trips are discarded from the candidate list here.
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
### Stage 18 — Output grouping and per-route cap
|
|
265
|
+
|
|
266
|
+
**Where:** `TransferDepartureCacheTransformation.transform()`
|
|
267
|
+
|
|
268
|
+
Before the final limit is applied, departures are grouped by route and capped to prevent one line from dominating the board:
|
|
269
|
+
|
|
270
|
+
| Mode | Grouping key | Cap |
|
|
271
|
+
|---|---|---|
|
|
272
|
+
| **Metro** | `route_short_name + route_type + direction_id` | 2 departure times merged into one `departure_timestamp.minutes[]` entry |
|
|
273
|
+
| **Non-metro** | `route_short_name + route_type + direction_id` | 2 separate departure entries per group |
|
|
274
|
+
|
|
275
|
+
Both modes use the same grouping key. The `route_type` component prevents collisions between lines that share a `route_short_name` across transport types. The `direction_id` is resolved with the following fallback chain: `departure.direction_id` (from the precomputed departure cache) → `position.detailed_info.direction_id` (from the live vehicle position) → in-memory cache (keyed by `route_short_name + trip_headsign`, populated by earlier entries in the same batch) → `0`.
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
### Stage 19 — Final filter: limit, time window, deduplication
|
|
280
|
+
|
|
281
|
+
**Where:** `TransferBoardFilter.filterDepartures()`
|
|
282
|
+
|
|
283
|
+
The last stage applies three rules:
|
|
284
|
+
|
|
285
|
+
1. **Time window cut:** departures after `arrivalTime + 1 hour` are dropped.
|
|
286
|
+
2. **Trip deduplication:** if two entries share the same `trip_id`, only the first (earliest) is kept.
|
|
287
|
+
3. **Limit:** the result is truncated to the requested `limit` (query parameter, default typically 10).
|
|
288
|
+
|
|
289
|
+
**Guaranteed transfers are exempt from the time window and limit** — they always appear regardless of how many other results there are, as long as they are still within the `max_wait_sec` window.
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
### Quick reference: which filter each vehicle type is subject to
|
|
294
|
+
|
|
295
|
+
| Filter | Bus/Tram/Trolleybus | Metro/Train/Ferry/Funicular | Guaranteed transfer |
|
|
296
|
+
|---|---|---|---|
|
|
297
|
+
| Stage 6 same-line opposite direction | Yes (when `direction_id` known) | Yes (when `direction_id` known) | Yes |
|
|
298
|
+
| Stage 7 pre-filter (wrong stop name) | Yes | No | No (exempt) |
|
|
299
|
+
| Stage 11 min transfer time | Yes (60 s) | Yes (120 s) | **No** |
|
|
300
|
+
| Stage 12 same-stop-name | Yes | No | **No** |
|
|
301
|
+
| Stage 16 direction filter | Yes | **No** | **No** |
|
|
302
|
+
| Stage 17 combine | All types pass via their category | — | — |
|
|
303
|
+
| Stage 18 per-route cap (2 entries) | Yes | Yes (metro grouped differently) | Yes |
|
|
304
|
+
| Stage 19 limit | Yes | Yes | **No** |
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
### Key Redis keys used
|
|
309
|
+
|
|
310
|
+
| Key pattern | Purpose |
|
|
311
|
+
|---|---|
|
|
312
|
+
| `gtfsStopsCache:{aswId}` | ASW node → GTFS stop_id mapping |
|
|
313
|
+
| `gtfsPublicDepartureCache:{stopId}` | Sorted set of precomputed departures (score = departure Unix timestamp) |
|
|
314
|
+
| `gtfsDelayComputation:{tripId}` | Per-trip RT stop times, delay, shapes |
|
|
315
|
+
| `vpPublicStopTimeCache:{vehicleKey}` | Per-vehicle stop time lookup (used to identify current trip) |
|
|
316
|
+
| `vpPublicCache:*` | Geo-indexed real-time vehicle positions |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/pid",
|
|
3
|
-
"version": "5.9.
|
|
3
|
+
"version": "5.9.1-dev.2451558942",
|
|
4
4
|
"description": "Golemio PID Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"@commitlint/cli": "^11.0.0",
|
|
42
42
|
"@commitlint/config-conventional": "^11.0.0",
|
|
43
43
|
"@golemio/cli": "1.11.2",
|
|
44
|
-
"@golemio/core": "3.0.
|
|
44
|
+
"@golemio/core": "^3.0.7-dev.2423000960",
|
|
45
45
|
"@golemio/db-common": "1.2.2",
|
|
46
46
|
"@golemio/eslint-config": "1.1.3",
|
|
47
47
|
"@swc/core": "^1.15.10",
|