@golemio/pid 5.9.1-dev.2457825323 → 5.9.1-dev.2464819473

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.
Files changed (47) hide show
  1. package/dist/integration-engine/ropid-gtfs/data-access/cache/GtfsTripStopsCacheRepository.d.ts +10 -0
  2. package/dist/integration-engine/ropid-gtfs/data-access/cache/GtfsTripStopsCacheRepository.js +79 -0
  3. package/dist/integration-engine/ropid-gtfs/data-access/cache/GtfsTripStopsCacheRepository.js.map +1 -0
  4. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.d.ts +4 -0
  5. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js +28 -0
  6. package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map +1 -1
  7. package/dist/integration-engine/ropid-gtfs/ioc/Di.js +4 -0
  8. package/dist/integration-engine/ropid-gtfs/ioc/Di.js.map +1 -1
  9. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.d.ts +2 -0
  10. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js +2 -0
  11. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js.map +1 -1
  12. package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js +1 -0
  13. package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js.map +1 -1
  14. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js +1 -0
  15. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js.map +1 -1
  16. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/EnsureCacheTask.js +1 -0
  17. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/EnsureCacheTask.js.map +1 -1
  18. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsTripStopsCacheTask.d.ts +13 -0
  19. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsTripStopsCacheTask.js +48 -0
  20. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsTripStopsCacheTask.js.map +1 -0
  21. package/dist/output-gateway/pid/controllers/v4/V4TransferBoardsController.js +4 -15
  22. package/dist/output-gateway/pid/controllers/v4/V4TransferBoardsController.js.map +1 -1
  23. package/dist/output-gateway/pid/ioc/Di.js +2 -0
  24. package/dist/output-gateway/pid/ioc/Di.js.map +1 -1
  25. package/dist/output-gateway/pid/ioc/OgPidToken.d.ts +1 -0
  26. package/dist/output-gateway/pid/ioc/OgPidToken.js +1 -0
  27. package/dist/output-gateway/pid/ioc/OgPidToken.js.map +1 -1
  28. package/dist/output-gateway/pid/service/facade/TransferFacade.d.ts +4 -2
  29. package/dist/output-gateway/pid/service/facade/TransferFacade.js +25 -34
  30. package/dist/output-gateway/pid/service/facade/TransferFacade.js.map +1 -1
  31. package/dist/output-gateway/ropid-gtfs/data-access/redis/GtfsTripStopsRepository.d.ts +9 -0
  32. package/dist/output-gateway/ropid-gtfs/data-access/redis/GtfsTripStopsRepository.js +56 -0
  33. package/dist/output-gateway/ropid-gtfs/data-access/redis/GtfsTripStopsRepository.js.map +1 -0
  34. package/dist/schema-definitions/ropid-gtfs/redis/const.d.ts +1 -0
  35. package/dist/schema-definitions/ropid-gtfs/redis/const.js +2 -1
  36. package/dist/schema-definitions/ropid-gtfs/redis/const.js.map +1 -1
  37. package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IGtfsTripStopsCacheDto.d.ts +3 -0
  38. package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IGtfsTripStopsCacheDto.js +3 -0
  39. package/dist/schema-definitions/ropid-gtfs/redis/interfaces/IGtfsTripStopsCacheDto.js.map +1 -0
  40. package/dist/schema-definitions/ropid-gtfs/redis/schemas/GtfsTripStopsCacheDtoSchema.d.ts +4 -0
  41. package/dist/schema-definitions/ropid-gtfs/redis/schemas/GtfsTripStopsCacheDtoSchema.js +22 -0
  42. package/dist/schema-definitions/ropid-gtfs/redis/schemas/GtfsTripStopsCacheDtoSchema.js.map +1 -0
  43. package/docs/asyncapi.yaml +15 -0
  44. package/docs/cache/types/redis.md +16 -3
  45. package/docs/implementation_documentation.md +4 -2
  46. package/docs/processing/transferboards_filtering.md +5 -4
  47. package/package.json +8 -8
@@ -4,6 +4,7 @@ import { ITransferOutputDto } from "../../interfaces/ITransferOutputDto";
4
4
  import { IV4TransferDto } from "../../interfaces/IV4TransferDto";
5
5
  import { TransferStops } from "../../interfaces/TransferStops";
6
6
  import { TripsToTransfers } from "../../interfaces/TripsToTransfers";
7
+ import { GtfsTripStopsRepository } from "../../../ropid-gtfs/data-access/redis/GtfsTripStopsRepository";
7
8
  import { DelayComputationRepository } from "../../../public/data-access/redis/DelayComputationRepository";
8
9
  import { PublicGtfsDepartureRepository } from "../../../public/data-access/redis/PublicGtfsDepartureRepository";
9
10
  import { PublicStopTimeRepository } from "../../../public/data-access/redis/PublicStopTimeRepository";
