@golemio/pid 5.8.3-dev.2434601844 → 5.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/example/13_http-propagate-delay.sql +0 -3
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js +3 -32
- package/dist/integration-engine/ropid-gtfs/data-access/precomputed/DeparturesRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/transformations/CommonRunsMessagesTransformation.js +2 -2
- package/dist/integration-engine/vehicle-positions/workers/runs/transformations/CommonRunsMessagesTransformation.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js +2 -3
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/CommonDelayAtStop.js +2 -8
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/compute-positions/strategy/CommonDelayAtStop.js.map +1 -1
- package/dist/output-gateway/pid/controllers/v2/V2DepartureBoardsController.js +0 -1
- package/dist/output-gateway/pid/controllers/v2/V2DepartureBoardsController.js.map +1 -1
- package/dist/output-gateway/pid/dto/DepartureBoardsDTO.d.ts +0 -1
- package/dist/output-gateway/pid/dto/DepartureBoardsDTO.js +0 -4
- package/dist/output-gateway/pid/dto/DepartureBoardsDTO.js.map +1 -1
- package/dist/output-gateway/pid/dto/interfaces/IDepartureBoardsQueryDTO.d.ts +0 -1
- package/dist/output-gateway/pid/helpers/DepartureBoardMapper.d.ts +1 -2
- package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js +4 -28
- package/dist/output-gateway/pid/helpers/DepartureBoardMapper.js.map +1 -1
- package/dist/output-gateway/pid/interfaces/IPIDDeparture.d.ts +0 -3
- package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js +0 -1
- package/dist/output-gateway/pid/models/PIDDepartureBoardsModel.js.map +1 -1
- package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js +1 -1
- package/dist/output-gateway/pid/models/helpers/PIDDepartureModel.js.map +1 -1
- package/dist/output-gateway/pid/models/helpers/interfaces/IPIDDepartureQueryOptions.d.ts +0 -1
- package/dist/output-gateway/pid/models/interfaces/IGetDeparturesOptions.d.ts +0 -1
- package/dist/output-gateway/pid/routers/v2/V2PIDRouter.js +0 -1
- package/dist/output-gateway/pid/routers/v2/V2PIDRouter.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.d.ts +0 -3
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js +0 -12
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/DeparturesModel.js.map +1 -1
- package/dist/schema-definitions/ropid-gtfs/models/precomputed/interfaces/IDeparturesModel.d.ts +0 -3
- package/docs/asyncapi.yaml +4 -27
- package/docs/cache/types/psql.md +3 -3
- package/docs/cache/types/redis.md +2 -30
- package/docs/implementation_documentation.md +3 -96
- package/docs/jis/index.md +0 -17
- package/docs/openapi-output.yaml +3 -20
- package/docs/processing/input_realtime_data/http_mpvnet.md +0 -21
- package/docs/processing/input_realtime_data/tcp_dpp_bus.md +3 -3
- package/docs/processing/input_realtime_data/tcp_dpp_tram.md +3 -3
- package/docs/processing/state_position_tracking/http_mpvnet.md +0 -1
- package/docs/processing/state_position_tracking/tcp_dpp_common.md +1 -2
- package/package.json +1 -1
- package/db/migrations/postgresql/20260325161451-add-new-columns-to-precomputed-table.js +0 -53
- package/db/migrations/postgresql/20260407082406-add-new-columns-to-getDepartures().js +0 -53
- package/db/migrations/postgresql/sqls/20260325161451-add-new-columns-to-precomputed-table-down.sql +0 -4
- package/db/migrations/postgresql/sqls/20260325161451-add-new-columns-to-precomputed-table-up.sql +0 -4
- package/db/migrations/postgresql/sqls/20260407082406-add-new-columns-to-getDepartures()-down.sql +0 -152
- package/db/migrations/postgresql/sqls/20260407082406-add-new-columns-to-getDepartures()-up.sql +0 -158
- package/docs/processing/transferboards_filtering.md +0 -312
package/docs/asyncapi.yaml
CHANGED
|
@@ -725,12 +725,8 @@ components:
|
|
|
725
725
|
type: string
|
|
726
726
|
description: The timestamp when the message was last sent.
|
|
727
727
|
wheelchair_accessible:
|
|
728
|
-
type:
|
|
729
|
-
description:
|
|
730
|
-
Raw wheelchair accessibility flag from vehiclepositions_trips.
|
|
731
|
-
Mapped to wheelchairAccessible proto enum in GTFS-RT VehicleDescriptor:
|
|
732
|
-
null → WHEELCHAIR_ACCESSIBLE_UNSPECIFIED (0), true → WHEELCHAIR_ACCESSIBLE (1), false → WHEELCHAIR_INACCESSIBLE (2).
|
|
733
|
-
The OVAPI extension .transit_realtime.ovapiVehicleDescriptor.wheelchairAccessible retains the raw boolean/null value alongside the standard field.
|
|
728
|
+
type: boolean
|
|
729
|
+
description: Indicates if the vehicle is wheelchair accessible.
|
|
734
730
|
ICommonRunsMessagesModel:
|
|
735
731
|
type: object
|
|
736
732
|
properties:
|
|
@@ -752,9 +748,7 @@ components:
|
|
|
752
748
|
actual_stop_timestamp_real:
|
|
753
749
|
type: string
|
|
754
750
|
format: date-time
|
|
755
|
-
description:
|
|
756
|
-
Transmission time of the message (derived from tm). Corresponds to the
|
|
757
|
-
lat/lng position reported in the same message.
|
|
751
|
+
description: Actual stop timestamp (real)
|
|
758
752
|
actual_stop_timestamp_scheduled:
|
|
759
753
|
type: string
|
|
760
754
|
format: date-time
|
|
@@ -769,9 +763,7 @@ components:
|
|
|
769
763
|
msg_timestamp:
|
|
770
764
|
type: string
|
|
771
765
|
format: date-time
|
|
772
|
-
description:
|
|
773
|
-
Actual event time at the stop (derived from takt). Used for delay
|
|
774
|
-
calculation.
|
|
766
|
+
description: Message timestamp
|
|
775
767
|
events:
|
|
776
768
|
type: string
|
|
777
769
|
enum: [P, O, V, T]
|
|
@@ -1071,16 +1063,10 @@ components:
|
|
|
1071
1063
|
origin_timestamp:
|
|
1072
1064
|
type: string
|
|
1073
1065
|
format: date-time
|
|
1074
|
-
description: >
|
|
1075
|
-
Transmission time of the message from the vehicle (derived from tm).
|
|
1076
|
-
Corresponds to the lat/lng position in the same message.
|
|
1077
1066
|
scheduled_timestamp:
|
|
1078
1067
|
type: string
|
|
1079
1068
|
nullable: true
|
|
1080
1069
|
format: date-time
|
|
1081
|
-
description: >
|
|
1082
|
-
Actual event time — the real time of the vehicle arrival or departure at the stop
|
|
1083
|
-
(derived from takt). Null for non-event positions.
|
|
1084
1070
|
delay:
|
|
1085
1071
|
type: number
|
|
1086
1072
|
nullable: true
|
|
@@ -1487,23 +1473,14 @@ components:
|
|
|
1487
1473
|
type: string
|
|
1488
1474
|
takt:
|
|
1489
1475
|
type: string
|
|
1490
|
-
description: >
|
|
1491
|
-
Actual event time — the real time of the vehicle arrival or departure at the stop.
|
|
1492
|
-
Maps to scheduled_timestamp in processed positions.
|
|
1493
1476
|
konc:
|
|
1494
1477
|
type: string
|
|
1495
1478
|
tjr:
|
|
1496
1479
|
type: string
|
|
1497
|
-
description: >
|
|
1498
|
-
ROPID scheduled time according to the timetable — when the vehicle was supposed to be at this point.
|
|
1499
|
-
Not used for position timestamp mapping.
|
|
1500
1480
|
pkt:
|
|
1501
1481
|
type: string
|
|
1502
1482
|
tm:
|
|
1503
1483
|
type: string
|
|
1504
|
-
description: >
|
|
1505
|
-
Transmission time — when the message was transmitted by DPP. Corresponds to the
|
|
1506
|
-
lat/lng position reported in the same message. Maps to origin_timestamp in processed positions.
|
|
1507
1484
|
events:
|
|
1508
1485
|
$ref: "#/components/schemas/TCPEventEnum"
|
|
1509
1486
|
ICommonRunsInputElement:
|
package/docs/cache/types/psql.md
CHANGED
|
@@ -41,8 +41,8 @@ interface IVPTripsLastPositionContext {
|
|
|
41
41
|
- _poznámka_: nepoužívá se a může být null, pokud je spoj zrušen a nepodařilo se zjistit poslední známou polohu
|
|
42
42
|
- **lastPositionLng** - poslední známá zeměpisná délka vozidla
|
|
43
43
|
- _poznámka_: nepoužívá se a může být null, pokud je spoj zrušen a nepodařilo se zjistit poslední známou polohu
|
|
44
|
-
- **lastPositionOriginTimestamp** - `origin_timestamp` poslední pozice (
|
|
45
|
-
- _poznámka_: využití během propagace zpoždění a určení duplikovaných zpráv. unix timestamp v milisekundách
|
|
44
|
+
- **lastPositionOriginTimestamp** - `origin_timestamp` poslední pozice (timestamp odeslání zprávy z vozidla)
|
|
45
|
+
- _poznámka_: využití během propagace zpoždění a určení duplikovaných zpráv. :warning: unix timestamp v milisekundách
|
|
46
46
|
- **lastPositionTracking** - pokud je poslední pozice tracked, pak je zde uložena jako GeoJSON objekt, jinak null
|
|
47
47
|
- _poznámka_: využití během určení stavu vozidla jedoucího z/do garáže, projetí poslední zastávky a ujeté trasy `shape_dist_traveled` a azimutu u propagované pozice
|
|
48
48
|
- **lastPositionCanceled** - indikátor, zda byl spoj předchozí zprávou deklarován jako zrušený
|
|
@@ -65,7 +65,7 @@ interface IVPTripsLastPositionContext {
|
|
|
65
65
|
- **lastPositionBeforeTrackDelayed** - dodatečné informace o poslední pozici
|
|
66
66
|
- _poznámka_: vyplněno pouze v případě, že poslední pozice spoje byla zpropagována z předchozího spoje na oběhu, jinak null. Využití pro určení zpozdění vozidla a taky pro určení stavu vozidla jedoucího z/do garáže
|
|
67
67
|
- **delay** - zpoždění poslední pozice oproti GTFS v sekundách
|
|
68
|
-
- **origin_timestamp** -
|
|
68
|
+
- **origin_timestamp** - timestamp poslední pozice (timestamp odeslání zprávy z vozidla)
|
|
69
69
|
- **lastPositionState** - stav vozidla během poslední pozice
|
|
70
70
|
- _poznámka_: využití pro určení stavu a správné určení segmentu trasy (mezi jakými zastávkami se vozidlo nachází, díky tomu přesnější zpoždění vozidla)
|
|
71
71
|
- **lastStopSequence** - pořadí poslední projeté zastávky v rámci GTFS stop times
|
|
@@ -275,7 +275,6 @@ flowchart TD
|
|
|
275
275
|
- `vpPublicCache:$setId:canceled-trips-$gtfsTripId` - JSON jako string s informacemi o zrušeném spoji. Využití v public odjezdech
|
|
276
276
|
- TTL 1 minuta
|
|
277
277
|
- Nová datová sada se generuje přibližně jednou za 3 vteřiny a obsahuje všechny RT spoje (aktivní, budoucí a zrušené)
|
|
278
|
-
- Populace `future-trip-*`, `future-vehicle-*` a `canceled-trips-*` sub-klíčů je řízena stavem spoje (před trasou / zrušen) a nesouvisí s logikou deduplikace odjezdů v `/v2/public/departureboards` – ta pracuje nad `gtfsPublicDepartureCache` a tuto cache neovlivňuje
|
|
279
278
|
|
|
280
279
|
### vpPublicStopTimeCache:*
|
|
281
280
|
|
|
@@ -295,29 +294,14 @@ flowchart TD
|
|
|
295
294
|
### gtfsPublicDepartureCache:*
|
|
296
295
|
|
|
297
296
|
- Klíč `gtfsPublicDepartureCache:*`, kde `*` je GTFS id zastávky
|
|
298
|
-
- Hodnota je sorted set, kde score je unix timestamp odjezdu v sekundách a member
|
|
299
|
-
- `stop_id` – GTFS id zastávky
|
|
300
|
-
- `departure_datetime` – plánovaný čas odjezdu (ISO 8601)
|
|
301
|
-
- `arrival_datetime` – plánovaný čas příjezdu (ISO 8601), nebo `null`
|
|
302
|
-
- `route_short_name` – název linky
|
|
303
|
-
- `route_type` – typ dopravy (GTFS route_type)
|
|
304
|
-
- `trip_id` – GTFS id spoje
|
|
305
|
-
- `stop_sequence` – pořadí zastávky v spoji
|
|
306
|
-
- `platform_code` – označení nástupiště, nebo `null`
|
|
307
|
-
- `trip_headsign` – cílová zastávka spoje (nebo `stop_headsign`, pokud je definován)
|
|
308
|
-
- `trip_headsign_icons` – ikony přestupů u cílové zastávky jako řetězec dvouznaková kódů (např. `"MbMcSb"`), nebo `null`
|
|
309
|
-
- `connections` – seznam garantovaných přestupů čekajících na tento spoj, nebo `null`; každý záznam obsahuje:
|
|
310
|
-
- `from_trip_id` – GTFS id spoje, na který se čeká
|
|
311
|
-
- `max_wait_sec` – maximální čekací doba v sekundách
|
|
312
|
-
- Přednačítá se z tabulky `ropidgtfs_precomputed_trip_connections` (původně z `transfers.txt` kde `transfer_type = 1`), JOIN na odjezdy přes `to_trip_id` a `to_stop_id`
|
|
313
|
-
- `wheelchair_accessible` – přístupnost vozidla pro vozíčkáře z GTFS `trips.txt` (`0` = bez informace, `1` = přístupné, `2` = nepřístupné), nebo `null`
|
|
297
|
+
- Hodnota je sorted set, kde score je unix timestamp odjezdu v sekundách a member jsou relevantní informace o odjezdu
|
|
314
298
|
- Existuje záznam pro každou zastávku v GTFS. Pokud v ní ale není žádný odjezd, je vyplněný pouze jeden prázdný member - detekce validní zastávky bez odjezdu
|
|
315
299
|
- TTL 7 hodin
|
|
316
300
|
- Retence dat aktivní, jednou za hodinu se smažou všechny odjezdy starší než 3 hodiny
|
|
317
301
|
- Jednou za hodinu se vygenerují nové odjezdy pro všechny zastávky v intervalu +5 hodin až +7 hodin, po přenačtení JŘ se přegenerují všechny odjezdy v interval -3 hodiny až +7 hodin
|
|
318
302
|
- Ukládá se pomocí `ZADD`, čte se pomocí `ZRANGEBYSCORE` (-inf, now + `minutesAfter`)
|
|
319
303
|
- Využití v public odjezdech
|
|
320
|
-
- Využití v endpointu přestupních tabulí
|
|
304
|
+
- Využití v endpointu přestupních tabulí
|
|
321
305
|
|
|
322
306
|
### Flowchart (refresh)
|
|
323
307
|
|
|
@@ -545,18 +529,6 @@ flowchart LR
|
|
|
545
529
|
|
|
546
530
|
link na .drawio [soubor](../../assets/V4Transferboards.drawio)
|
|
547
531
|
|
|
548
|
-
## Cache pro konfiguraci
|
|
549
|
-
|
|
550
|
-
### config:notPublicVehicles
|
|
551
|
-
|
|
552
|
-
- Klíč `config:notPublicVehicles` (jednoduchý klíč, žádný wildcard)
|
|
553
|
-
- Hodnota je JSON string struktury `INotPublicVehicles`:
|
|
554
|
-
- `tram.registrationNumbers` – seznam evidenčních čísel tramvají bez platného GTFS spoje
|
|
555
|
-
- `road.registrationNumbers` – seznam evidenčních čísel autobusů a trolejbusů bez platného GTFS spoje (`road` pokrývá obě kategorie, protože sdílejí číselnou řadu)
|
|
556
|
-
- `routeIds` – whitelist čísel linek (např. `"861"` pro náhradní autobus X-C při výluce metra C) zobrazovaných i bez platného JŘ spoje
|
|
557
|
-
- TTL žádné – hodnota se přepíše při každém spuštění `SaveStaticDataTask` (po načtení nových JŘ)
|
|
558
|
-
- Zapisuje `NotPublicVehiclesRedisRepository` (IE), čte `TripsRepository` / `PositionsMapper` (IE) a `UpdateRunsGtfsTripIdTask` (IE) pro povolení průchodu vozidel bez GTFS spoje
|
|
559
|
-
|
|
560
532
|
## Manuální refresh cache (EnsureCacheTask)
|
|
561
533
|
|
|
562
534
|
`EnsureCacheTask` slouží jako manuální spouštěč obnovy všech 4 caches, jejichž data nejsou real-time obnovována. Po přijetí prázdné zprávy na frontě `vehicle-positions.ropidgtfs.ensureCache` odešle paralelně prázdné zprávy do všech 4 cílových front. Dvě z nich míří do různých workerů (cross-worker routing přes RabbitMQ exchange), dvě míří do stejného workeru (TimetableWorker).
|
|
@@ -264,14 +264,12 @@ _:warning: Původním záměrem bylo využití OIS číselníku během zpracová
|
|
|
264
264
|
- baseUrl: module.pid.staticData.baseUrl
|
|
265
265
|
- departure directions url: module.pid.staticData.departuresDirection.path
|
|
266
266
|
- metro rail track url: module.pid.staticData.metroRailTracks.path
|
|
267
|
-
- not public vehicles url: module.pid.staticData.notPublicVehicles.path
|
|
268
267
|
- formát dat
|
|
269
268
|
- protokol: http
|
|
270
|
-
- datový typ: csv
|
|
269
|
+
- datový typ: csv
|
|
271
270
|
- validační schéma:
|
|
272
271
|
- [MetroRailTrack](../src/schema-definitions/datasources/static-data/MetroRailTrackJsonSchema.ts)
|
|
273
272
|
- [DeparturesDirection](../src/schema-definitions/datasources/static-data/DeparturesDirectionsJsonSchema.ts)
|
|
274
|
-
- [NotPublicVehicles](../src/schema-definitions/datasources/static-data/interfaces/NotPublicVehiclesDataInterface.ts) – interface `INotPublicVehicles`
|
|
275
273
|
- příklad vstupnich dat: viz zdroj data
|
|
276
274
|
- frekvence stahování
|
|
277
275
|
- Po nacteni jizdnich radu (fronta: vehicle-positions.ropidgtfs.checkForNewData)
|
|
@@ -514,9 +512,6 @@ Všechny tabulky se nachází ve schématu `pid`
|
|
|
514
512
|
- [RopidGTFSRunNumbersTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidGTFSRunNumbersTransformation.ts)
|
|
515
513
|
- [RopidGtfsRouteSubAgencyTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidGtfsRouteSubAgencyTransformation.ts)
|
|
516
514
|
- on top of transformation functionality it also removes duplicates. Rule: If there are multiple rows with same `route_id` and `sub_agency_id` only the first with filled licence number is kept.
|
|
517
|
-
- rozšířené sloupce GTFS souborů (nestandardní rozšíření ROPID)
|
|
518
|
-
- `trips.txt` – sloupec `headsign_icons`: řetězec dvouznakových kódů ikon (např. `"MbSb"`), uložen do `ropidgtfs_trips.headsign_icons`
|
|
519
|
-
- `stop_times.txt` – sloupec `headsign_icons`: přepis na úrovni zastávky, uložen do `ropidgtfs_stop_times.headsign_icons`; má přednost před hodnotou z `trips.txt` pokud je zároveň vyplněn `stop_headsign`
|
|
520
515
|
- data modely
|
|
521
516
|
- RopidGTFSMetadataModel `ropidgtfs_metadata`
|
|
522
517
|
- RopidGTFSAgencyModel `ropidgtfs_agency`
|
|
@@ -567,7 +562,6 @@ Všechny tabulky se nachází ve schématu `pid`
|
|
|
567
562
|
- RopidGTFSPrecomputedMinMaxStopSequencesModel `ropidgtfs_precomputed_minmax_stop_sequences`
|
|
568
563
|
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
|
|
569
564
|
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
|
|
570
|
-
- RopidGTFSPrecomputedTripConnectionsModel `ropidgtfs_precomputed_trip_connections`
|
|
571
565
|
|
|
572
566
|
#### task _RefreshPrecomputedTables_
|
|
573
567
|
|
|
@@ -587,7 +581,6 @@ Všechny tabulky se nachází ve schématu `pid`
|
|
|
587
581
|
- RopidGTFSPrecomputedMinMaxStopSequencesModel `ropidgtfs_precomputed_minmax_stop_sequences`
|
|
588
582
|
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
|
|
589
583
|
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
|
|
590
|
-
- RopidGTFSPrecomputedTripConnectionsModel `ropidgtfs_precomputed_trip_connections`
|
|
591
584
|
|
|
592
585
|
#### task _RefreshPublicGtfsDepartureCacheTask_
|
|
593
586
|
|
|
@@ -603,10 +596,8 @@ Task se stará o aktualizaci cache pro public odjezdy. Pouští se pravidelně c
|
|
|
603
596
|
- ROPID FTP
|
|
604
597
|
- transformace
|
|
605
598
|
- [PublicDepartureCacheTransformation](../src/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.ts)
|
|
606
|
-
- výsledný cache záznam obsahuje pole `connections` (garantované přestupy – přednačtené z `ropidgtfs_precomputed_trip_connections`, původně z `transfers.txt` kde `transfer_type = 1`) a pole `wheelchair_accessible` (přístupnost vozidla pro vozíčkáře z GTFS `trips.txt`)
|
|
607
|
-
- pole `trip_headsign_icons`: pokud je pro danou zastávku spoje vyplněn `stop_headsign`, použije se `stop_headsign_icons` z `ropidgtfs_stop_times`; jinak se použije `headsign_icons` z `ropidgtfs_trips`; výsledek je řetězec dvouznakových kódů (např. `"MbMcSb"`) nebo `null`
|
|
608
599
|
- data modely
|
|
609
|
-
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
|
|
600
|
+
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
|
|
610
601
|
|
|
611
602
|
#### task _SaveStaticData_
|
|
612
603
|
|
|
@@ -622,19 +613,9 @@ Task se stará o aktualizaci statickych dat. Pouští se po dokončení načten
|
|
|
622
613
|
- transformace
|
|
623
614
|
- [DeparturesDirectionTransformation](../src/integration-engine/ropid-gtfs/workers/timetables/tasks/transformations/DeparturesDirectionTransformation.ts)
|
|
624
615
|
- [MetroRailtrackDataTransformation](../src/integration-engine/ropid-gtfs/workers/timetables/tasks/transformations/MetroRailtrackDataTransformation.ts)
|
|
625
|
-
- `NotPublicVehicles` – data se ukládají přímo do cache klíče `config:notPublicVehicles` přes `NotPublicVehiclesRedisRepository` (žádná DB tabulka)
|
|
626
616
|
- data modely
|
|
627
617
|
- RopidDeparturesDirections `ropid_departures_directions`
|
|
628
618
|
- RopidGtfsMetroRailtrackGps `ropidgtfs_metro_railtrack_gps`
|
|
629
|
-
- Cache `config:notPublicVehicles` – JSON blob struktury `INotPublicVehicles`:
|
|
630
|
-
```json
|
|
631
|
-
{
|
|
632
|
-
"tram": { "registrationNumbers": ["string"] },
|
|
633
|
-
"road": { "registrationNumbers": ["string"] },
|
|
634
|
-
"routeIds": ["string"]
|
|
635
|
-
}
|
|
636
|
-
```
|
|
637
|
-
`road` pokrývá autobusy i trolejbusy (evidenční čísla se mohou překrývat s tramvajemi, proto jsou oddělena). `routeIds` je whitelist číselných identifikátorů náhradních nebo dočasných linek (např. náhradní autobus za metro při výluce nebo mimořádné události), které se mají zobrazovat i bez platného JŘ spoje.
|
|
638
619
|
|
|
639
620
|
#### task _EnsureCacheTask_
|
|
640
621
|
|
|
@@ -1105,18 +1086,6 @@ Worker má na starost generování souborů s realtime daty pro `gtfsrt` endpoin
|
|
|
1105
1086
|
- VPTripsModel `vehiclepositions_trips`
|
|
1106
1087
|
- VPPositionsModel `vehiclepositions_positions`
|
|
1107
1088
|
|
|
1108
|
-
**`wheelchairAccessible` ve VehicleDescriptor**
|
|
1109
|
-
|
|
1110
|
-
Pole `wheelchairAccessible` je součástí standardního `VehicleDescriptor` ve feedech `vehicle_positions.pb` a `pid_feed.pb`:
|
|
1111
|
-
|
|
1112
|
-
| Interní hodnota | Proto enum |
|
|
1113
|
-
|---|---|
|
|
1114
|
-
| `null` | `WHEELCHAIR_ACCESSIBLE_UNSPECIFIED = 0` |
|
|
1115
|
-
| `true` | `WHEELCHAIR_ACCESSIBLE = 1` |
|
|
1116
|
-
| `false` | `WHEELCHAIR_INACCESSIBLE = 2` |
|
|
1117
|
-
|
|
1118
|
-
Zdrojem je pole `wheelchair_accessible` z tabulky `vehiclepositions_trips` (přenášené přes `IGtfsRtTripDto`). Vedle standardního pole zůstává zachováno rozšíření `.transit_realtime.ovapiVehicleDescriptor.wheelchairAccessible` s původní boolean/null hodnotou.
|
|
1119
|
-
|
|
1120
1089
|
**Určení zpoždění v trip_updates.pb**
|
|
1121
1090
|
|
|
1122
1091
|
Predikce odjezdů probíhá podle vzorce:
|
|
@@ -1222,10 +1191,6 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1222
1191
|
- data modely
|
|
1223
1192
|
- JISEventsModel `jis_events`
|
|
1224
1193
|
- JISEventsRopidGTFSRoutesModel `jis_events_ropidgtfs_routes`
|
|
1225
|
-
- poznámky k datovému modelu
|
|
1226
|
-
- pole `effects` je pole až 3 unikátních řetězců; v GTFS-RT `Alert.effect` se použije pouze `effects[0]`, zbývající hodnoty jsou dostupné pouze v custom-format exportu
|
|
1227
|
-
- pole `cause_detail` je volný text zpřesňující příčinu události; může být `null`
|
|
1228
|
-
- pole `cause` obsahuje překlady do češtiny i angličtiny; anglické hodnoty jsou zahrnuty i ve výstupu GTFS-RT alert feedu
|
|
1229
1194
|
|
|
1230
1195
|
#### _task: RefreshJISInfotextsTask_
|
|
1231
1196
|
|
|
@@ -1320,7 +1285,7 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1320
1285
|
- retence dat
|
|
1321
1286
|
- jízdní řády se generují 1-2x denně na 14 dní dopředu
|
|
1322
1287
|
- polohová data si uchováváme 24 hodin (30 minut od poslední aktualizace, poté v historických tabulkách)
|
|
1323
|
-
- popis vozidel
|
|
1288
|
+
- popis vozidel si uchováváme 24 hodin
|
|
1324
1289
|
- preset logy si uchováváme 8 hodin
|
|
1325
1290
|
- JIS události a infotexty si uchováváme neomezeně
|
|
1326
1291
|
|
|
@@ -1463,12 +1428,6 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1463
1428
|
|
|
1464
1429
|
- zdrojové tabulky
|
|
1465
1430
|
- `ropidgtfs_precomputed_departures`, `ropidgtfs_stops`, `ropidgtfs_cis_stops`, `jis_infotexts`, `jis_infotexts_ropidgtfs_stops`, `ropid_departures_directions`, `vehiclepositions_positions`, `vehiclepositions_trips`
|
|
1466
|
-
- odpověď obsahuje hlavičku `X-Golemio-Preset-Metadata: airConditionPossible=0|1`
|
|
1467
|
-
- `1` pokud byl zadán query parametr `airCondition` s pravdivou hodnotou, `0` jinak
|
|
1468
|
-
- slouží monitorovacím systémům (preset systémy monitorovacího centra ROPID) k detekci aktivního filtrování dle klimatizace
|
|
1469
|
-
- kód nástupiště (`platform_code`)
|
|
1470
|
-
- **vlaky**: preferuje se CIS hodnota `cis_stop_platform_code` uložená z MPVNet zpráv (`PlatformCodeResolver`); MPVNet atribut `$.stan` je před uložením oříznut na první platný segment (viz [parsování `stan` u vlaků](../processing/input_realtime_data/http_mpvnet.md#parsování-stanoviště-stan-u-vlaků))
|
|
1471
|
-
- **ostatní typy**: používá se GTFS `platform_code` ze `stop_times.txt`
|
|
1472
1431
|
|
|
1473
1432
|
### PID Departure Boards v3
|
|
1474
1433
|
|
|
@@ -1476,42 +1435,6 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1476
1435
|
|
|
1477
1436
|
- načte odjezdy pro přestupní tabule ve vozidlech a aktivní infotexty exportované z aplikace VYMI (JIS) Infotexty
|
|
1478
1437
|
|
|
1479
|
-
### PID Departure Boards v4
|
|
1480
|
-
|
|
1481
|
-
#### _/v4/pid/transferboards_
|
|
1482
|
-
|
|
1483
|
-
- načte odjezdy pro přestupní tabule ve vozidlech na základě aktuální polohy vozidla a aktivní infotexty exportované z aplikace VYMI (JIS) Infotexty
|
|
1484
|
-
- parametry
|
|
1485
|
-
- `aswId` + `vehicleRegistrationNumber` + `routeType` – identifikace zastávky a vozidla přes ASW číselník (vzájemně se vylučuje s `cisId`+`tripNumber`)
|
|
1486
|
-
- `cisId` + `tripNumber` – identifikace zastávky a spoje přes CIS číselník (zatím neimplementováno, vrací 501)
|
|
1487
|
-
- `timeFrom` – volitelný ISO8601 čas příjezdu (pokud není zadán, použije se reálný čas příjezdu z RT dat)
|
|
1488
|
-
- `limit` – volitelný počet odjezdů (výchozí 8, max 30)
|
|
1489
|
-
- cachováno na 5 sekund (stale-while-revalidate 5 sekund)
|
|
1490
|
-
- zdrojové cache záznamy
|
|
1491
|
-
- `gtfsStopsCache:*` – převod ASW node ID na GTFS stop_id
|
|
1492
|
-
- `gtfsDelayComputation:*` – zjištění zastávek spoje a predikovaného času příjezdu
|
|
1493
|
-
- `vpPublicCache:*` – aktuální poloha a zpoždění vozidla
|
|
1494
|
-
- `gtfsPublicDepartureCache:*` – statické odjezdy ze zastávek (vč. `connections` a `wheelchair_accessible`)
|
|
1495
|
-
- `vpPublicStopTimeCache:*` – live zastávkové časy pro spoje se známou polohou
|
|
1496
|
-
- `jisCache:*` – aktivní infotexty pro dané zastávky
|
|
1497
|
-
- načítání odjezdů z cache (`gtfsPublicDepartureCache`)
|
|
1498
|
-
- z každé zastávky se načte `max(80, min(120, limit × 10))` položek v časovém okně `[plannedTimeFrom − 61 min, plannedTimeFrom + 60 min + delay]`; lookback 61 minut zajišťuje, že se zachytí i navazující spoj, jehož plánovaný odjezd je v minulosti, ale díky vlastnímu zpoždění (až 60 minut) dorazí na zastávku až po příjezdu aktuálního vozidla
|
|
1499
|
-
- ihned po načtení se aplikuje pre-filter: odjezdy autobusů, tramvají a trolejbusů ze zastávek s jiným názvem než aktuální zastávka jsou zahozeny; metro/vlak/přívoz/lanovka procházejí vždy; odjezdy s neprázdným polem `connections[]` jsou zachovány bez ohledu na název zastávky (potenciální garantovaný přestup)
|
|
1500
|
-
- garantované přestupy (`is_guaranteed_transfer`)
|
|
1501
|
-
- označují odjezdy, které na příjezd aktuálního spoje čekají – detekováno z pole `connections` v `gtfsPublicDepartureCache`, kde `from_trip_id` odpovídá aktuálnímu spoji a `arrivalTime < departure_datetime + max_wait_sec`
|
|
1502
|
-
- zobrazované minuty u garantovaného přestupu jsou nastaveny na čas příjezdu aktuálního spoje (ne na plánovaný odjezd navazujícího spoje)
|
|
1503
|
-
- garantované přestupy jsou vyjmuty z filtru opačného směru a filtru podskupiny linky – jsou přidány do `tripIdsToKeep` před spuštěním `findRelevantTripIdsFromLines`, takže projdou bez ohledu na zastávkovou sekvenci
|
|
1504
|
-
- typy "vždy zobrazit" (metro, vlak, přívoz, lanovka) filtr `findRelevantTripIdsFromLines` zcela přeskakují
|
|
1505
|
-
- dostupnost pro vozíčkáře (`is_wheelchair_accessible`)
|
|
1506
|
-
- **metro**: určeno výhradně podle `wheelchair_boarding` zastávky (hodnota `1` = přístupná)
|
|
1507
|
-
- **ostatní typy dopravy**: primárně z RT dat vozidla (`detailed_info.is_wheelchair_accessible`); pokud RT data nejsou k dispozici, použije se GTFS příznak `wheelchair_accessible` z `trips.txt` (`1` = přístupné vozidlo)
|
|
1508
|
-
- seskupování a omezení výstupu (`TransferDepartureCacheTransformation`)
|
|
1509
|
-
- **metro**: seskupuje se podle `route_short_name + stop_id`; na jeden záznam výstupu připadají až 2 hodnoty v poli `departure_timestamp.minutes[]`
|
|
1510
|
-
- **ostatní typy**: seskupuje se podle `route_short_name + direction_id`; na skupinu připadají nejvýše 2 samostatné záznamy odjezdů; `direction_id` se získává z cache poloh vozidel (klíč `route_short_name + trip_headsign`), výchozí hodnota je `0`
|
|
1511
|
-
- konfigurace filtrování opačného směru (backtracking)
|
|
1512
|
-
- `module.pid.vehicle-positions.transferboards.isOppositeDirectionFilterStopNameStrict` (boolean, výchozí `true`) – pokud `true`, zastávka je považována za "zpětnou" pouze pokud se shoduje `stop_id` i `stop_name`; pokud `false`, stačí shoda `stop_id`
|
|
1513
|
-
- `module.pid.vehicle-positions.transferboards.countPreviousStopsToAllow` (integer, výchozí `0`) – kolik předchozích zastávek aktuálního spoje smí kandidátní spoj sdílet ve svých nadcházejících zastávkách, než je považován za zpětný směr a odfiltrován; `0` znamená žádná shoda není povolena
|
|
1514
|
-
|
|
1515
1438
|
#### _/v3/pid/infotexts_
|
|
1516
1439
|
|
|
1517
1440
|
- načte aktivní infotexty exportované z aplikace VYMI (JIS) Infotexty
|
|
@@ -1559,20 +1482,4 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
|
|
|
1559
1482
|
- podle názvů linek a jak daleko do budoucnosti se mají odjezdy navracet
|
|
1560
1483
|
- limitování počtu odjezdů v každé skupině
|
|
1561
1484
|
- EP je optimalizován pro vyšší zátěž z mobilní aplikace PID lítačka - požadavek do databáze z OG pouze v případě nutnosti obnovit cache s vehicle descriptory (klimatizace, usb nabíječky), jinak je vše z Redisu
|
|
1562
|
-
- deduplikace odjezdů (pro seskupení "jeden za linka+směr") se provádí podle klíče `route_id + trip_headsign + platform_code`; toto se liší od původního přístupu deduplikace podle `stop_id` a správně pokrývá situace, kdy jeden ASW uzel odpovídá více GTFS `stop_id`
|
|
1563
|
-
- dostupnost pro vozíčkáře (`is_wheelchair_accessible`) se určuje v pořadí priority:
|
|
1564
|
-
1. RT descriptor vozidla (`detailed_info.is_wheelchair_accessible` z vehicle positions)
|
|
1565
|
-
2. GTFS statický příznak `wheelchair_accessible` z `trips.txt` (`1` = přístupné), pokud RT data nejsou k dispozici
|
|
1566
1485
|
- je použit `CompressionByDefaultMiddleware` a odpovědi jsou tak na output gateway komprimovány i pokud klient explicitně nepovolí komprimaci vhodnou hodnotou hlavičky `Accept-Encoding` (lze však komprimaci explicitně zakázat hodnotou `identity`)
|
|
1567
|
-
|
|
1568
|
-
### JIS v1
|
|
1569
|
-
|
|
1570
|
-
#### _/v1/jis/events/custom-format_
|
|
1571
|
-
|
|
1572
|
-
- vrátí seznam publikovaných událostí ve vlastním formátu pro externí konzumenty (fallback endpoint pro webhooky)
|
|
1573
|
-
- parametry
|
|
1574
|
-
- `displayPeriodStart` / `displayPeriodEnd` – filtrování podle překryvu zobrazovacího okna události s požadovaným rozsahem (ISO 8601)
|
|
1575
|
-
- `organizationNames` – filtrování podle organizace (pole řetězců)
|
|
1576
|
-
- `type` – filtrování podle typu události (`INCIDENT`, `DISRUPTION`, `SERVICE_CHANGE`)
|
|
1577
|
-
- zdrojové tabulky: `jis_events`, `jis_events_ropidgtfs_routes`
|
|
1578
|
-
- formát odpovědi: viz schéma `EventCustomFormat` v [openapi-output.yaml](./openapi-output.yaml)
|
package/docs/jis/index.md
CHANGED
|
@@ -246,20 +246,3 @@ flowchart TB
|
|
|
246
246
|
```
|
|
247
247
|
|
|
248
248
|
Zdroj a formát dat pro aktivní stahování jsou dále více popsány v implementační dokumentaci ([události](../implementation_documentation.md#jis-events), [infotexty](../implementation_documentation.md#jis-infotexts)), stejně tak jako [worker a tasky](../implementation_documentation.md#jisworker) a popis [uložení dat](../implementation_documentation.md#uložení-dat) včetně databázového schema a popisu retence.
|
|
249
|
-
|
|
250
|
-
## Datový model událostí — vybraná pole
|
|
251
|
-
|
|
252
|
-
### `cause_detail`
|
|
253
|
-
|
|
254
|
-
Volitelné textové upřesnění příčiny události (`cause_detail`). Může být `null`. Dostupné v custom-format exportu (`/v1/jis/events/custom-format`) i v GTFS-RT alert feedu jako rozšíření. Struktura:
|
|
255
|
-
```json
|
|
256
|
-
{ "cs": "Nehoda na křižovatce", "en": null }
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
### `cause` — anglický překlad
|
|
260
|
-
|
|
261
|
-
Pole `cause` obsahuje překlad příčiny události do češtiny i do angličtiny. Anglická hodnota je zahrnuta i ve výstupu GTFS-RT alert feedu (pole `Alert.cause` v `pid_feed.pb` i `alerts.pb`).
|
|
262
|
-
|
|
263
|
-
### `effects` (pole příčin dopadu)
|
|
264
|
-
|
|
265
|
-
Pole `effects` může obsahovat 1–3 unikátní řetězcové hodnoty. Pouze `effects[0]` se mapuje na standardní GTFS-RT `Alert.effect`; zbývající hodnoty jsou dostupné výhradně v custom-format exportu.
|
package/docs/openapi-output.yaml
CHANGED
|
@@ -1022,16 +1022,6 @@ paths:
|
|
|
1022
1022
|
type: number
|
|
1023
1023
|
format: int64
|
|
1024
1024
|
example: 0
|
|
1025
|
-
- name: appendHeadsignsLimit
|
|
1026
|
-
in: query
|
|
1027
|
-
description: >-
|
|
1028
|
-
Number of stops before route switch at which headsign is enriched with continuation info.
|
|
1029
|
-
When set and a departure has route-switch data, headsign becomes `<headsign> → <next_route> <next_headsign>`.
|
|
1030
|
-
required: false
|
|
1031
|
-
schema:
|
|
1032
|
-
type: integer
|
|
1033
|
-
minimum: 0
|
|
1034
|
-
example: 3
|
|
1035
1025
|
|
|
1036
1026
|
responses:
|
|
1037
1027
|
"200":
|
|
@@ -2654,9 +2644,7 @@ components:
|
|
|
2654
2644
|
example: false
|
|
2655
2645
|
origin_timestamp:
|
|
2656
2646
|
type: string
|
|
2657
|
-
description:
|
|
2658
|
-
Transmission time of the message from the vehicle (UTC).
|
|
2659
|
-
Corresponds to the lat/lng position reported in the same message.
|
|
2647
|
+
description: Time at which the position was sent from the vehicle (UTC)
|
|
2660
2648
|
example: "2019-03-18T11:00:00.000Z"
|
|
2661
2649
|
speed:
|
|
2662
2650
|
type: number
|
|
@@ -2778,10 +2766,7 @@ components:
|
|
|
2778
2766
|
example: "top-left"
|
|
2779
2767
|
headsign:
|
|
2780
2768
|
type: string
|
|
2781
|
-
description:
|
|
2782
|
-
Trip headsign (usually the final stop). When the `appendHeadsignsLimit` parameter is used and the departure
|
|
2783
|
-
has route-switch data, this field may contain appended continuation info in the form
|
|
2784
|
-
`<headsign> → <next_route> <next_headsign>`.
|
|
2769
|
+
description: Trip headsign (usually the final stop).
|
|
2785
2770
|
example: "Chodov"
|
|
2786
2771
|
id:
|
|
2787
2772
|
type: string
|
|
@@ -3190,9 +3175,7 @@ components:
|
|
|
3190
3175
|
origin_timestamp:
|
|
3191
3176
|
type: string
|
|
3192
3177
|
nullable: true
|
|
3193
|
-
description:
|
|
3194
|
-
Transmission time of the last message from the vehicle.
|
|
3195
|
-
Corresponds to the lat/lng position reported in the same message.
|
|
3178
|
+
description: "time when vehicle send last update"
|
|
3196
3179
|
example: "2023-12-06T12:00:00+01:00"
|
|
3197
3180
|
|
|
3198
3181
|
ScopeStaticInfo:
|
|
@@ -92,27 +92,6 @@
|
|
|
92
92
|
```
|
|
93
93
|
|
|
94
94
|
## Vlaky
|
|
95
|
-
|
|
96
|
-
### Parsování stanoviště (`stan`) u vlaků
|
|
97
|
-
|
|
98
|
-
Atribut `stan` v elementu `<zast>` u vlaků může obsahovat složený řetězec ve formátu `část1/část2` nebo `část1 část2` (např. `5S/22S`, `-/6`, `2/3`). Jako kanonický kód nástupiště se použije **první platný segment** – první token oddělený lomítkem nebo mezerou, pokud není prázdný nebo `-`.
|
|
99
|
-
|
|
100
|
-
Příklady výsledků po parsování:
|
|
101
|
-
|
|
102
|
-
| Vstup (`stan`) | Výsledný `platform_code` |
|
|
103
|
-
|---|---|
|
|
104
|
-
| `1/3` | `1` |
|
|
105
|
-
| `-/BUS` | `BUS` |
|
|
106
|
-
| `2/100V` | `2` |
|
|
107
|
-
| `5A/- A C` | `5A` |
|
|
108
|
-
| `5S/22S` | `5S` |
|
|
109
|
-
|
|
110
|
-
Parsování provádí `MpvStopParser.parsePlatformCode()`. Výsledný kód je uložen jako `cis_stop_platform_code` v tabulce `vehiclepositions_positions` a na výstupu se pro vlaky preferuje před GTFS `platform_code` (viz `PlatformCodeResolver`).
|
|
111
|
-
|
|
112
|
-
### Zprávy s informací o nástupišti jako syntetická poloha
|
|
113
|
-
|
|
114
|
-
Pokud MPVNet zpráva vlaku obsahuje informaci o nástupišti (`$.stan`) pro budoucí zastávku a vlak ještě nemá žádnou aktivní RT polohu, vytvoří se syntetická poloha ve stavu `before_track` na základě dat z této zastávky. Díky tomu lze zobrazit kód nástupiště ještě před fyzickým příjezdem vlaku na stanoviště. Kód nástupiště se parsuje stejným způsobem jako výše (`MpvStopParser.parsePlatformCode()`).
|
|
115
|
-
|
|
116
95
|
```xml
|
|
117
96
|
<?xml version="1.0" encoding="utf-8"?>
|
|
118
97
|
|
|
@@ -15,11 +15,11 @@
|
|
|
15
15
|
- **lat** - zeměpisná šířka
|
|
16
16
|
- **lng** - zeměpisná délka
|
|
17
17
|
- **akt** - poslední projetá zastávka, nepoužíváme
|
|
18
|
-
- **takt** -
|
|
18
|
+
- **takt** - timestamp odeslání zprávy z vozidla
|
|
19
19
|
- **konc** - poslední ASW zastávka spoje, nepoužíváme
|
|
20
|
-
- **tjr** -
|
|
20
|
+
- **tjr** - timestamp odeslání zprávy podle JŘ (v jaký čas mělo vozidlo na daném bodě být)
|
|
21
21
|
- **pkt** - identifikátor zprávy z vozidla/číslo TCP packetu??? Nepoužíváme
|
|
22
|
-
- **tm** -
|
|
22
|
+
- **tm** - timestamp odeslání zprávy od DPP
|
|
23
23
|
- **events** - událost asociovaná se zprávou
|
|
24
24
|
- P - příjezd do zastávky
|
|
25
25
|
- O - odjezd ze zastávky
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
- **lat** - zeměpisná šířka
|
|
15
15
|
- **lng** - zeměpisná délka
|
|
16
16
|
- **akt** - poslední projetá zastávka, nepoužíváme
|
|
17
|
-
- **takt** -
|
|
17
|
+
- **takt** - timestamp odeslání zprávy z vozidla
|
|
18
18
|
- **konc** - poslední ASW zastávka spoje, nepoužíváme
|
|
19
|
-
- **tjr** -
|
|
19
|
+
- **tjr** - timestamp odeslání zprávy podle JŘ (v jaký čas mělo vozidlo na daném bodě být)
|
|
20
20
|
- **pkt** - identifikátor zprávy z vozidla/číslo TCP packetu??? Nepoužíváme
|
|
21
|
-
- **tm** -
|
|
21
|
+
- **tm** - timestamp odeslání zprávy od DPP
|
|
22
22
|
- **events** - událost asociovaná se zprávou
|
|
23
23
|
- P - příjezd do zastávky
|
|
24
24
|
- O - odjezd ze zastávky
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
- duplikace vlakových spojů a pozic podle block id (určení tracking podle cis stop id)
|
|
14
14
|
- obohacení spojů GTFS daty (včetně oběhu a kmenové linky)
|
|
15
15
|
- upsert asociovaných pozic
|
|
16
|
-
- **syntetická poloha z informace o nástupišti**: pokud zpráva obsahuje atribut `$.stan` pro budoucí zastávku a vlak ještě nemá aktivní RT polohu, vytvoří se syntetická pozice ve stavu `before_track` pro tuto zastávku – umožňuje zobrazit kód nástupiště před fyzickým příjezdem vlaku
|
|
17
16
|
- spoje se pošlou do fronty `updateDelay`
|
|
18
17
|
- updateDelay
|
|
19
18
|
- opět duplikace vlakových spojů, upsert asociovaných pozic
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
- pokud je tramvaj, je `tracking 2`
|
|
15
15
|
- nebo pokud je autobus
|
|
16
16
|
- pokud vozidlo odeslalo zprávu `O`, je `tracking 2`
|
|
17
|
-
- pokud je vozidlo v první zastávce (
|
|
17
|
+
- pokud je vozidlo v první zastávce (tjr), nebo pokud vozidlo vyjelo z první zastávky (takt), je `tracking 2`
|
|
18
18
|
- nebo je `tjr` atribut větší než příjezd do první zastávky spoje, je `tracking 2`
|
|
19
19
|
- jinak je `tracking 0`
|
|
20
20
|
- Rovněž se podle kmenové linky a oběhu vytvoří následující spoje (stav je `unknown`, `tracking` je vždy 0)
|
|
@@ -33,7 +33,6 @@
|
|
|
33
33
|
- pokud je pozice duplicitní (existuje pozice se stejným `origin_timestamp`), stav je `duplicate`
|
|
34
34
|
- pokud vozidlo jede do garáže, je stav `invisible`
|
|
35
35
|
- jinak je stav `after_track`
|
|
36
|
-
- **zvláštní případ**: pokud má pozice `cis_last_stop_id = null`, stav se znovu nevyhodnocuje – pozice si zachovává poslední známý stav (zmrazení stavu); to zabraňuje nežádoucímu cyklování zpět do `untracked` pouze kvůli chybějící CIS zastávce
|
|
37
36
|
- Tracking (`tracking` je `2`)
|
|
38
37
|
- pokud je vozidlo 200 metrů od nejblizšího bodu na trase, stav je `off_track`
|
|
39
38
|
- pokud je vozidlo v zastávce, je stav `at_stop`
|
package/package.json
CHANGED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var dbm;
|
|
4
|
-
var type;
|
|
5
|
-
var seed;
|
|
6
|
-
var fs = require('fs');
|
|
7
|
-
var path = require('path');
|
|
8
|
-
var Promise;
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* We receive the dbmigrate dependency from dbmigrate initially.
|
|
12
|
-
* This enables us to not have to rely on NODE_PATH.
|
|
13
|
-
*/
|
|
14
|
-
exports.setup = function(options, seedLink) {
|
|
15
|
-
dbm = options.dbmigrate;
|
|
16
|
-
type = dbm.dataType;
|
|
17
|
-
seed = seedLink;
|
|
18
|
-
Promise = options.Promise;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
exports.up = function(db) {
|
|
22
|
-
var filePath = path.join(__dirname, 'sqls', '20260325161451-add-new-columns-to-precomputed-table-up.sql');
|
|
23
|
-
return new Promise( function( resolve, reject ) {
|
|
24
|
-
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
25
|
-
if (err) return reject(err);
|
|
26
|
-
console.log('received data: ' + data);
|
|
27
|
-
|
|
28
|
-
resolve(data);
|
|
29
|
-
});
|
|
30
|
-
})
|
|
31
|
-
.then(function(data) {
|
|
32
|
-
return db.runSql(data);
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
exports.down = function(db) {
|
|
37
|
-
var filePath = path.join(__dirname, 'sqls', '20260325161451-add-new-columns-to-precomputed-table-down.sql');
|
|
38
|
-
return new Promise( function( resolve, reject ) {
|
|
39
|
-
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
-
if (err) return reject(err);
|
|
41
|
-
console.log('received data: ' + data);
|
|
42
|
-
|
|
43
|
-
resolve(data);
|
|
44
|
-
});
|
|
45
|
-
})
|
|
46
|
-
.then(function(data) {
|
|
47
|
-
return db.runSql(data);
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
exports._meta = {
|
|
52
|
-
"version": 1
|
|
53
|
-
};
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var dbm;
|
|
4
|
-
var type;
|
|
5
|
-
var seed;
|
|
6
|
-
var fs = require('fs');
|
|
7
|
-
var path = require('path');
|
|
8
|
-
var Promise;
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* We receive the dbmigrate dependency from dbmigrate initially.
|
|
12
|
-
* This enables us to not have to rely on NODE_PATH.
|
|
13
|
-
*/
|
|
14
|
-
exports.setup = function(options, seedLink) {
|
|
15
|
-
dbm = options.dbmigrate;
|
|
16
|
-
type = dbm.dataType;
|
|
17
|
-
seed = seedLink;
|
|
18
|
-
Promise = options.Promise;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
exports.up = function(db) {
|
|
22
|
-
var filePath = path.join(__dirname, 'sqls', '20260407082406-add-new-columns-to-getDepartures()-up.sql');
|
|
23
|
-
return new Promise( function( resolve, reject ) {
|
|
24
|
-
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
25
|
-
if (err) return reject(err);
|
|
26
|
-
console.log('received data: ' + data);
|
|
27
|
-
|
|
28
|
-
resolve(data);
|
|
29
|
-
});
|
|
30
|
-
})
|
|
31
|
-
.then(function(data) {
|
|
32
|
-
return db.runSql(data);
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
exports.down = function(db) {
|
|
37
|
-
var filePath = path.join(__dirname, 'sqls', '20260407082406-add-new-columns-to-getDepartures()-down.sql');
|
|
38
|
-
return new Promise( function( resolve, reject ) {
|
|
39
|
-
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
-
if (err) return reject(err);
|
|
41
|
-
console.log('received data: ' + data);
|
|
42
|
-
|
|
43
|
-
resolve(data);
|
|
44
|
-
});
|
|
45
|
-
})
|
|
46
|
-
.then(function(data) {
|
|
47
|
-
return db.runSql(data);
|
|
48
|
-
});
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
exports._meta = {
|
|
52
|
-
"version": 1
|
|
53
|
-
};
|