@golemio/pid 4.0.1 → 4.0.2-dev.1982076656

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 (182) hide show
  1. package/README.md +1 -1
  2. package/db/example/redis/gtfsStopsCacheMock.json +8 -0
  3. package/db/example/redis/jisCacheMock.json +31 -0
  4. package/db/migrations/postgresql/20250716143052-add-stop-name-to-combined-stop-times.js +53 -0
  5. package/db/migrations/postgresql/sqls/20250716143052-add-stop-name-to-combined-stop-times-down.sql +47 -0
  6. package/db/migrations/postgresql/sqls/20250716143052-add-stop-name-to-combined-stop-times-up.sql +47 -0
  7. package/dist/helpers/GtfsStopParser.d.ts +2 -0
  8. package/dist/helpers/GtfsStopParser.js +11 -8
  9. package/dist/helpers/GtfsStopParser.js.map +1 -1
  10. package/dist/helpers/jis/JISInfotextSeverityLevelPriority.d.ts +6 -0
  11. package/dist/helpers/jis/JISInfotextSeverityLevelPriority.js +11 -0
  12. package/dist/helpers/jis/JISInfotextSeverityLevelPriority.js.map +1 -0
  13. package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js +0 -1
  14. package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js.map +1 -1
  15. package/dist/integration-engine/jis/ioc/Di.js +10 -0
  16. package/dist/integration-engine/jis/ioc/Di.js.map +1 -1
  17. package/dist/integration-engine/jis/ioc/JISContainerToken.d.ts +4 -0
  18. package/dist/integration-engine/jis/ioc/JISContainerToken.js +5 -0
  19. package/dist/integration-engine/jis/ioc/JISContainerToken.js.map +1 -1
  20. package/dist/integration-engine/jis/repositories/JISInfotextsRedisRepository.d.ts +9 -0
  21. package/dist/integration-engine/jis/repositories/JISInfotextsRedisRepository.js +86 -0
  22. package/dist/integration-engine/jis/repositories/JISInfotextsRedisRepository.js.map +1 -0
  23. package/dist/integration-engine/jis/repositories/JISInfotextsRepository.d.ts +6 -1
  24. package/dist/integration-engine/jis/repositories/JISInfotextsRepository.js +50 -2
  25. package/dist/integration-engine/jis/repositories/JISInfotextsRepository.js.map +1 -1
  26. package/dist/integration-engine/jis/transformations/JISInfotextCacheTranformation.d.ts +7 -0
  27. package/dist/integration-engine/jis/transformations/JISInfotextCacheTranformation.js +37 -0
  28. package/dist/integration-engine/jis/transformations/JISInfotextCacheTranformation.js.map +1 -0
  29. package/dist/integration-engine/jis/workers/JISWorker.js +1 -0
  30. package/dist/integration-engine/jis/workers/JISWorker.js.map +1 -1
  31. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsCacheTask.d.ts +13 -0
  32. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsCacheTask.js +47 -0
  33. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsCacheTask.js.map +1 -0
  34. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsTask.d.ts +1 -2
  35. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsTask.js +5 -4
  36. package/dist/integration-engine/jis/workers/tasks/RefreshJISInfotextsTask.js.map +1 -1
  37. package/dist/integration-engine/ropid-gtfs/RopidGTFSCisStopsModel.d.ts +18 -0
  38. package/dist/integration-engine/ropid-gtfs/RopidGTFSCisStopsModel.js +44 -0
  39. package/dist/integration-engine/ropid-gtfs/RopidGTFSCisStopsModel.js.map +1 -0
  40. package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.d.ts +5 -1
  41. package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.js +24 -0
  42. package/dist/integration-engine/ropid-gtfs/RopidGTFSStopsModel.js.map +1 -1
  43. package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map +1 -1
  44. package/dist/integration-engine/ropid-gtfs/index.d.ts +1 -0
  45. package/dist/integration-engine/ropid-gtfs/index.js +1 -0
  46. package/dist/integration-engine/ropid-gtfs/index.js.map +1 -1
  47. package/dist/integration-engine/ropid-gtfs/ioc/Di.js +8 -0
  48. package/dist/integration-engine/ropid-gtfs/ioc/Di.js.map +1 -1
  49. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.d.ts +3 -0
  50. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js +3 -0
  51. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js.map +1 -1
  52. package/dist/integration-engine/ropid-gtfs/transformations/RopidDeparturesPresetsTransformation.js +1 -1
  53. package/dist/integration-engine/ropid-gtfs/transformations/RopidDeparturesPresetsTransformation.js.map +1 -1
  54. package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js +1 -0
  55. package/dist/integration-engine/ropid-gtfs/workers/timetables/TimetableWorker.js.map +1 -1
  56. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js +8 -5
  57. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/CheckSavedRowsAndReplaceTablesTask.js.map +1 -1
  58. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsStopsCacheTask.d.ts +12 -0
  59. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsStopsCacheTask.js +44 -0
  60. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/RefreshGtfsStopsCacheTask.js.map +1 -0
  61. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/data-access/cache/GtfsStopsRedisRepository.d.ts +12 -0
  62. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/data-access/cache/GtfsStopsRedisRepository.js +87 -0
  63. package/dist/integration-engine/ropid-gtfs/workers/timetables/tasks/data-access/cache/GtfsStopsRedisRepository.js.map +1 -0
  64. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js +1 -0
  65. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/TripsRepository.js.map +1 -1
  66. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/interfaces/TripRepositoryInterfaces.d.ts +2 -1
  67. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.js.map +1 -1
  68. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.js +1 -0
  69. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/RefreshPublicStopTimeCacheTask.js.map +1 -1
  70. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PublicApiTripTransformation.js +2 -0
  71. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/transformations/PublicApiTripTransformation.js.map +1 -1
  72. package/dist/output-gateway/index.js +1 -0
  73. package/dist/output-gateway/index.js.map +1 -1
  74. package/dist/output-gateway/jis/data-access/cache/JISInfotextsRedisRepository.d.ts +17 -0
  75. package/dist/output-gateway/jis/data-access/cache/JISInfotextsRedisRepository.js +113 -0
  76. package/dist/output-gateway/jis/data-access/cache/JISInfotextsRedisRepository.js.map +1 -0
  77. package/dist/output-gateway/jis/ioc/Di.js +2 -2
  78. package/dist/output-gateway/jis/ioc/Di.js.map +1 -1
  79. package/dist/output-gateway/jis/ioc/OgJisToken.d.ts +2 -0
  80. package/dist/output-gateway/jis/ioc/OgJisToken.js +2 -0
  81. package/dist/output-gateway/jis/ioc/OgJisToken.js.map +1 -1
  82. package/dist/output-gateway/pid/controllers/v3/V3TransferBoardsController.js.map +1 -1
  83. package/dist/output-gateway/pid/controllers/v4/V4TransferBoardsController.d.ts +17 -0
  84. package/dist/output-gateway/pid/controllers/v4/V4TransferBoardsController.js +147 -0
  85. package/dist/output-gateway/pid/controllers/v4/V4TransferBoardsController.js.map +1 -0
  86. package/dist/output-gateway/pid/controllers/v4/interfaces/ITransferBoardsParams.d.ts +14 -0
  87. package/dist/output-gateway/pid/controllers/v4/interfaces/ITransferBoardsParams.js +3 -0
  88. package/dist/output-gateway/pid/controllers/v4/interfaces/ITransferBoardsParams.js.map +1 -0
  89. package/dist/output-gateway/pid/domain/InfotextInterfaces.d.ts +5 -0
  90. package/dist/output-gateway/pid/helpers/JISInfotextStopSuppressionFilter.d.ts +4 -1
  91. package/dist/output-gateway/pid/helpers/JISInfotextStopSuppressionFilter.js +7 -1
  92. package/dist/output-gateway/pid/helpers/JISInfotextStopSuppressionFilter.js.map +1 -1
  93. package/dist/output-gateway/pid/helpers/TransferBoardFilter.d.ts +5 -0
  94. package/dist/output-gateway/pid/helpers/TransferBoardFilter.js +33 -0
  95. package/dist/output-gateway/pid/helpers/TransferBoardFilter.js.map +1 -0
  96. package/dist/output-gateway/pid/helpers/TransferBoardSorter.d.ts +6 -0
  97. package/dist/output-gateway/pid/helpers/TransferBoardSorter.js +65 -0
  98. package/dist/output-gateway/pid/helpers/TransferBoardSorter.js.map +1 -0
  99. package/dist/output-gateway/pid/index.d.ts +47 -0
  100. package/dist/output-gateway/pid/index.js.map +1 -1
  101. package/dist/output-gateway/pid/ioc/Di.js +62 -6
  102. package/dist/output-gateway/pid/ioc/Di.js.map +1 -1
  103. package/dist/output-gateway/pid/ioc/OgPidToken.d.ts +11 -0
  104. package/dist/output-gateway/pid/ioc/OgPidToken.js +11 -0
  105. package/dist/output-gateway/pid/ioc/OgPidToken.js.map +1 -1
  106. package/dist/output-gateway/pid/routers/index.d.ts +1 -0
  107. package/dist/output-gateway/pid/routers/index.js +3 -1
  108. package/dist/output-gateway/pid/routers/index.js.map +1 -1
  109. package/dist/output-gateway/pid/routers/v4/V4PIDRouter.d.ts +16 -0
  110. package/dist/output-gateway/pid/routers/v4/V4PIDRouter.js +67 -0
  111. package/dist/output-gateway/pid/routers/v4/V4PIDRouter.js.map +1 -0
  112. package/dist/output-gateway/pid/service/facade/InfotextFacade.d.ts +7 -2
  113. package/dist/output-gateway/pid/service/facade/InfotextFacade.js +29 -4
  114. package/dist/output-gateway/pid/service/facade/InfotextFacade.js.map +1 -1
  115. package/dist/output-gateway/pid/service/facade/StopFacade.d.ts +12 -3
  116. package/dist/output-gateway/pid/service/facade/StopFacade.js +43 -7
  117. package/dist/output-gateway/pid/service/facade/StopFacade.js.map +1 -1
  118. package/dist/output-gateway/pid/service/facade/TransferFacade.d.ts +11 -9
  119. package/dist/output-gateway/pid/service/facade/TransferFacade.js +117 -14
  120. package/dist/output-gateway/pid/service/facade/TransferFacade.js.map +1 -1
  121. package/dist/output-gateway/pid/service/helpers/PlatformCodeResolver.d.ts +7 -1
  122. package/dist/output-gateway/pid/service/helpers/PlatformCodeResolver.js +12 -0
  123. package/dist/output-gateway/pid/service/helpers/PlatformCodeResolver.js.map +1 -1
  124. package/dist/output-gateway/pid/service/transformations/JISInfotextCacheTransferTransformation.d.ts +13 -0
  125. package/dist/output-gateway/pid/service/transformations/JISInfotextCacheTransferTransformation.js +31 -0
  126. package/dist/output-gateway/pid/service/transformations/JISInfotextCacheTransferTransformation.js.map +1 -0
  127. package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.d.ts +27 -0
  128. package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.js +75 -0
  129. package/dist/output-gateway/pid/service/transformations/TransferDepartureCacheTransformation.js.map +1 -0
  130. package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.d.ts +1 -1
  131. package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.js +4 -4
  132. package/dist/output-gateway/public/data-access/redis/PublicGtfsDepartureRepository.js.map +1 -1
  133. package/dist/output-gateway/public/ioc/Di.js +1 -1
  134. package/dist/output-gateway/public/ioc/Di.js.map +1 -1
  135. package/dist/output-gateway/ropid-gtfs/data-access/redis/GtfsStopsRedisRepository.d.ts +13 -0
  136. package/dist/output-gateway/ropid-gtfs/data-access/redis/GtfsStopsRedisRepository.js +83 -0
  137. package/dist/output-gateway/ropid-gtfs/data-access/redis/GtfsStopsRedisRepository.js.map +1 -0
  138. package/dist/output-gateway/shared/constants/route-version.d.ts +2 -1
  139. package/dist/output-gateway/shared/constants/route-version.js +1 -0
  140. package/dist/output-gateway/shared/constants/route-version.js.map +1 -1
  141. package/dist/output-gateway/{public → shared}/service/VPSubscriber.d.ts +4 -2
  142. package/dist/output-gateway/{public → shared}/service/VPSubscriber.js +1 -1
  143. package/dist/output-gateway/shared/service/VPSubscriber.js.map +1 -0
  144. package/dist/schema-definitions/jis/redis/const.d.ts +1 -0
  145. package/dist/schema-definitions/jis/redis/const.js +2 -1
  146. package/dist/schema-definitions/jis/redis/const.js.map +1 -1
  147. package/dist/schema-definitions/jis/redis/interfaces/IJISInfotextDto.d.ts +17 -0
  148. package/dist/schema-definitions/jis/redis/interfaces/IJISInfotextDto.js +3 -0
  149. package/dist/schema-definitions/jis/redis/interfaces/IJISInfotextDto.js.map +1 -0
  150. package/dist/schema-definitions/jis/redis/schemas/JISInfotextDtoSchema.d.ts +3 -0
  151. package/dist/schema-definitions/jis/redis/schemas/JISInfotextDtoSchema.js +59 -0
  152. package/dist/schema-definitions/jis/redis/schemas/JISInfotextDtoSchema.js.map +1 -0
  153. package/dist/schema-definitions/ropid-departures-presets/index.d.ts +1 -0
  154. package/dist/schema-definitions/ropid-departures-presets/index.js +3 -0
  155. package/dist/schema-definitions/ropid-departures-presets/index.js.map +1 -1
  156. package/dist/schema-definitions/ropid-gtfs/interfaces/IStopCisDto.d.ts +16 -0
  157. package/dist/schema-definitions/ropid-gtfs/interfaces/IStopCisDto.js +3 -0
  158. package/dist/schema-definitions/ropid-gtfs/interfaces/IStopCisDto.js.map +1 -0
  159. package/dist/schema-definitions/ropid-gtfs/interfaces/IStopDto.d.ts +1 -0
  160. package/dist/schema-definitions/ropid-gtfs/models/StopCisDto.d.ts +58 -0
  161. package/dist/schema-definitions/ropid-gtfs/models/StopCisDto.js +69 -0
  162. package/dist/schema-definitions/ropid-gtfs/models/StopCisDto.js.map +1 -0
  163. package/dist/schema-definitions/ropid-gtfs/redis/const.d.ts +1 -0
  164. package/dist/schema-definitions/ropid-gtfs/redis/const.js +2 -1
  165. package/dist/schema-definitions/ropid-gtfs/redis/const.js.map +1 -1
  166. package/dist/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.d.ts +3 -2
  167. package/dist/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.js +4 -0
  168. package/dist/schema-definitions/vehicle-positions/models/views/PublicStopTimeModel.js.map +1 -1
  169. package/dist/schema-definitions/vehicle-positions/models/views/interfaces/IPublicStopTimeDto.d.ts +1 -0
  170. package/dist/schema-definitions/vehicle-positions/redis/interfaces/IPublicApiCacheDto.d.ts +2 -0
  171. package/dist/schema-definitions/vehicle-positions/redis/interfaces/IPublicStopTimeCacheDto.d.ts +1 -0
  172. package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicApiCacheDtoSchema.js +8 -0
  173. package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicApiCacheDtoSchema.js.map +1 -1
  174. package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicStopTimeCacheDtoSchema.js +4 -1
  175. package/dist/schema-definitions/vehicle-positions/redis/schemas/PublicStopTimeCacheDtoSchema.js.map +1 -1
  176. package/docs/asyncapi.yaml +45 -0
  177. package/docs/cache/types/redis.md +82 -2
  178. package/docs/jis/index.md +15 -5
  179. package/docs/openapi-input.yaml +13 -2
  180. package/docs/openapi-output.yaml +326 -4
  181. package/package.json +2 -2
  182. package/dist/output-gateway/public/service/VPSubscriber.js.map +0 -1
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 -- "`SELECT aktuálních událostí z tabulek vehicle-positions.pid.jis_events a vehicle-positions.pid.jis_events_ropidgtfs_routes`" --> vymi_pg;
138
- 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
+ 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
 