@@ -34,12 +35,13 @@ export declare class TransferFacade {
34
35
  private tripRepository;
35
36
  private stopTimeRepository;
36
37
  private delayComputationRepository;
38
+ private gtfsTripStopsRepository;
37
39
  private static readonly DEPARTURES_LIMIT_LOWER;
38
40
  private static readonly DEPARTURES_LIMIT_UPPER;
39
41
  private static readonly MINUTE_AS_MS;
40
42
  private static readonly OPEN_MINUTES_IN_PAST;
41
43
  private static readonly OPEN_MINUTES_IN_PAST_MS;
42
- constructor(log: ILogger, publicDepartureRepository: PublicGtfsDepartureRepository, departuresRepository: DeparturesRepository, departureTransformation: TransferDepartureTransformation, tripRepository: PublicVehiclePositionsRepository, stopTimeRepository: PublicStopTimeRepository, delayComputationRepository: DelayComputationRepository);
44
+ constructor(log: ILogger, publicDepartureRepository: PublicGtfsDepartureRepository, departuresRepository: DeparturesRepository, departureTransformation: TransferDepartureTransformation, tripRepository: PublicVehiclePositionsRepository, stopTimeRepository: PublicStopTimeRepository, delayComputationRepository: DelayComputationRepository, gtfsTripStopsRepository: GtfsTripStopsRepository);
43
45
  getTransferDepartures(stopIds: string[], tripNumber: string | null, currentMoment: Moment, minutesOffset: number, timeZone?: string): Promise<ITransferOutputDto[]>;
44
46
  private static sortByDepartureTime;
45
47
  private static isDifferentLine;
@@ -63,7 +65,7 @@ export declare class TransferFacade {
63
65
  private static filterOutLinesWithBacktrackingConflict;
64
66
  private static applyFiltersSequentially;
65
67
  private static rawTripLinesEntriesToTransfersMap;
66
- findRelevantTripIdsFromLines(otherLinesTripIdsFromDelay: Set<string>, currentStopInput: IStop, currentTripId: string, stopTimeIds: string[][], previousCountMax?: number, isOppositeDirectionFilterStopNameStrict?: boolean): Promise<string[]>;
68
+ findRelevantTripIdsFromLines(tripIds: Set<string>, currentStopInput: IStop, currentTripId: string, previousCountMax?: number, isOppositeDirectionFilterStopNameStrict?: boolean): Promise<string[]>;
67
69
  /**
68
70
  * Fallback options as defined by ROPID
69
71
  */
@@ -28,6 +28,7 @@ const DepartureSkip_1 = require("../../helpers/enums/DepartureSkip");
28
28
  const TransferBoardFilter_1 = require("../../helpers/TransferBoardFilter");
29
29
  const OgPidToken_1 = require("../../ioc/OgPidToken");
30
30
  const PIDDepartureModel_1 = __importDefault(require("../../models/helpers/PIDDepartureModel"));
31
+ const GtfsTripStopsRepository_1 = require("../../../ropid-gtfs/data-access/redis/GtfsTripStopsRepository");
31
32
  const DelayComputationRepository_1 = require("../../../public/data-access/redis/DelayComputationRepository");
32
33
  const PublicGtfsDepartureRepository_1 = require("../../../public/data-access/redis/PublicGtfsDepartureRepository");
33
34
  const PublicStopTimeRepository_1 = require("../../../public/data-access/redis/PublicStopTimeRepository");
@@ -41,7 +42,7 @@ const const_1 = require("../../../../const");
41
42
  const TransferDepartureTransformation_1 = require("../transformations/TransferDepartureTransformation");
42
43
  const DUMMY_EMPTY_STRING_FOR_FILTERING = "";
43
44
  let TransferFacade = TransferFacade_1 = class TransferFacade {
44
- constructor(log, publicDepartureRepository, departuresRepository, departureTransformation, tripRepository, stopTimeRepository, delayComputationRepository) {
45
+ constructor(log, publicDepartureRepository, departuresRepository, departureTransformation, tripRepository, stopTimeRepository, delayComputationRepository, gtfsTripStopsRepository) {
45
46
  this.log = log;
46
47
  this.publicDepartureRepository = publicDepartureRepository;
47
48
  this.departuresRepository = departuresRepository;
@@ -49,6 +50,7 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
49
50
  this.tripRepository = tripRepository;
50
51
  this.stopTimeRepository = stopTimeRepository;
51
52
  this.delayComputationRepository = delayComputationRepository;
53
+ this.gtfsTripStopsRepository = gtfsTripStopsRepository;
52
54
  }
53
55
  async getTransferDepartures(stopIds, tripNumber, currentMoment, minutesOffset, timeZone = shared_1.RopidRouterUtils.TIMEZONE) {
54
56
  let departureEntities = [];
@@ -112,11 +114,12 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
112
114
  };
113
115
  }), currentStopId, stopIds, null, shouldKeepDeparturesWithPossiblyGuaranteedTransfer).map((d) => d.departure);
114
116
  }
