@golemio/pid 4.0.2 → 4.0.3-dev.1993091012
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/README.md +1 -1
- package/db/example/redis/gtfsStopsCacheMock.json +8 -0
- package/db/example/redis/jisCacheMock.json +31 -0
- package/db/migrations/postgresql/20250716143052-add-stop-name-to-combined-stop-times.js +53 -0
- package/db/migrations/postgresql/sqls/20250716143052-add-stop-name-to-combined-stop-times-down.sql +47 -0
- package/db/migrations/postgresql/sqls/20250716143052-add-stop-name-to-combined-stop-times-up.sql +47 -0
- package/dist/helpers/GtfsStopParser.d.ts +2 -0
- package/dist/helpers/GtfsStopParser.js +11 -8
- package/dist/helpers/GtfsStopParser.js.map +1 -1
- package/dist/helpers/jis/JISInfotextSeverityLevelPriority.d.ts +6 -0
- package/dist/helpers/jis/JISInfotextSeverityLevelPriority.js +11 -0
- package/dist/helpers/jis/JISInfotextSeverityLevelPriority.js.map +1 -0
- package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js +0 -1
- package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js.map +1 -1
- package/dist/integration-engine/jis/ioc/Di.js +10 -0
- package/dist/integration-engine/jis/ioc/Di.js.map +1 -1
- package/dist/integration-engine/jis/ioc/JISContainerToken.d.ts +4 -0
- package/dist/integration-engine/jis/ioc/JISContainerToken.js +5 -0
- package/dist/integration-engine/jis/ioc/JISContainerToken.js.map +1 -1
- package/dist/integration-engine/jis/repositories/JISInfotextsRedisRepository.d.ts +9 -0
- package/dist/integration-engine/jis/repositories/JISInfotextsRedisRepository.js +86 -0
- package/dist/integration-engine/jis/repositories/JISInfotextsRedisRepository.js.map +1 -0
- package/dist/integration-engine/jis/repositories/JISInfotextsRepository.d.ts +6 -1
- package/dist/integration-engine/jis/repositories/JISInfotextsRepository.js +50 -2
- package/dist/integration-engine/jis/repositories/JISInfotextsRepository.js.map +1 -1
- package/dist/integration-engine/jis/repositories/JISMetadataRepository.d.ts +4 -1
- package/dist/integration-engine/jis/repositories/JISMetadataRepository.js +37 -12
- package/dist/integration-engine/jis/repositories/JISMetadataRepository.js.map +1 -1
- package/dist/integration-engine/jis/transformations/JISInfotextCacheTranformation.d.ts +7 -0
- package/dist/integration-engine/jis/transformations/JISInfotextCacheTranformation.js +37 -0
- package/dist/integration-engine/jis/transformations/JISInfotextCacheTranformation.js.map +1 -0
- package/dist/integration-engine/jis/workers/JISWorker.js +1 -0
- package/dist/integration-engine/jis/workers/JISWorker.js.map +1 -1
- package/dist/integration-engine/jis/workers/tasks/AbstractFetchJISResourceTask.d.ts +14 -0
- package/dist/integration-engine/jis/workers/tasks/AbstractFetchJISResourceTask.js +71 -0
- package/dist/integration-engine/jis/workers/tasks/AbstractFetchJISResourceTask.js.map +1 -0
- package/dist/integration-engine/jis/workers/tasks/FetchJISEventsTask.d.ts +10 -4
- package/dist/integration-engine/jis/workers/tasks/FetchJISEventsTask.js +15 -22
- package/dist/integration-engine/jis/workers/tasks/FetchJISEventsTask.js.map +1 -1
- package/dist/integration-engine/jis/workers/tasks/FetchJISInfotextsTask.d.ts +10 -5
- package/dist/integration-engine/jis/workers/tasks/FetchJISInfotextsTask.js +15 -23
- package/dist/integration-engine/jis/workers/tasks/FetchJISInfotextsTask.js.map +1 -1
- package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsCacheTask.d.ts +13 -0
- package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsCacheTask.js +47 -0
- package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsCacheTask.js.map +1 -0
- package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsTask.d.ts +1 -2
- package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsTask.js +5 -4
- package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/RopidGTFSCisStopsModel.d.ts +18 -0
- package/dist/integration-engine/ropid-gtfs/RopidGTFSCisStopsModel.js +44 -0
- package/dist/integration-engine/ropid-gtfs/RopidGTFSCisStopsModel.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.d.ts +5 -1
- package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.js +24 -0
- package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/index.d.ts +1 -0
- package/dist/integration-engine/ropid-gtfs/index.js +1 -0
- package/dist/integration-engine/ropid-gtfs/index.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/ioc/Di.js +8 -0
- package/dist/integration-engine/ropid-gtfs/ioc/Di.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.d.ts +3 -0
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js +3 -0
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/transformations/RopidDeparturesPresetsTransformation.js +1 -1
- package/dist/integration-engine/ropid-gtfs/transformations/RopidDeparturesPresetsTransformation.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js +1 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js +8 -5
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsStopsCacheTask.d.ts +12 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsStopsCacheTask.js +44 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsStopsCacheTask.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/data-access/cache/GtfsStopsRedisRepository.d.ts +12 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/data-access/cache/GtfsStopsRedisRepository.js +87 -0
- package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/data-access/cache/GtfsStopsRedisRepository.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/interfaces/TripRepositoryInterfaces.d.ts +2 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.d.ts +3 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js +100 -85
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.js +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PublicApiTripTransformation.js +2 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PublicApiTripTransformation.js.map +1 -1
- package/dist/output-gateway/index.js +1 -0
- package/dist/output-gateway/index.js.map +1 -1
- package/dist/output-gateway/jis/data-access/cache/JISInfotextsRedisRepository.d.ts +17 -0
- package/dist/output-gateway/jis/data-access/cache/JISInfotextsRedisRepository.js +113 -0
- package/dist/output-gateway/jis/data-access/cache/JISInfotextsRedisRepository.js.map +1 -0
- package/dist/output-gateway/jis/ioc/Di.js +2 -2
- package/dist/output-gateway/jis/ioc/Di.js.map +1 -1
- package/dist/output-gateway/jis/ioc/OgJisToken.d.ts +2 -0
- package/dist/output-gateway/jis/ioc/OgJisToken.js +2 -0
- package/dist/output-gateway/jis/ioc/OgJisToken.js.map +1 -1
- package/dist/output-gateway/pid/controllers/v3/V3TransferBoardsController.js.map +1 -1
- package/dist/output-gateway/pid/controllers/v4/V4TransferBoardsController.d.ts +17 -0
- package/dist/output-gateway/pid/controllers/v4/V4TransferBoardsController.js +154 -0
- package/dist/output-gateway/pid/controllers/v4/V4TransferBoardsController.js.map +1 -0
- package/dist/output-gateway/pid/controllers/v4/interfaces/ITransferBoardsParams.d.ts +14 -0
- package/dist/output-gateway/pid/controllers/v4/interfaces/ITransferBoardsParams.js +3 -0
- package/dist/output-gateway/pid/controllers/v4/interfaces/ITransferBoardsParams.js.map +1 -0
- package/dist/output-gateway/pid/domain/InfotextInterfaces.d.ts +5 -0
- package/dist/output-gateway/pid/helpers/JISInfotextStopSuppressionFilter.d.ts +4 -1
- package/dist/output-gateway/pid/helpers/JISInfotextStopSuppressionFilter.js +7 -1
- package/dist/output-gateway/pid/helpers/JISInfotextStopSuppressionFilter.js.map +1 -1
- package/dist/output-gateway/pid/helpers/TransferBoardFilter.d.ts +5 -0
- package/dist/output-gateway/pid/helpers/TransferBoardFilter.js +33 -0
- package/dist/output-gateway/pid/helpers/TransferBoardFilter.js.map +1 -0
- package/dist/output-gateway/pid/helpers/TransferBoardSorter.d.ts +6 -0
- package/dist/output-gateway/pid/helpers/TransferBoardSorter.js +61 -0
- package/dist/output-gateway/pid/helpers/TransferBoardSorter.js.map +1 -0
- package/dist/output-gateway/pid/index.d.ts +50 -0
- package/dist/output-gateway/pid/index.js.map +1 -1
- package/dist/output-gateway/pid/ioc/Di.js +62 -6
- package/dist/output-gateway/pid/ioc/Di.js.map +1 -1
- package/dist/output-gateway/pid/ioc/OgPidToken.d.ts +11 -0
- package/dist/output-gateway/pid/ioc/OgPidToken.js +11 -0
- package/dist/output-gateway/pid/ioc/OgPidToken.js.map +1 -1
- package/dist/output-gateway/pid/routers/index.d.ts +1 -0
- package/dist/output-gateway/pid/routers/index.js +3 -1
- package/dist/output-gateway/pid/routers/index.js.map +1 -1
- package/dist/output-gateway/pid/routers/v4/V4PIDRouter.d.ts +16 -0
- package/dist/output-gateway/pid/routers/v4/V4PIDRouter.js +67 -0
- package/dist/output-gateway/pid/routers/v4/V4PIDRouter.js.map +1 -0
- package/dist/output-gateway/pid/service/facade/InfotextFacade.d.ts +7 -2
- package/dist/output-gateway/pid/service/facade/InfotextFacade.js +29 -4
- package/dist/output-gateway/pid/service/facade/InfotextFacade.js.map +1 -1
- package/dist/output-gateway/pid/service/facade/StopFacade.d.ts +12 -3
- package/dist/output-gateway/pid/service/facade/StopFacade.js +43 -7
- package/dist/output-gateway/pid/service/facade/StopFacade.js.map +1 -1
- package/dist/output-gateway/pid/service/facade/TransferFacade.d.ts +11 -9
- package/dist/output-gateway/pid/service/facade/TransferFacade.js +117 -14
- package/dist/output-gateway/pid/service/facade/TransferFacade.js.map +1 -1
- package/dist/output-gateway/pid/service/helpers/PlatformCodeResolver.d.ts +7 -1
- package/dist/output-gateway/pid/service/helpers/PlatformCodeResolver.js +12 -0
- package/dist/output-gateway/pid/service/helpers/PlatformCodeResolver.js.map +1 -1
- package/dist/output-gateway/pid/service/transformations/JISInfotextCacheTransferTransformation.d.ts +13 -0
- package/dist/output-gateway/pid/service/transformations/JISInfotextCacheTransferTransformation.js +31 -0
- package/dist/output-gateway/pid/service/transformations/JISInfotextCacheTransferTransformation.js.map +1 -0
- package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.d.ts +27 -0
- package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.js +78 -0
- package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.js.map +1 -0
- package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.d.ts +1 -1
- package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.js +4 -4
- package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.js.map +1 -1
- package/dist/output-gateway/public/ioc/Di.js +1 -1
- package/dist/output-gateway/public/ioc/Di.js.map +1 -1
- package/dist/output-gateway/ropid-gtfs/data-access/redis/GtfsStopsRedisRepository.d.ts +13 -0
- package/dist/output-gateway/ropid-gtfs/data-access/redis/GtfsStopsRedisRepository.js +83 -0
- package/dist/output-gateway/ropid-gtfs/data-access/redis/GtfsStopsRedisRepository.js.map +1 -0
- package/dist/output-gateway/shared/constants/route-version.d.ts +2 -1
- package/dist/output-gateway/shared/constants/route-version.js +1 -0
- package/dist/output-gateway/shared/constants/route-version.js.map +1 -1
- package/dist/output-gateway/{public → shared}/service/VPSubscriber.d.ts +4 -2
- package/dist/output-gateway/{public → shared}/service/VPSubscriber.js +1 -1
- package/dist/output-gateway/shared/service/VPSubscriber.js.map +1 -0
- package/dist/schema-definitions/jis/redis/const.d.ts +1 -0
- package/dist/schema-definitions/jis/redis/const.js +2 -1
- package/dist/schema-definitions/jis/redis/const.js.map +1 -1
- package/dist/schema-definitions/jis/redis/interfaces/IJISInfotextDto.d.ts +17 -0
- package/dist/schema-definitions/jis/redis/interfaces/IJISInfotextDto.js +3 -0
- package/dist/schema-definitions/jis/redis/interfaces/IJISInfotextDto.js.map +1 -0
- package/dist/schema-definitions/jis/redis/interfaces/IJISMetadataDto.d.ts +1 -5
- package/dist/schema-definitions/jis/redis/schemas/JISInfotextDtoSchema.d.ts +3 -0
- package/dist/schema-definitions/jis/redis/schemas/JISInfotextDtoSchema.js +59 -0
- package/dist/schema-definitions/jis/redis/schemas/JISInfotextDtoSchema.js.map +1 -0
- package/dist/schema-definitions/jis/redis/schemas/JISMetadataDtoSchema.js +5 -11
- package/dist/schema-definitions/jis/redis/schemas/JISMetadataDtoSchema.js.map +1 -1
- package/dist/schema-definitions/ropid-departures-presets/index.d.ts +1 -0
- package/dist/schema-definitions/ropid-departures-presets/index.js +3 -0
- package/dist/schema-definitions/ropid-departures-presets/index.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/interfaces/IStopCisDto.d.ts +16 -0
- package/dist/schema-definitions/ropid-gtfs/interfaces/IStopCisDto.js +3 -0
- package/dist/schema-definitions/ropid-gtfs/interfaces/IStopCisDto.js.map +1 -0
- package/dist/schema-definitions/ropid-gtfs/interfaces/IStopDto.d.ts +1 -0
- package/dist/schema-definitions/ropid-gtfs/models/StopCisDto.d.ts +58 -0
- package/dist/schema-definitions/ropid-gtfs/models/StopCisDto.js +69 -0
- package/dist/schema-definitions/ropid-gtfs/models/StopCisDto.js.map +1 -0
- package/dist/schema-definitions/ropid-gtfs/redis/const.d.ts +1 -0
- package/dist/schema-definitions/ropid-gtfs/redis/const.js +2 -1
- package/dist/schema-definitions/ropid-gtfs/redis/const.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.d.ts +3 -2
- package/dist/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.js +4 -0
- package/dist/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/models/views/interfaces/IPublicStopTimeDto.d.ts +1 -0
- package/dist/schema-definitions/vehicle-positions/redis/interfaces/IPublicApiCacheDto.d.ts +2 -0
- package/dist/schema-definitions/vehicle-positions/redis/interfaces/IPublicStopTimeCacheDto.d.ts +1 -0
- package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicApiCacheDtoSchema.js +8 -0
- package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicApiCacheDtoSchema.js.map +1 -1
- package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicStopTimeCacheDtoSchema.js +4 -1
- package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicStopTimeCacheDtoSchema.js.map +1 -1
- package/docs/asyncapi.yaml +45 -0
- package/docs/cache/types/redis.md +82 -2
- package/docs/implementation_documentation.md +2 -0
- package/docs/jis/index.md +17 -5
- package/docs/openapi-input.yaml +13 -2
- package/docs/openapi-output.yaml +326 -4
- package/package.json +2 -2
- package/dist/output-gateway/public/service/VPSubscriber.js.map +0 -1
|
@@ -62,7 +62,7 @@ flowchart TD;
|
|
|
62
62
|
- Pomocný timestamp se načte pomocí `GET` a vrátí se jako hodnota hlavičky `Last-Modified` převedená na ISO string. Pokud timestamp neexistuje, hodnota hlavičky bude unix timestamp 0 jako ISO string. Využívá se především pro monitoring a alerting
|
|
63
63
|
- Feedy se generují nejméně 3x za minutu (rabín 2x) pomocí queue-message
|
|
64
64
|
- Používají redis-mutex na zamykání, aby neběželo více shodných tasků v jeden okamžik
|
|
65
|
-
- Pokud generování stíhá běžet rychleji, task se snaží do ±7 vteřin svého běhu spustit nové generování souborů (opět přes queue-message).
|
|
65
|
+
- Pokud generování stíhá běžet rychleji, task se snaží do ±7 vteřin svého běhu spustit nové generování souborů (opět přes queue-message).
|
|
66
66
|
|
|
67
67
|
### Flowchart
|
|
68
68
|
|
|
@@ -152,6 +152,7 @@ flowchart TD;
|
|
|
152
152
|
- `cis_stop_platform_code` - nástupiště/kolej podle CIS u vlakových zastávek, jinde null
|
|
153
153
|
- `platform_code` - označení zastávky podle GTFS
|
|
154
154
|
- `stop_id` - GTFS id zastávky
|
|
155
|
+
- `stop_name` - název zastávky
|
|
155
156
|
- TTL 1 hodina a 5 minut
|
|
156
157
|
- Automatické promazání dat po úspěšném načtení GTFS jíždních řádů
|
|
157
158
|
- Cca jednou za 5 vteřin se přenačtou stop times pro všechny aktivní spoje. Generování může běžet pouze jednou, po dokončení tasku se spustí znovu (max čekání 4.8 vteřin)
|
|
@@ -313,4 +314,83 @@ flowchart TD;
|
|
|
313
314
|
rt_info["Obohacení o RT informace"];
|
|
314
315
|
get_departures--"Alespoň jedno vozidlo připadá nějakému spoji (aktivní, budoucí i zrušené) na odjezdu"-->rt_info;
|
|
315
316
|
rt_info--"RT informace o spoji"-->redis_repository<-->redis_public_cache;
|
|
316
|
-
```
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## Cache pro API přestupních tabulí (transfer boards)
|
|
320
|
+
|
|
321
|
+
*(přestupní tabule využívají také cache pro Public API, která je již popsána výše)*
|
|
322
|
+
|
|
323
|
+
### gtfsStopsCache:*
|
|
324
|
+
|
|
325
|
+
- Jednotlivé komponenty cache jsou členěny do sad s `$setId`
|
|
326
|
+
- `$setId` je id vygenerované datové sady (4 náhodné bajty reprezentované hexadecimálně)
|
|
327
|
+
- Nová sada je vytvořena při každém přenačtení cache
|
|
328
|
+
- Id `$setId` nejnovější datové sady se propaguje přes PubSub channel `gtfsStopsCache` a je také uloženo v cache jako hodnota položky `gtfsStopsCache:activeSetName`
|
|
329
|
+
- Komponenty:
|
|
330
|
+
- `gtfsStopsCache:$setId:aswNodeToGtfsStops` - Hash mapa, mapující daný ASW node na seznam pod něj spadajících zastávek (GTFS ids zastávek, odděleny čárkami)
|
|
331
|
+
- `gtfsStopsCache:$setId:cisToAswNode` - Hash mapa, mapující dané CIS id zastávky na příslušný ASW node
|
|
332
|
+
- TTL žádné (mimo přenačtení cache, kdy je namísto okamžitého promazání původnímu setu nastaveno TTL 1 minuta)
|
|
333
|
+
- Cache je celá přenačtena vždy po přenačtení jízdních řádů (tedy 1-2x denně při stavu k červenci 2025)
|
|
334
|
+
|
|
335
|
+
### jisCache:*
|
|
336
|
+
|
|
337
|
+
- Jednotlivé komponenty cache jsou členěny do sad s `$setId`
|
|
338
|
+
- `$setId` je id vygenerované datové sady (4 náhodné bajty reprezentované hexadecimálně)
|
|
339
|
+
- Nová sada je vytvořena při každém přenačtení cache
|
|
340
|
+
- Id `$setId` nejnovější datové sady se propaguje přes PubSub channel `jisCache` a je také uloženo v cache jako hodnota položky `jisCache:activeSetName`
|
|
341
|
+
- Komponenty:
|
|
342
|
+
- `jisCache:$setId:infotexts` - Hash mapa, mapující dané id infotextu na informace o onom infotextu (JSON jako string)
|
|
343
|
+
- `jisCache:$setId:stops-infotexts` - Hash mapa, mapující dané GTFS id zástavky na seznam infotextů s ní asociovaných (ids infotextů, odděleny čárkami)
|
|
344
|
+
- TTL žádné (mimo přenačtení cache, kdy je namísto okamžitého promazání původnímu setu nastaveno TTL 1 minuta)
|
|
345
|
+
- Cache je celá přenačtena při každé aktualizaci infotextů (tento proces je více popsán v [Dokumentaci propisu VYMI (JIS) dat do datové platformy](../../jis/index.md))
|
|
346
|
+
|
|
347
|
+
### Flowchart (refresh gtfsStopsCache:*)
|
|
348
|
+
|
|
349
|
+
```mermaid
|
|
350
|
+
flowchart LR
|
|
351
|
+
finish_up_gtfs("`Dokončení zpracování GTFS JŘ`");
|
|
352
|
+
|
|
353
|
+
psql_ropidgtfs_cis_stops[("`PSQL ropidgtfs_cis_stops`")];
|
|
354
|
+
psql_ropidgtfs_stops[("`PSQL ropidgtfs_stops`")];
|
|
355
|
+
|
|
356
|
+
redis_gtfsStopsCache[("`Redis gtfsStopsCache:\*`")];
|
|
357
|
+
|
|
358
|
+
amqp_refreshGtfsStopsCache["`AMQP refreshGtfsStopsCache`"];
|
|
359
|
+
|
|
360
|
+
task_RefreshGtfsStopsCacheTask["`RefreshGtfsStopsCacheTask`"];
|
|
361
|
+
|
|
362
|
+
finish_up_gtfs --> amqp_refreshGtfsStopsCache;
|
|
363
|
+
amqp_refreshGtfsStopsCache --> task_RefreshGtfsStopsCacheTask;
|
|
364
|
+
task_RefreshGtfsStopsCacheTask <-- "`ASW ids a CIS ids zastávek`" --> psql_ropidgtfs_cis_stops;
|
|
365
|
+
task_RefreshGtfsStopsCacheTask <-- "`ASW nodes a GTFS ids zastávek`" --> psql_ropidgtfs_stops;
|
|
366
|
+
task_RefreshGtfsStopsCacheTask -- "`HSET gtfsStopsCache:$setId:aswNodeToGtfsStops a gtfsStopsCache:$setId:cisToAswNode, EXPIRE staré sady`" --> redis_gtfsStopsCache;
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### Flowchart (refresh jisCache:*)
|
|
370
|
+
|
|
371
|
+
```mermaid
|
|
372
|
+
flowchart LR
|
|
373
|
+
refresh_infotexts("`Aktualizace infotextů`");
|
|
374
|
+
|
|
375
|
+
psql_jis_infotexts[("`PSQL jis_infotexts`")];
|
|
376
|
+
psql_jis_infotexts_ropidgtfs_stops[("`PSQL jis_infotexts_ropidgtfs_stops`")];
|
|
377
|
+
|
|
378
|
+
redis_jisCache[("`Redis jisCache:\*`")];
|
|
379
|
+
|
|
380
|
+
amqp_refreshJISInfotextsCache["`AMQP refreshJISInfotextsCache`"];
|
|
381
|
+
|
|
382
|
+
task_RefreshJISInfotextsTask["`RefreshJISInfotextsTask`"];
|
|
383
|
+
|
|
384
|
+
refresh_infotexts --> amqp_refreshJISInfotextsCache;
|
|
385
|
+
amqp_refreshJISInfotextsCache --> task_RefreshJISInfotextsTask;
|
|
386
|
+
task_RefreshJISInfotextsTask <-- "`Data infotextů`" --> psql_jis_infotexts;
|
|
387
|
+
task_RefreshJISInfotextsTask <-- "`GTFS ids zastávek a ids infotextů`" --> psql_jis_infotexts_ropidgtfs_stops;
|
|
388
|
+
task_RefreshJISInfotextsTask -- "`HSET jisCache:$setId:infotexts a jisCache:$setId:stops-infotexts, EXPIRE staré sady`" --> redis_jisCache;
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### Flowchart (v4 transferboards API)
|
|
392
|
+
|
|
393
|
+
```mermaid
|
|
394
|
+
flowchart TD;
|
|
395
|
+
todo["TODO"];
|
|
396
|
+
```
|
|
@@ -233,6 +233,7 @@ _:warning: Původním záměrem bylo využití OIS číselníku během zpracová
|
|
|
233
233
|
- rabin `0 */1 * * * *`
|
|
234
234
|
- prod `0 */1 * * * *`
|
|
235
235
|
- data mohou být stažena po manuálním zaslání zprávy do RabbitMQ fronty (primární způsob aktualizace dat je aktivní posílání a cron)
|
|
236
|
+
- při pasivním stahování se využívá ETag, který umožňuje přenášet pouze nová či změněná data; pokud se data od posledního načtení nezměnila, server vrátí informaci o bezezměněném obsahu
|
|
236
237
|
- název rabbitmq fronty
|
|
237
238
|
- vehicle-positions.jis.fetchJISEvents
|
|
238
239
|
|
|
@@ -253,6 +254,7 @@ _:warning: Původním záměrem bylo využití OIS číselníku během zpracová
|
|
|
253
254
|
- rabin `0 */1 * * * *`
|
|
254
255
|
- prod `0 */1 * * * *`
|
|
255
256
|
- data mohou být stažena po manuálním zaslání zprávy do RabbitMQ fronty (primární způsob aktualizace dat je aktivní posílání a cron)
|
|
257
|
+
- při pasivním stahování se využívá ETag, který umožňuje přenášet pouze nová či změněná data; pokud se data od posledního načtení nezměnila, server vrátí informaci o bezezměněném obsahu
|
|
256
258
|
- název rabbitmq fronty
|
|
257
259
|
- vehicle-positions.jis.fetchJISInfotexts
|
|
258
260
|
|
package/docs/jis/index.md
CHANGED
|
@@ -123,9 +123,11 @@ flowchart TB
|
|
|
123
123
|
subgraph "Golemio VP Integration Engine"
|
|
124
124
|
golemio_refresh_events_task["`RefreshJISEventsTask`"];
|
|
125
125
|
golemio_refresh_infotexts_task["`RefreshJISInfotextsTask`"];
|
|
126
|
+
golemio_refresh_infotexts_cache_task["`RefreshJISInfotextsCacheTask`"];
|
|
126
127
|
end
|
|
127
128
|
|
|
128
129
|
vp_pg[("`VP PostgreSQL`")];
|
|
130
|
+
vp_redis[("`VP Redis (Valkey)`")];
|
|
129
131
|
end
|
|
130
132
|
|
|
131
133
|
vymi_events_controller_create --> vymi_get_events;
|
|
@@ -134,8 +136,8 @@ flowchart TB
|
|
|
134
136
|
vymi_infotexts_controller_create --> vymi_get_infotexts;
|
|
135
137
|
vymi_infotexts_controller_update --> vymi_get_infotexts;
|
|
136
138
|
|
|
137
|
-
vymi_get_events
|
|
138
|
-
vymi_get_infotexts
|
|
139
|
+
vymi_get_events <-- "`SELECT aktuálních událostí z tabulek vehicle-positions.pid.jis_events a vehicle-positions.pid.jis_events_ropidgtfs_routes`" --> vymi_pg;
|
|
140
|
+
vymi_get_infotexts <-- "`SELECT aktuálních infotextů z tabulek vehicle-positions.pid.jis_infotexts a vehicle-positions.pid.jis_infotexts_ropidgtfs_stops`" --> vymi_pg;
|
|
139
141
|
|
|
140
142
|
vymi_get_events --> golemio_api_post_events;
|
|
141
143
|
vymi_get_infotexts --> golemio_api_post_infotexts;
|
|
@@ -151,9 +153,12 @@ flowchart TB
|
|
|
151
153
|
|
|
152
154
|
golemio_refresh_events_task -- "`UPSERT do tabulek vehicle-positions.pid.jis_events a vehicle-positions.pid.jis_events_ropidgtfs_routes`" --> vp_pg;
|
|
153
155
|
golemio_refresh_infotexts_task -- "`UPSERT do tabulek vehicle-positions.pid.jis_infotexts a vehicle-positions.pid.jis_infotexts_ropidgtfs_stops`" --> vp_pg;
|
|
156
|
+
golemio_refresh_infotexts_task --> golemio_refresh_infotexts_cache_task;
|
|
157
|
+
|
|
158
|
+
golemio_refresh_infotexts_cache_task -- "`Aktualizace cache jisCache:infotexts:* a jisCache:stop-infotexts:*`" --> vp_redis;
|
|
154
159
|
```
|
|
155
160
|
|
|
156
|
-
Formát zasílaných dat je dále více popsán v implementační dokumentaci ([události](../implementation_documentation.md#jis-events-1), [infotexty](../implementation_documentation.md#jis-infotexts-1)), stejně tak jako odkazy na [Input Gateway OpenAPI](../implementation_documentation.md#input-api) a popis [uložení dat](../implementation_documentation.md#uložení-dat) včetně databázového schema a popisu retence.
|
|
161
|
+
Formát zasílaných dat je dále více popsán v implementační dokumentaci ([události](../implementation_documentation.md#jis-events-1), [infotexty](../implementation_documentation.md#jis-infotexts-1)), stejně tak jako odkazy na [Input Gateway OpenAPI](../implementation_documentation.md#input-api) a popis [uložení dat](../implementation_documentation.md#uložení-dat) včetně databázového schema a popisu retence. Data infotextů jsou dále cachovány - tento proces je popsán v dokumentaci [Redis cache](../cache/types/redis.md#cache-pro-api-přestupních-tabulí-transfer-boards).
|
|
157
162
|
|
|
158
163
|
## Pasivní načítání (pull) dat
|
|
159
164
|
|
|
@@ -161,6 +166,8 @@ V případě potřeby (např. nedojde-li kvůli chybě k aktivnímu poslání da
|
|
|
161
166
|
|
|
162
167
|
Kromě manuálního spuštění vývojářem je nyní navíc aktivní cron task, který každou minutu automaticky spouští pasivní načítání dat z VYMI do Golemia. Tento mechanismus zajišťuje vyšší odolnost proti výpadkům v aktivním posílání (push) dat.
|
|
163
168
|
|
|
169
|
+
Při pasivním načítání dat z VYMI do Golemia se využívá mechanismus ETag, který umožňuje rozpoznat, zda se od posledního načtení data změnila. Díky tomu se při opakovaném dotazu přenášejí pouze nová nebo upravená data, zatímco v případě beze změny se vrací pouze informace o tom, že obsah zůstal stejný. Tento přístup zmenšuje objem přenášených dat a snižuje zátěž na databázi a server. ETagy jsou spravovány zvlášť pro události a pro infotexty, aby se změny každého typu vyhodnocovaly nezávisle.
|
|
170
|
+
|
|
164
171
|
Při pasivním načítání se z VYMI vždy přenačítají pouze aktuální (aktivní) události a infotexty:
|
|
165
172
|
- všechny události, které mají `status` `PUBLISHED`, a zároveň `updated_at` hodnotu z posledních 24 hodin nebo `active_period_end` je `NULL` nebo >= aktuální čas, neboli lidsky všechny publikované (ne-draft) události, které jsou aktivní nebo byly upraveny v posledním dnu;
|
|
166
173
|
- všechny infotexty, které mají `status` `PUBLISHED`, `visibility` `PUBLIC` a zároveň `active_period_end` je `NULL` nebo >= aktuální čas, neboli lidsky všechny aktivní, budoucí a publikované (ne-draft) infotexty.
|
|
@@ -200,6 +207,7 @@ flowchart TB
|
|
|
200
207
|
golemio_fetch_infotexts_task["`FetchJISInfotextsTask`"];
|
|
201
208
|
golemio_refresh_events_task["`RefreshJISEventsTask`"];
|
|
202
209
|
golemio_refresh_infotexts_task["`RefreshJISInfotextsTask`"];
|
|
210
|
+
golemio_refresh_infotexts_cache_task["`RefreshJISInfotextsCacheTask`"];
|
|
203
211
|
|
|
204
212
|
%% invisible unicode char due to https://github.com/orgs/community/discussions/106690
|
|
205
213
|
golemio_api_get_events["`HTTPS GET s API klíčem na https://api-vymi.golemio.cz/v1/exports/events/custom-format`"];
|
|
@@ -207,10 +215,11 @@ flowchart TB
|
|
|
207
215
|
end
|
|
208
216
|
|
|
209
217
|
vp_pg[("`VP PostgreSQL`")];
|
|
218
|
+
vp_redis[("`VP Redis (Valkey)`")];
|
|
210
219
|
end
|
|
211
220
|
|
|
212
|
-
vymi_get_events
|
|
213
|
-
vymi_get_infotexts
|
|
221
|
+
vymi_get_events <-- "`SELECT aktuálních událostí z tabulek vehicle-positions.pid.jis_events a vehicle-positions.pid.jis_events_ropidgtfs_routes`" --> vymi_pg;
|
|
222
|
+
vymi_get_infotexts <-- "`SELECT aktuálních infotextů z tabulek vehicle-positions.pid.jis_infotexts a vehicle-positions.pid.jis_infotexts_ropidgtfs_stops`" --> vymi_pg;
|
|
214
223
|
|
|
215
224
|
golemio_rabbit_fetch_events --> golemio_fetch_events_task;
|
|
216
225
|
golemio_rabbit_fetch_infotexts --> golemio_fetch_infotexts_task;
|
|
@@ -231,6 +240,9 @@ flowchart TB
|
|
|
231
240
|
|
|
232
241
|
golemio_refresh_events_task -- "`UPSERT do tabulek vehicle-positions.pid.jis_events a vehicle-positions.pid.jis_events_ropidgtfs_routes`" --> vp_pg;
|
|
233
242
|
golemio_refresh_infotexts_task -- "`UPSERT do tabulek vehicle-positions.pid.jis_infotexts a vehicle-positions.pid.jis_infotexts_ropidgtfs_stops`" --> vp_pg;
|
|
243
|
+
golemio_refresh_infotexts_task --> golemio_refresh_infotexts_cache_task;
|
|
244
|
+
|
|
245
|
+
golemio_refresh_infotexts_cache_task -- "`Aktualizace cache jisCache:infotexts:* a jisCache:stop-infotexts:*`" --> vp_redis;
|
|
234
246
|
```
|
|
235
247
|
|
|
236
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.
|
package/docs/openapi-input.yaml
CHANGED
|
@@ -453,6 +453,12 @@ components:
|
|
|
453
453
|
type: array
|
|
454
454
|
items:
|
|
455
455
|
type: object
|
|
456
|
+
required:
|
|
457
|
+
- routeName
|
|
458
|
+
- note
|
|
459
|
+
- apiVersion
|
|
460
|
+
- route
|
|
461
|
+
- query
|
|
456
462
|
properties:
|
|
457
463
|
routeName:
|
|
458
464
|
type: string
|
|
@@ -469,6 +475,9 @@ components:
|
|
|
469
475
|
query:
|
|
470
476
|
type: string
|
|
471
477
|
example: "?minutesAfter=300&limit=8&mode=departures&cisIds=40110"
|
|
478
|
+
isTesting:
|
|
479
|
+
type: boolean
|
|
480
|
+
example: true
|
|
472
481
|
JISEvents:
|
|
473
482
|
title: JIS events
|
|
474
483
|
type: array
|
|
@@ -831,14 +840,16 @@ components:
|
|
|
831
840
|
"note": "Tablo Zahradní město z centra (APEX)",
|
|
832
841
|
"apiVersion": 2,
|
|
833
842
|
"route": "/pid/departureboards",
|
|
834
|
-
"query": "?minutesAfter=40&limit=6&mode=departures&filter=routeHeadingOnceNoGapFill&order=real&aswIds=2781_2&aswIds=2781_52&skip=atStop&airCondition=true"
|
|
843
|
+
"query": "?minutesAfter=40&limit=6&mode=departures&filter=routeHeadingOnceNoGapFill&order=real&aswIds=2781_2&aswIds=2781_52&skip=atStop&airCondition=true",
|
|
844
|
+
"isTesting": true
|
|
835
845
|
},
|
|
836
846
|
{
|
|
837
847
|
"routeName": "apex-zahradnimesto-6048-kopie",
|
|
838
848
|
"note": "Tablo Zahradní město z centra (APEX)",
|
|
839
849
|
"apiVersion": 2,
|
|
840
850
|
"route": "/pid/departureboards",
|
|
841
|
-
"query": "?minutesAfter=40&limit=6&mode=departures&filter=routeHeadingOnceNoGapFill&order=real&aswIds=2781_2&aswIds=2781_52&skip=atStop&airCondition=true"
|
|
851
|
+
"query": "?minutesAfter=40&limit=6&mode=departures&filter=routeHeadingOnceNoGapFill&order=real&aswIds=2781_2&aswIds=2781_52&skip=atStop&airCondition=true",
|
|
852
|
+
"isTesting": false
|
|
842
853
|
}
|
|
843
854
|
]
|
|
844
855
|
JISEventsExample:
|
package/docs/openapi-output.yaml
CHANGED
|
@@ -36,6 +36,9 @@ tags:
|
|
|
36
36
|
- name: 🚏 PID Departure Boards (v3) - internal
|
|
37
37
|
description: Endpoints for internal use
|
|
38
38
|
|
|
39
|
+
- name: 🚏 PID Departure Boards (v4)
|
|
40
|
+
description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" /> <img src="https://img.shields.io/badge/stability-experimental-orange" alt="golemioapi-stability-badge" />
|
|
41
|
+
|
|
39
42
|
- name: 🗓️ Public GTFS Static Lookup (v2)
|
|
40
43
|
description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" />
|
|
41
44
|
|
|
@@ -1375,6 +1378,329 @@ paths:
|
|
|
1375
1378
|
type: string
|
|
1376
1379
|
example: ["U454Z301"]
|
|
1377
1380
|
|
|
1381
|
+
/v4/pid/transferboards:
|
|
1382
|
+
get:
|
|
1383
|
+
tags:
|
|
1384
|
+
- 🚏 PID Departure Boards (v4)
|
|
1385
|
+
summary: GET Transfer Boards
|
|
1386
|
+
parameters:
|
|
1387
|
+
- name: cisId
|
|
1388
|
+
in: query
|
|
1389
|
+
description: |
|
|
1390
|
+
CIS identifier of the stop or node. A list of CIS IDs can be found in [Prague Open data](https://opendata.praha.eu/datasets/https%3A%2F%2Fapi.opendata.praha.eu%2Flod%2Fcatalog%2F6ac8381f-ea19-4ea9-8949-92076809dc5a).
|
|
1391
|
+
Includes departures from all stops at the given CIS ID.
|
|
1392
|
+
Required if `aswId` is not provided. Only one of `cisId` or `aswId` can be used.
|
|
1393
|
+
required: false
|
|
1394
|
+
examples:
|
|
1395
|
+
cisId1:
|
|
1396
|
+
value: 58759
|
|
1397
|
+
summary: Anděl
|
|
1398
|
+
cisId2:
|
|
1399
|
+
value: 13035
|
|
1400
|
+
summary: Jesenice
|
|
1401
|
+
cisId3:
|
|
1402
|
+
value: 5454956
|
|
1403
|
+
summary: Praha-Uhříněves
|
|
1404
|
+
schema:
|
|
1405
|
+
type: number
|
|
1406
|
+
- name: aswId
|
|
1407
|
+
in: query
|
|
1408
|
+
description: |
|
|
1409
|
+
ASW identifier of the stop. The format is `nodeId/stopId` where stopId is not mandatory.
|
|
1410
|
+
You can use `_` instead of `/` or encode the slash sign with `%2F`,
|
|
1411
|
+
Includes departures from the given stop, plus from all stops at the given node (1330_1 -> 1330 -> 1330_1, 1330_2, ...),
|
|
1412
|
+
plus from all stops sharing the same name. Departures from associated metro and train stations are also included (Na Knížecí -> Anděl).
|
|
1413
|
+
Required if `cisId` is not provided. Only one of `cisId` or `aswId` can be used.
|
|
1414
|
+
required: false
|
|
1415
|
+
examples:
|
|
1416
|
+
aswId1:
|
|
1417
|
+
value: "1040_1"
|
|
1418
|
+
summary: "Anděl A (tram stop)"
|
|
1419
|
+
aswId2:
|
|
1420
|
+
value: "1040_14"
|
|
1421
|
+
summary: "Anděl G (bus stop)"
|
|
1422
|
+
aswId3:
|
|
1423
|
+
value: "1330_1"
|
|
1424
|
+
summary: "Jesenice A (bus stop - regional)"
|
|
1425
|
+
aswId4:
|
|
1426
|
+
value: "461_301"
|
|
1427
|
+
summary: "Praha-Uhříněves (train station)"
|
|
1428
|
+
schema:
|
|
1429
|
+
type: string
|
|
1430
|
+
maxLength: 20
|
|
1431
|
+
- name: tripNumber
|
|
1432
|
+
in: query
|
|
1433
|
+
description: |
|
|
1434
|
+
Trip number of the vehicle in which the transfer is planned.
|
|
1435
|
+
Use to filter out transfers for a specific trip.
|
|
1436
|
+
Represents the numeric part of the GTFS `trip_short_name` (`Os 2547` -> `2547`).
|
|
1437
|
+
Generally, `trip_short_name` is available only for train services.
|
|
1438
|
+
Required if `vehicleRegistrationNumber` is not provided. Only one of `tripNumber` or `vehicleRegistrationNumber` can be used.
|
|
1439
|
+
required: false
|
|
1440
|
+
examples:
|
|
1441
|
+
tripNumber1:
|
|
1442
|
+
value: 2547
|
|
1443
|
+
summary: Os 2547
|
|
1444
|
+
schema:
|
|
1445
|
+
type: number
|
|
1446
|
+
- name: vehicleRegistrationNumber
|
|
1447
|
+
in: query
|
|
1448
|
+
description: |
|
|
1449
|
+
Registration number of the vehicle in which the transfer is planned.
|
|
1450
|
+
Use to filter out transfers for a specific vehicle.
|
|
1451
|
+
Required if `tripNumber` is not provided. Only one of `tripNumber` or `vehicleRegistrationNumber` can be used.
|
|
1452
|
+
required: false
|
|
1453
|
+
examples:
|
|
1454
|
+
vehicleRegistrationNumber1:
|
|
1455
|
+
value: "1001"
|
|
1456
|
+
summary: "Vehicle registration number"
|
|
1457
|
+
schema:
|
|
1458
|
+
type: string
|
|
1459
|
+
maxLength: 20
|
|
1460
|
+
- name: routeType
|
|
1461
|
+
in: query
|
|
1462
|
+
description: |
|
|
1463
|
+
Transport type of the route in which the transfer is planned. This parameter is required to distinguish between different vehicle types, as trams and buses can share the same registration number. The value is represented by the following enum from GTFS:
|
|
1464
|
+
- 0: Tram
|
|
1465
|
+
- 1: Subway
|
|
1466
|
+
- 2: Train
|
|
1467
|
+
- 3: Bus
|
|
1468
|
+
- 4: Ferry
|
|
1469
|
+
- 7: Funicular
|
|
1470
|
+
- 11: Trolleybus
|
|
1471
|
+
For example, if you want to get a tram with registration number "1001", use routeType=0. For a bus with the same registration number, use routeType=3.
|
|
1472
|
+
required: true
|
|
1473
|
+
examples:
|
|
1474
|
+
routeType1:
|
|
1475
|
+
value: 2
|
|
1476
|
+
summary: "Train"
|
|
1477
|
+
routeType2:
|
|
1478
|
+
value: 3
|
|
1479
|
+
summary: "Bus"
|
|
1480
|
+
schema:
|
|
1481
|
+
type: number
|
|
1482
|
+
enum:
|
|
1483
|
+
- 0
|
|
1484
|
+
- 1
|
|
1485
|
+
- 2
|
|
1486
|
+
- 3
|
|
1487
|
+
- 4
|
|
1488
|
+
- 7
|
|
1489
|
+
- 11
|
|
1490
|
+
- name: timeFrom
|
|
1491
|
+
in: query
|
|
1492
|
+
description: |
|
|
1493
|
+
Set initial timestamp for time interval given by `minutesBefore` (hardcoded to 0) and `minutesAfter` (hardcoded to 60). Use to simulate query time different from now. Use ISO 8601 time format and URL encoded symbols - `%3A` for `:`, `%2B` for `.`, `%2F` for `+`. Time zone is set to `Europe/Prague`. Applicable range is -6 hours +2 days from now.
|
|
1494
|
+
required: false
|
|
1495
|
+
schema:
|
|
1496
|
+
type: string
|
|
1497
|
+
example: "2024-11-04T16:51:00"
|
|
1498
|
+
- name: limit
|
|
1499
|
+
in: query
|
|
1500
|
+
description: |
|
|
1501
|
+
Limit the number of rows of departures returned. The total number of departures is a union across individual types of departures. The default value is 8.
|
|
1502
|
+
required: false
|
|
1503
|
+
schema:
|
|
1504
|
+
type: number
|
|
1505
|
+
default: 8
|
|
1506
|
+
responses:
|
|
1507
|
+
"200":
|
|
1508
|
+
description: List of possible transfers at the provided stop/node (identified by cisId or aswId)
|
|
1509
|
+
headers:
|
|
1510
|
+
Cache-Control:
|
|
1511
|
+
description: Cache control directive for caching proxies
|
|
1512
|
+
schema:
|
|
1513
|
+
type: string
|
|
1514
|
+
example: public, s-maxage=5, stale-while-revalidate=5
|
|
1515
|
+
content:
|
|
1516
|
+
application/json:
|
|
1517
|
+
schema:
|
|
1518
|
+
type: object
|
|
1519
|
+
required:
|
|
1520
|
+
- platform_code
|
|
1521
|
+
- stop_name
|
|
1522
|
+
- departures
|
|
1523
|
+
- infotexts
|
|
1524
|
+
properties:
|
|
1525
|
+
platform_code:
|
|
1526
|
+
type: string
|
|
1527
|
+
example: "2/3"
|
|
1528
|
+
nullable: true
|
|
1529
|
+
stop_name:
|
|
1530
|
+
type: string
|
|
1531
|
+
example: "Anděl"
|
|
1532
|
+
nullable: true
|
|
1533
|
+
icons:
|
|
1534
|
+
type: array
|
|
1535
|
+
items:
|
|
1536
|
+
type: string
|
|
1537
|
+
nullable: true
|
|
1538
|
+
departures:
|
|
1539
|
+
type: array
|
|
1540
|
+
description: |
|
|
1541
|
+
List of departures from the stop.
|
|
1542
|
+
The list is sorted by:
|
|
1543
|
+
- route type - subway and then other
|
|
1544
|
+
- subway is sorted alphabetically, then by departure time, then by direction id
|
|
1545
|
+
- departure time
|
|
1546
|
+
items:
|
|
1547
|
+
type: object
|
|
1548
|
+
required:
|
|
1549
|
+
- departure_timestamp
|
|
1550
|
+
- route
|
|
1551
|
+
- trip
|
|
1552
|
+
properties:
|
|
1553
|
+
departure_timestamp:
|
|
1554
|
+
type: object
|
|
1555
|
+
required:
|
|
1556
|
+
- minutes
|
|
1557
|
+
properties:
|
|
1558
|
+
minutes:
|
|
1559
|
+
type: array
|
|
1560
|
+
items:
|
|
1561
|
+
type: string
|
|
1562
|
+
nullable: true
|
|
1563
|
+
example: ["<1", "8"]
|
|
1564
|
+
route:
|
|
1565
|
+
type: object
|
|
1566
|
+
required:
|
|
1567
|
+
- short_name
|
|
1568
|
+
- type
|
|
1569
|
+
properties:
|
|
1570
|
+
short_name:
|
|
1571
|
+
type: string
|
|
1572
|
+
example: "B"
|
|
1573
|
+
nullable: true
|
|
1574
|
+
type:
|
|
1575
|
+
type: number
|
|
1576
|
+
example: 1
|
|
1577
|
+
nullable: true
|
|
1578
|
+
stop:
|
|
1579
|
+
type: object
|
|
1580
|
+
required:
|
|
1581
|
+
- platform_code
|
|
1582
|
+
properties:
|
|
1583
|
+
platform_code:
|
|
1584
|
+
type: string
|
|
1585
|
+
example: "2/3"
|
|
1586
|
+
nullable: true
|
|
1587
|
+
trip:
|
|
1588
|
+
type: object
|
|
1589
|
+
required:
|
|
1590
|
+
- headsign
|
|
1591
|
+
- id
|
|
1592
|
+
- is_wheelchair_accessible
|
|
1593
|
+
properties:
|
|
1594
|
+
headsign:
|
|
1595
|
+
type: string
|
|
1596
|
+
example: "Zličín"
|
|
1597
|
+
nullable: false
|
|
1598
|
+
description: "If more then one trips are available, the first one is taken. Trips are grouped by direction_id."
|
|
1599
|
+
id:
|
|
1600
|
+
type: string
|
|
1601
|
+
example: "1309_2547_231210"
|
|
1602
|
+
nullable: false
|
|
1603
|
+
description: "If more then one trips are available, the first one is taken. Trips are grouped by direction_id."
|
|
1604
|
+
is_wheelchair_accessible:
|
|
1605
|
+
type: boolean
|
|
1606
|
+
description: True if the vehicle being used on this trip is wheelchair accessible. Metro trips are deemed accessible if the station is accessible.
|
|
1607
|
+
example: false
|
|
1608
|
+
icons:
|
|
1609
|
+
type: array
|
|
1610
|
+
items:
|
|
1611
|
+
type: string
|
|
1612
|
+
nullable: true
|
|
1613
|
+
substitution_text:
|
|
1614
|
+
type: object
|
|
1615
|
+
required:
|
|
1616
|
+
- cs
|
|
1617
|
+
properties:
|
|
1618
|
+
cs:
|
|
1619
|
+
type: string
|
|
1620
|
+
example: "Provoz metra přerušen."
|
|
1621
|
+
nullable: false
|
|
1622
|
+
en:
|
|
1623
|
+
type: string
|
|
1624
|
+
example: "Metro service interrupted."
|
|
1625
|
+
nullable: true
|
|
1626
|
+
infotexts:
|
|
1627
|
+
type: array
|
|
1628
|
+
items:
|
|
1629
|
+
type: object
|
|
1630
|
+
required:
|
|
1631
|
+
- text
|
|
1632
|
+
- display_type
|
|
1633
|
+
properties:
|
|
1634
|
+
text:
|
|
1635
|
+
type: object
|
|
1636
|
+
required:
|
|
1637
|
+
- cs
|
|
1638
|
+
properties:
|
|
1639
|
+
cs:
|
|
1640
|
+
type: string
|
|
1641
|
+
example: "Nehoda na trase, odklon linek mimo tuto stanici."
|
|
1642
|
+
nullable: false
|
|
1643
|
+
en:
|
|
1644
|
+
type: string
|
|
1645
|
+
example: "Trips are cancelled due to accident on route."
|
|
1646
|
+
nullable: true
|
|
1647
|
+
display_type:
|
|
1648
|
+
type: string
|
|
1649
|
+
example: "inline"
|
|
1650
|
+
enum:
|
|
1651
|
+
- "inline"
|
|
1652
|
+
- "general"
|
|
1653
|
+
nullable: false
|
|
1654
|
+
|
|
1655
|
+
"400":
|
|
1656
|
+
description: |
|
|
1657
|
+
Bad request - invalid query parameters, including:
|
|
1658
|
+
* `cisId` and `aswId` are missing or invalid
|
|
1659
|
+
* Both `cisId` and `aswId` are provided
|
|
1660
|
+
* `timeFrom` is invalid or out of range
|
|
1661
|
+
content:
|
|
1662
|
+
application/json:
|
|
1663
|
+
schema:
|
|
1664
|
+
type: object
|
|
1665
|
+
properties:
|
|
1666
|
+
error_message:
|
|
1667
|
+
type: string
|
|
1668
|
+
example: "Bad request"
|
|
1669
|
+
nullable: false
|
|
1670
|
+
error_status:
|
|
1671
|
+
type: integer
|
|
1672
|
+
example: 400
|
|
1673
|
+
nullable: false
|
|
1674
|
+
error_info:
|
|
1675
|
+
type: string
|
|
1676
|
+
example: "{...}"
|
|
1677
|
+
nullable: true
|
|
1678
|
+
required:
|
|
1679
|
+
- error_message
|
|
1680
|
+
- error_status
|
|
1681
|
+
"401":
|
|
1682
|
+
$ref: "#/components/responses/UnauthorizedError"
|
|
1683
|
+
"404":
|
|
1684
|
+
description: Not found - no valid GTFS stop found for the given CIS ID or ASW ID
|
|
1685
|
+
content:
|
|
1686
|
+
application/json:
|
|
1687
|
+
schema:
|
|
1688
|
+
type: object
|
|
1689
|
+
required:
|
|
1690
|
+
- departures
|
|
1691
|
+
- infotexts
|
|
1692
|
+
properties:
|
|
1693
|
+
departures:
|
|
1694
|
+
type: array
|
|
1695
|
+
example: []
|
|
1696
|
+
items:
|
|
1697
|
+
type: object
|
|
1698
|
+
infotexts:
|
|
1699
|
+
type: array
|
|
1700
|
+
example: []
|
|
1701
|
+
items:
|
|
1702
|
+
type: object
|
|
1703
|
+
|
|
1378
1704
|
/v2/public/gtfs/trips/{gtfsTripId}:
|
|
1379
1705
|
get:
|
|
1380
1706
|
tags:
|
|
@@ -1787,10 +2113,6 @@ paths:
|
|
|
1787
2113
|
$ref: "#/components/responses/BadRequestError"
|
|
1788
2114
|
401:
|
|
1789
2115
|
$ref: "#/components/responses/UnauthorizedError"
|
|
1790
|
-
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
2116
|
|
|
1795
2117
|
|
|
1796
2118
|
components:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/pid",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.3-dev.1993091012",
|
|
4
4
|
"description": "Golemio PID Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"@golemio/core": ">=1.16.0-rc.1551191551"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@golemio/ovapi-gtfs-realtime-bindings": "1.2.
|
|
78
|
+
"@golemio/ovapi-gtfs-realtime-bindings": "1.2.4-dev.1288219308",
|
|
79
79
|
"@turf/turf": "^6.5.0",
|
|
80
80
|
"cheap-ruler": "^3.0.2",
|
|
81
81
|
"csv-parser": "^3.0.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VPSubscriber.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/service/VPSubscriber.ts"],"names":[],"mappings":";;;AAAA,+GAAgI;AAGhI,MAAa,YAAa,SAAQ,iCAAe;IAC7C,YAAY,OAA2B,EAAU,UAAuC;QACpF,KAAK,CAAC,OAAO,CAAC,CAAC;QAD8B,eAAU,GAAV,UAAU,CAA6B;IAExF,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAEvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACtF,IAAI,OAAO,KAAK,SAAS,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;aAC9C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAhBD,oCAgBC"}
|