@@ -200,6 +205,7 @@ flowchart TB
200
205
  golemio_fetch_infotexts_task["`FetchJISInfotextsTask`"];
201
206
  golemio_refresh_events_task["`RefreshJISEventsTask`"];
202
207
  golemio_refresh_infotexts_task["`RefreshJISInfotextsTask`"];
208
+ golemio_refresh_infotexts_cache_task["`RefreshJISInfotextsCacheTask`"];
203
209
 
204
210
  %% invisible unicode char ‎ due to https://github.com/orgs/community/discussions/106690
205
211
  golemio_api_get_events["`HTTPS GET s API klíčem na https‎://api-vymi.golemio.cz/v1/exports/events/custom-format`"];
@@ -207,10 +213,11 @@ flowchart TB
207
213
  end
208
214
 
209
215
  vp_pg[("`VP PostgreSQL`")];
216
+ vp_redis[("`VP Redis (Valkey)`")];
210
217
  end
211
218
 
212
- 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;
213
- 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;
219
+ 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;
220
+ 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
221
 
215
222
  golemio_rabbit_fetch_events --> golemio_fetch_events_task;
216
223
  golemio_rabbit_fetch_infotexts --> golemio_fetch_infotexts_task;
@@ -231,6 +238,9 @@ flowchart TB
231
238
 
232
239
  golemio_refresh_events_task -- "`UPSERT do tabulek vehicle-positions.pid.jis_events a vehicle-positions.pid.jis_events_ropidgtfs_routes`" --> vp_pg;
233
240
  golemio_refresh_infotexts_task -- "`UPSERT do tabulek vehicle-positions.pid.jis_infotexts a vehicle-positions.pid.jis_infotexts_ropidgtfs_stops`" --> vp_pg;
241
+ golemio_refresh_infotexts_task --> golemio_refresh_infotexts_cache_task;
242
+
243
+ golemio_refresh_infotexts_cache_task -- "`Aktualizace cache jisCache:infotexts:* a jisCache:stop-infotexts:*`" --> vp_redis;
234
244
  ```
235
245
 
236
246
  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.
@@ -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:
@@ -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.1",
3
+ "version": "4.0.2-dev.1982076656",
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.3",
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"}