117
+ // platform_code not available in gtfsTripStopsCache and not used by line-direction filters
115
118
  static jsonPathDataToLineFilterStop(stopInfo) {
116
119
  return {
117
120
  stop_id: GtfsStopParser_1.GtfsStopParser.normalizedNodeId(stopInfo[0]),
118
121
  stop_name: stopInfo[1],
119
- platform_code: stopInfo[2] || DUMMY_EMPTY_STRING_FOR_FILTERING,
122
+ platform_code: DUMMY_EMPTY_STRING_FOR_FILTERING,
120
123
  };
121
124
  }
122
125
  calculateTimeFrom(currentArrival, currentPosition, delayedTimeFrom, plannedTimeFrom) {
@@ -310,13 +313,7 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
310
313
  static isOtherEndNearCurrent(otherStops, currentStop) {
311
314
  const next = otherStops[0];
312
315
  const last = otherStops[otherStops.length - 1];
313
- if (next.stop_id !== last.stop_id) {
314
- return false;
315
- }
316
- if (next.stop_id === currentStop.stop_id) {
317
- return true;
318
- }
319
- return false;
316
+ return next.stop_id === last.stop_id && next.stop_id === currentStop.stop_id;
320
317
  }
321
318
  static isOtherSubsetOfCurrent(otherStops, currentStops) {
322
319
  let oIndex = 0, oLen = otherStops.length, cLen = currentStops.length;
@@ -390,7 +387,8 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
390
387
  const previousCountMax = params.options.previousCountMax;
391
388
  if (!params.data.otherLinesMap.size)
392
389
  return params;
393
- const previousCount = Math.min(previousCountMax, Math.max(previousCountMax, currentLine.currentStopIndex));
390
+ // Cap at currentStopIndex can't look back more stops than exist before current position
391
+ const previousCount = Math.min(previousCountMax, currentLine.currentStopIndex);
394
392
  // Get previous N stops before currentStop, most recent first
395
393
  const currentLinePastStops = currentLine.stops
396
394
  .slice(0, currentLine.currentStopIndex) // all stops before current
@@ -419,7 +417,7 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
419
417
  static async applyFiltersSequentially(params, filters) {
420
418
  return filters.reduce((promiseChain, filterFn) => promiseChain.then(filterFn), Promise.resolve(params));
421
419
  }
422
- static rawTripLinesEntriesToTransfersMap(currentStopInput, currentTripId, stopTimesMap, rawTripIds, rawLinesMap) {
420
+ static rawTripLinesEntriesToTransfersMap(currentStopInput, currentTripId, rawLinesMap) {
423
421
  const otherLinesMap = new Map();
424
422
  // apply same transformations as later on the other trips, so we have same format of stop_id / stop_name
425
423
  const currentStop = TransferFacade_1.jsonPathDataToLineFilterStop([
@@ -427,18 +425,12 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
427
425
  currentStopInput.stop_name,
428
426
  currentStopInput.platform_code,
429
427
  ]);
430
- for (const [tripId, rawLine] of [...rawLinesMap.entries()].concat([...stopTimesMap.entries()])) {
428
+ for (const [tripId, rawLine] of rawLinesMap.entries()) {
431
429
  if (!rawLine?.length) {
432
430
  continue;
433
431
  }
432
+ const stops = rawLine.map(TransferFacade_1.jsonPathDataToLineFilterStop);
434
433
  let index = null;
435
- let stops = [];
436
- if (tripId === currentTripId || rawTripIds.has(tripId)) {
437
- stops = rawLine.map(TransferFacade_1.jsonPathDataToLineFilterStop);
438
- }
439
- else {
440
- stops = rawLine.map((s) => TransferFacade_1.jsonPathDataToLineFilterStop([s.stop_id, s.stop_name]));
441
- }
442
434
  if (tripId === currentTripId) {
443
435
  index = rawLine.findIndex((rawStop) => {
444
436
  return rawStop[0] === currentStopInput.stop_id; // gtfs stop id format
@@ -452,23 +444,20 @@ let TransferFacade = TransferFacade_1 = class TransferFacade {
452
444
  }
453
445
  return otherLinesMap;
454
446
  }
455
- async findRelevantTripIdsFromLines(otherLinesTripIdsFromDelay, currentStopInput, currentTripId, stopTimeIds, previousCountMax = 1, isOppositeDirectionFilterStopNameStrict = true) {
456
- if (!otherLinesTripIdsFromDelay.size && !stopTimeIds.length) {
447
+ async findRelevantTripIdsFromLines(tripIds, currentStopInput, currentTripId, previousCountMax = 1, isOppositeDirectionFilterStopNameStrict = true) {
448
+ if (!tripIds.size) {
457
449
  return [];
458
450
  }
459
- otherLinesTripIdsFromDelay.add(currentTripId);
460
- const jsonPath = "$.stop_times[*].stop['stop_id','stop_name']";
461
- const jsonPropertiesCount = 2;
462
- // JSON.MGET has some serious redis/valkey CPU implications, and we can load stop-times
463
- // for trips where there is position from stop-times-cache ... so let's combine these two flows in parallel
464
- const [tripsToStopTimes, rawLinesMap] = await Promise.all([
465
- this.stopTimeRepository.getManyPublicStopTimeCaches(stopTimeIds),
466
- this.delayComputationRepository.getJsonPathFieldsAsListOfValues(Array.from(otherLinesTripIdsFromDelay.values()), jsonPath, jsonPropertiesCount),
467
- ]);
468
- if (!rawLinesMap || !tripsToStopTimes) {
469
- throw new golemio_errors_1.GeneralError("Failed to find lines and stops for transfer trips", this.constructor.name, "Failed to read stop_id and stop_name properties", 500);
451
+ const allTripIds = new Set(tripIds);
452
+ allTripIds.add(currentTripId);
453
+ const gtfsTripStopsMap = await this.gtfsTripStopsRepository.getMultipleTripStops([...allTripIds]);
454
+ const rawLinesMap = new Map();
455
+ for (const [tripId, dto] of gtfsTripStopsMap.entries()) {
456
+ if (dto?.stops?.length) {
457
+ rawLinesMap.set(tripId, dto.stops);
458
+ }
470
459
  }
471
- const otherLinesMap = TransferFacade_1.rawTripLinesEntriesToTransfersMap(currentStopInput, currentTripId, tripsToStopTimes, otherLinesTripIdsFromDelay, rawLinesMap);
460
+ const otherLinesMap = TransferFacade_1.rawTripLinesEntriesToTransfersMap(currentStopInput, currentTripId, rawLinesMap);
472
461
  const currentLine = otherLinesMap.get(currentTripId) || null;
473
462
  if (!currentLine?.stops.length) {
474
463
  throw new golemio_errors_1.GeneralError(`Cannot find data in delay cache for current trip '${currentTripId}'`, this.constructor.name);
@@ -530,11 +519,13 @@ exports.TransferFacade = TransferFacade = TransferFacade_1 = __decorate([
530
519
  __param(4, (0, tsyringe_1.inject)(OgPidToken_1.OgPidToken.PublicVehiclePositionsRepository)),
531
520
  __param(5, (0, tsyringe_1.inject)(OgPidToken_1.OgPidToken.PublicStopTimeRepository)),
532
521
  __param(6, (0, tsyringe_1.inject)(OgPidToken_1.OgPidToken.DelayComputationRepository)),
522
+ __param(7, (0, tsyringe_1.inject)(OgPidToken_1.OgPidToken.GtfsTripStopsRepository)),
533
523
  __metadata("design:paramtypes", [Object, PublicGtfsDepartureRepository_1.PublicGtfsDepartureRepository,
534
524
  data_access_1.DeparturesRepository,
535
525
  TransferDepartureTransformation_1.TransferDepartureTransformation,
536
526
  PublicVehiclePositionsRepository_1.PublicVehiclePositionsRepository,
537
527
  PublicStopTimeRepository_1.PublicStopTimeRepository,
538
- DelayComputationRepository_1.DelayComputationRepository])
528
+ DelayComputationRepository_1.DelayComputationRepository,
529
+ GtfsTripStopsRepository_1.GtfsTripStopsRepository])
539
530
  ], TransferFacade);
540
531
  //# sourceMappingURL=TransferFacade.js.map
@@ -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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"}
@@ -0,0 +1,9 @@
1
+ import { IGtfsTripStopsCacheDto } from "../../../../schema-definitions/ropid-gtfs/redis/interfaces/IGtfsTripStopsCacheDto";
2
+ import { IoRedisConnector } from "@golemio/core/dist/helpers/data-access/redis/IoRedisConnector";
3
+ import { ILogger } from "@golemio/core/dist/helpers/logger/LoggerProvider";
4
+ export declare class GtfsTripStopsRepository {
5
+ private redisConnector;
6
+ private log;
7
+ constructor(redisConnector: IoRedisConnector, log: ILogger);
8
+ getMultipleTripStops(tripIds: string[]): Promise<Map<string, IGtfsTripStopsCacheDto | null>>;
9
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.GtfsTripStopsRepository = void 0;
16
+ const const_1 = require("../../../../schema-definitions/ropid-gtfs/redis/const");
17
+ const IoRedisConnector_1 = require("@golemio/core/dist/helpers/data-access/redis/IoRedisConnector");
18
+ const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
19
+ const ioc_1 = require("@golemio/core/dist/output-gateway/ioc");
20
+ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
21
+ const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
22
+ let GtfsTripStopsRepository = class GtfsTripStopsRepository {
23
+ constructor(redisConnector, log) {
24
+ this.redisConnector = redisConnector;
25
+ this.log = log;
26
+ }
27
+ async getMultipleTripStops(tripIds) {
28
+ const map = new Map();
29
+ if (!tripIds.length) {
30
+ return map;
31
+ }
32
+ if (!this.redisConnector.isConnected()) {
33
+ await this.redisConnector.connect();
34
+ }
35
+ const connection = this.redisConnector.getConnection();
36
+ const keys = tripIds.map((id) => `${const_1.GTFS_TRIP_STOPS_NAMESPACE_PREFIX}:${id}`);
37
+ try {
38
+ const results = await connection.mget(keys);
39
+ for (let i = 0; i < tripIds.length; i++) {
40
+ map.set(tripIds[i], results[i] ? JSON.parse(results[i]) : null);
41
+ }
42
+ return map;
43
+ }
44
+ catch (error) {
45
+ throw new golemio_errors_1.GeneralError("Cannot get multiple trip stops from cache", this.constructor.name, error);
46
+ }
47
+ }
48
+ };
49
+ exports.GtfsTripStopsRepository = GtfsTripStopsRepository;
50
+ exports.GtfsTripStopsRepository = GtfsTripStopsRepository = __decorate([
51
+ (0, tsyringe_1.injectable)(),
52
+ __param(0, (0, tsyringe_1.inject)(ioc_1.ContainerToken.RedisConnector)),
53
+ __param(1, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
54
+ __metadata("design:paramtypes", [IoRedisConnector_1.IoRedisConnector, Object])
55
+ ], GtfsTripStopsRepository);
56
+ //# sourceMappingURL=GtfsTripStopsRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GtfsTripStopsRepository.js","sourceRoot":"","sources":["../../../../../src/output-gateway/ropid-gtfs/data-access/redis/GtfsTripStopsRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,iFAA+E;AAE/E,oGAAiG;AACjG,wEAAqE;AAErE,+DAAuE;AACvE,6EAAwE;AACxE,iEAAwE;AAGjE,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAChC,YACmD,cAAgC,EAC7C,GAAY;QADC,mBAAc,GAAd,cAAc,CAAkB;QAC7C,QAAG,GAAH,GAAG,CAAS;IAC/C,CAAC;IAEG,KAAK,CAAC,oBAAoB,CAAC,OAAiB;QAC/C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyC,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC;QACf,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,wCAAgC,IAAI,EAAE,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrE,CAAC;YAED,OAAO,GAAG,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,6BAAY,CAAC,2CAA2C,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtG,CAAC;IACL,CAAC;CACJ,CAAA;AA/BY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,qBAAU,GAAE;IAGJ,WAAA,IAAA,iBAAM,EAAC,oBAAc,CAAC,cAAc,CAAC,CAAA;IACrC,WAAA,IAAA,iBAAM,EAAC,qBAAS,CAAC,MAAM,CAAC,CAAA;qCADsC,mCAAgB;GAF1E,uBAAuB,CA+BnC"}
@@ -2,4 +2,5 @@ export declare const GTFS_RUN_SCHEDULE_NAMESPACE_PREFIX = "gtfsRunSchedule";
2
2
  export declare const PUBLIC_DEPARTURE_NAMESPACE_PREFIX = "gtfsPublicDepartureCache";
3
3
  export declare const GTFS_STOPS_NAMESPACE_PREFIX = "gtfsStopsCache";
4
4
  export declare const CONFIG_NAMESPACE_PREFIX = "config";
5
+ export declare const GTFS_TRIP_STOPS_NAMESPACE_PREFIX = "gtfsTripStopsCache";
5
6
  export declare const NOT_PUBLIC_VEHICLES_KEY = "notPublicVehicles";
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NOT_PUBLIC_VEHICLES_KEY = exports.CONFIG_NAMESPACE_PREFIX = exports.GTFS_STOPS_NAMESPACE_PREFIX = exports.PUBLIC_DEPARTURE_NAMESPACE_PREFIX = exports.GTFS_RUN_SCHEDULE_NAMESPACE_PREFIX = void 0;
3
+ exports.NOT_PUBLIC_VEHICLES_KEY = exports.GTFS_TRIP_STOPS_NAMESPACE_PREFIX = exports.CONFIG_NAMESPACE_PREFIX = exports.GTFS_STOPS_NAMESPACE_PREFIX = exports.PUBLIC_DEPARTURE_NAMESPACE_PREFIX = exports.GTFS_RUN_SCHEDULE_NAMESPACE_PREFIX = void 0;
4
4
  exports.GTFS_RUN_SCHEDULE_NAMESPACE_PREFIX = "gtfsRunSchedule";
5
5
  exports.PUBLIC_DEPARTURE_NAMESPACE_PREFIX = "gtfsPublicDepartureCache";
6
6
  exports.GTFS_STOPS_NAMESPACE_PREFIX = "gtfsStopsCache";
7
7
  exports.CONFIG_NAMESPACE_PREFIX = "config";
8
+ exports.GTFS_TRIP_STOPS_NAMESPACE_PREFIX = "gtfsTripStopsCache";
8
9
  exports.NOT_PUBLIC_VEHICLES_KEY = "notPublicVehicles";
9
10
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../src/schema-definitions/ropid-gtfs/redis/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,kCAAkC,GAAG,iBAAiB,CAAC;AACvD,QAAA,iCAAiC,GAAG,0BAA0B,CAAC;AAC/D,QAAA,2BAA2B,GAAG,gBAAgB,CAAC;AAC/C,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AACnC,QAAA,uBAAuB,GAAG,mBAAmB,CAAC"}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../../src/schema-definitions/ropid-gtfs/redis/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,kCAAkC,GAAG,iBAAiB,CAAC;AACvD,QAAA,iCAAiC,GAAG,0BAA0B,CAAC;AAC/D,QAAA,2BAA2B,GAAG,gBAAgB,CAAC;AAC/C,QAAA,uBAAuB,GAAG,QAAQ,CAAC;AACnC,QAAA,gCAAgC,GAAG,oBAAoB,CAAC;AACxD,QAAA,uBAAuB,GAAG,mBAAmB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export interface IGtfsTripStopsCacheDto {
2
+ stops: Array<[string, string]>;
3
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IGtfsTripStopsCacheDto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IGtfsTripStopsCacheDto.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/ropid-gtfs/redis/interfaces/IGtfsTripStopsCacheDto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { JSONSchemaType } from "@golemio/core/dist/shared/ajv";
2
+ import { IGtfsTripStopsCacheDto } from "../interfaces/IGtfsTripStopsCacheDto";
3
+ declare const gtfsTripStopsCacheDtoSchema: JSONSchemaType<IGtfsTripStopsCacheDto>;
4
+ export { gtfsTripStopsCacheDtoSchema as GtfsTripStopsCacheDtoSchema };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GtfsTripStopsCacheDtoSchema = void 0;
4
+ const gtfsTripStopsCacheDtoSchema = {
5
+ $schema: "http://json-schema.org/draft-04/schema#",
6
+ title: "GtfsTripStopsCacheDto",
7
+ type: "object",
8
+ properties: {
9
+ stops: {
10
+ type: "array",
11
+ items: {
12
+ type: "array",
13
+ items: [{ type: "string" }, { type: "string" }],
14
+ minItems: 2,
15
+ maxItems: 2,
16
+ },
17
+ },
18
+ },
19
+ required: ["stops"],
20
+ };
21
+ exports.GtfsTripStopsCacheDtoSchema = gtfsTripStopsCacheDtoSchema;
22
+ //# sourceMappingURL=GtfsTripStopsCacheDtoSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GtfsTripStopsCacheDtoSchema.js","sourceRoot":"","sources":["../../../../../src/schema-definitions/ropid-gtfs/redis/schemas/GtfsTripStopsCacheDtoSchema.ts"],"names":[],"mappings":";;;AAGA,MAAM,2BAA2B,GAA2C;IACxE,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,uBAAuB;IAC9B,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,KAAK,EAAE;YACH,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACH,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;gBAC/C,QAAQ,EAAE,CAAC;gBACX,QAAQ,EAAE,CAAC;aACd;SACJ;KACJ;IACD,QAAQ,EAAE,CAAC,OAAO,CAAC;CACtB,CAAC;AAEsC,kEAA2B"}
@@ -105,6 +105,17 @@ channels:
105
105
  messages:
106
106
  empty:
107
107
  $ref: "#/components/messages/emptyMessage"
108
+ ropidgtfs.refreshGtfsTripStopsCache:
109
+ address: vehicle-positions.ropidgtfs.refreshGtfsTripStopsCache
110
+ description: Refresh GtfsTripStopsCache — pre-computed trip stop sequences for transfer board line-direction filtering
111
+ bindings:
112
+ amqp:
113
+ is: queue
114
+ queue:
115
+ durable: true
116
+ messages:
117
+ empty:
118
+ $ref: "#/components/messages/emptyMessage"
108
119
  ropidgtfs.ensureCache:
109
120
  address: vehicle-positions.ropidgtfs.ensureCache
110
121
  description: Triggers all cache refreshes to ensure caches are populated and up to date
@@ -378,6 +389,10 @@ operations:
378
389
  action: "send"
379
390
  channel:
380
391
  $ref: "#/channels/ropidgtfs.refreshGtfsStopsCache"
392
+ ropidgtfs.refreshGtfsTripStopsCache:
393
+ action: "send"
394
+ channel:
395
+ $ref: "#/channels/ropidgtfs.refreshGtfsTripStopsCache"
381
396
  updateGTFSTripId:
382
397
  action: "send"
383
398
  channel:
@@ -540,6 +540,17 @@ flowchart LR
540
540
  task_RefreshJISInfotextsCacheTask -- "`HSET jisCache:$setId:infotexts a jisCache:$setId:stops-infotexts, EXPIRE staré sady`" --> redis_jisCache;
541
541
  ```
542
542
 
543
+ ### gtfsTripStopsCache:*
544
+
545
+ - Klíč `gtfsTripStopsCache:*`, kde `*` je GTFS `trip_id`
546
+ - Hodnota je JSON string s polem zastávek seřazených podle `stop_sequence`:
547
+ - `stops` – pole dvojic `[stop_id, stop_name]`
548
+ - TTL 6 hodin (musí přesáhnout maximální dobu jízdy spoje ~3,5h + interval tasku 1h)
549
+ - Cache se přegeneruje jednou za hodinu (cron přes `EnsureCacheTask`) a po přenačtení GTFS jízdních řádů (přes `CheckSavedRowsAndReplaceTablesTask`)
550
+ - SQL dotaz vybírá všechny spoje, jejichž první zastávka (`stop_sequence = 1`) má `departure_datetime` v okně `now() − 1h` až `now() + 2h`, a pro každý takový spoj agreguje všechny zastávky
551
+ - Zapisuje `GtfsTripStopsCacheRepository` (IE) v dávkách po 200 klíčích přes Redis pipeline; před zápisem se validují data přes AJV schéma, nevalidní záznamy se přeskočí a zalogují
552
+ - Čte `GtfsTripStopsRepository` (OG) přes `MGET` — využívá `TransferFacade.findRelevantTripIdsFromLines()` pro filtrování přestupních linek
553
+
543
554
  ### Flowchart (v4 transferboards API)
544
555
 
545
556
  ![flowchart.svg](../../assets/V4Transferboards.svg)
@@ -560,7 +571,7 @@ link na .drawio [soubor](../../assets/V4Transferboards.drawio)
560
571
 
561
572
  ## Manuální refresh cache (EnsureCacheTask)
562
573
 
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).
574
+ `EnsureCacheTask` slouží jako manuální spouštěč obnovy všech 5 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 5 cílových front. Dvě z nich míří do různých workerů (cross-worker routing přes RabbitMQ exchange), tři míří do stejného workeru (TimetableWorker).
564
575
 
565
576
  ### Flowchart
566
577
 
@@ -576,12 +587,14 @@ flowchart LR
576
587
  q1["`AMQP refreshGTFSTripData`"]
577
588
  q2["`AMQP refreshPublicGtfsDepartureCache`"]
578
589
  q3["`AMQP refreshGtfsStopsCache`"]
579
- q4["`AMQP refreshJISInfotextsCache`"]
590
+ q4["`AMQP refreshGtfsTripStopsCache`"]
591
+ q5["`AMQP refreshJISInfotextsCache`"]
580
592
 
581
593
  trigger --> task
582
594
  task -- cross-worker --> exchange_vp --> q1
583
595
  task -- same-worker --> exchange_self --> q2
584
596
  exchange_self --> q3
585
- task -- cross-worker --> exchange_jis --> q4
597
+ exchange_self --> q4
598
+ task -- cross-worker --> exchange_jis --> q5
586
599
  ```
587
600
 
@@ -648,6 +648,7 @@ Task slouží jako ruční spouštěč obnovení všech cache. Nespouští se au
648
648
  - název: vehicle-positions.vehiclepositions.refreshGTFSTripData
649
649
  - název: vehicle-positions.ropidgtfs.refreshPublicGtfsDepartureCache
650
650
  - název: vehicle-positions.ropidgtfs.refreshGtfsStopsCache
651
+ - název: vehicle-positions.ropidgtfs.refreshGtfsTripStopsCache
651
652
  - název: vehicle-positions.jis.refreshJISInfotextsCache
652
653
  - datové zdroje
653
654
  - žádné
@@ -1489,10 +1490,11 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
1489
1490
  - cachováno na 5 sekund (stale-while-revalidate 5 sekund)
1490
1491
  - zdrojové cache záznamy
1491
1492
  - `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
+ - `gtfsTripStopsCache:*` – předpočítaný seznam zastávek spoje (`[stop_id, stop_name][]`), používáno ve filtru směru linek (`findRelevantTripIdsFromLines`)
1494
+ - `gtfsDelayComputation:*` – predikovaný čas příjezdu vozidla na zastávku
1493
1495
  - `vpPublicCache:*` – aktuální poloha a zpoždění vozidla
1494
1496
  - `gtfsPublicDepartureCache:*` – statické odjezdy ze zastávek (vč. `connections` a `wheelchair_accessible`)
1495
- - `vpPublicStopTimeCache:*` – live zastávkové časy pro spoje se známou polohou
1497
+ - `vpPublicStopTimeCache:*` – live zastávkové časy pro spoje se známou polohou (platform_code u vlaků)
1496
1498
  - `jisCache:*` – aktivní infotexty pro dané zastávky
1497
1499
  - načítání odjezdů z cache (`gtfsPublicDepartureCache`)
1498
1500
  - 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
@@ -192,12 +192,12 @@ This stage is separate from the Stage 7 pre-filter because at Stage 7 we did not
192
192
 
193
193
  **Where:** `V4TransferBoardsController.ts`
194
194
 
195
- Before running the expensive direction filter, the controller categorises remaining candidates:
195
+ Before running the direction filter, the controller categorises remaining candidates:
196
196
 
197
197
  - **Always keep:** guaranteed transfers + "keep always" types (metro, train, ferry, funicular)
198
198
  - **Needs filtering:** everything else (bus, tram, trolleybus that are not guaranteed)
199
199
 
200
- Only the "needs filtering" set is passed to `findRelevantTripIdsFromLines`. This avoids running direction analysis on trips that will be kept unconditionally.
200
+ Only the "needs filtering" set of trip IDs is passed to `findRelevantTripIdsFromLines`. This avoids running direction analysis on trips that will be kept unconditionally.
201
201
 
202
202
  ---
203
203
 
@@ -228,7 +228,7 @@ A four-criterion stable sort applied before the direction filter:
228
228
 
229
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
230
 
231
- For each candidate trip, the facade loads its stop sequence from `gtfsDelayComputation` or `vpPublicStopTimeCache`. It then applies two sequential sub-filters:
231
+ For all candidate trip IDs (plus the current trip), the facade loads their stop sequences from `gtfsTripStopsCache:{tripId}` via a single `MGET` call. Each cache entry contains an ordered list of `[stop_id, stop_name]` tuples representing the full route of the trip. It then applies two sequential sub-filters:
232
232
 
233
233
  #### Sub-filter A: Forward-subset check (`filterOutForwardSubgroupOfLine`)
234
234
 
@@ -242,7 +242,7 @@ If every stop the candidate will visit is also a future stop on the current vehi
242
242
 
243
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
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.
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. The actual lookback count is capped at `currentStopIndex` — cannot look back more stops than exist before the current position.
246
246
 
247
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
248
 
@@ -311,6 +311,7 @@ The last stage applies three rules:
311
311
  |---|---|
312
312
  | `gtfsStopsCache:{aswId}` | ASW node → GTFS stop_id mapping |
313
313
  | `gtfsPublicDepartureCache:{stopId}` | Sorted set of precomputed departures (score = departure Unix timestamp) |
314
+ | `gtfsTripStopsCache:{tripId}` | Pre-computed ordered list of stops per trip (`[stop_id, stop_name][]`), used by line-direction filter |
314
315
  | `gtfsDelayComputation:{tripId}` | Per-trip RT stop times, delay, shapes |
315
316
  | `vpPublicStopTimeCache:{vehicleKey}` | Per-vehicle stop time lookup (used to identify current trip) |
316
317
  | `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.1-dev.2457825323",
3
+ "version": "5.9.1-dev.2464819473",
4
4
  "description": "Golemio PID Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "url": "https://gitlab.com/operator-ict/golemio/code/modules/pid"
34
34
  },
35
35
  "engines": {
36
- "node": ">=20.0.0",
36
+ "node": ">=22.0.0",
37
37
  "npm": ">=8.0.0"
38
38
  },
39
39
  "devDependencies": {
@@ -41,14 +41,14 @@
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.7-dev.2423000960",
44
+ "@golemio/core": "3.0.6",
45
45
  "@golemio/db-common": "1.2.2",
46
46
  "@golemio/eslint-config": "1.1.3",
47
47
  "@swc/core": "^1.15.10",
48
48
  "@types/chai": "4.2.3",
49
49
  "@types/chai-as-promised": "7.1.2",
50
50
  "@types/mocha": "^10.0.10",
51
- "@types/node": "^20.12.7",
51
+ "@types/node": "^22.19.17",
52
52
  "@types/pg-copy-streams": "^1.2.5",
53
53
  "@types/sinon": "^9.0.10",
54
54
  "@types/supertest": "^2.0.10",
@@ -61,7 +61,7 @@
61
61
  "dotenv": "^8.2.0",
62
62
  "eslint": "^8.1.1",
63
63
  "husky": "^4.3.7",
64
- "mocha": "^10.0.0",
64
+ "mocha": "^11.7.5",
65
65
  "npm-run-all": "^4.1.5",
66
66
  "nyc": "^17.1.0",
67
67
  "prettier": "^2.5.1",
@@ -73,12 +73,12 @@
73
73
  "ts-node": "^10.9.2",
74
74
  "ts-patch": "^3.3.0",
75
75
  "tsconfig-paths": "^4.2.0",
76
- "typedoc": "^0.28.14",
76
+ "typedoc": "0.28.19",
77
77
  "typescript": "^5.9.3",
78
78
  "typescript-transform-paths": "^3.5.5"
79
79
  },
80
80
  "peerDependencies": {
81
- "@golemio/core": "^3.0.1-dev.2 || ^3.0.0 || ^2.0.1"
81
+ "@golemio/core": "^3.0.7-dev.2 || ^3.0.0"
82
82
  },
83
83
  "overrides": {
84
84
  "@google-cloud/storage": {
@@ -89,7 +89,7 @@
89
89
  }
90
90
  },
91
91
  "dependencies": {
92
- "@golemio/ovapi-gtfs-realtime-bindings": "1.3.0",
92
+ "@golemio/ovapi-gtfs-realtime-bindings": "1.4.0",
93
93
  "@turf/turf": "^6.5.0",
94
94
  "cheap-ruler": "^3.0.2",
95
95
  "csv-parser": "^3.0.0",