@golemio/pid
Version:
Golemio PID Module
1,063 lines (933 loc) • 84.8 kB
Markdown
# Implementační dokumentace modulu _pid_
## Záměr
Modul slouží k ukládání a poskytování informací o jízdních řádech a real-time polohových datech v Praze a Středočeském kraji.
## Vstupní data
### Data aktivně stahujeme
**Dostupní poskytovatelé**:
- ROPID FTP
- GTFS (General Transit Feed Specification) jízdní rády
- CIS (Celostátní informační systém) zastávkový číselník
- OIS (Odbavovací a informační systém) mapovací číselník pro tramvaje
- Oběhy vozidel
- Presets (definice pro zkracovač URL)
- ROPID VYMI (Výluky a mimořádnosti)
- Seznam Autobusu API (informace o vozidlech, např. dostupnost klimatizace nebo USB zásuvek)
- Statická data
- Ukazatelé směru jízdy
- Kolejové obvody pro metro
- Grafana Loki
- Request logy z URL proxy pro monitorovací centrum od ROPIDU
- JIS Infotexty
#### _ROPID FTP (obecně)_
- přístupy
- host: config.datasources.RopidFTP.host
- user: config.datasources.RopidFTP.user
- password: config.datasources.RopidFTP.password
- secure: config.datasources.RopidFTP.secure
#### _GTFS jízdní řády_
- identifikátor: PID_GTFS
- zdroj dat
- cesta: /GTFS (config.datasources.RopidGTFSPath)
- soubory:
- PID_GTFS.zip (config.datasources.RopidGTFSFilename) -> agency.txt, calendar.txt, calendar_dates.txt, shapes.txt, stop_times.txt, stops.txt, routes.txt, route_sub_agencies.txt, transfers.txt, trips.txt
- formát dat
- protokol: ftp
- datový typ: csv
- validační schéma: není, mapování rovnou do tabulek, viz [Dto jsonSchema](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/schema-definitions/ropid-gtfs/models)
- příklad vstupnich dat https://gitlab.com/operator-ict/golemio/code/modules/pid/-/snippets/2462385
- frekvence stahování
- cron definice:
- cron.vehicle-positions.ropidgtfs.checkForNewData
- rabin `0 35 5,12 * * *`
- prod `0 20 5 * * *`, `0 50 12 * * *`
- názvy rabbitmq front
- vehicle-positions.ropidgtfs.checkForNewData
- vehicle-positions.ropidgtfs.downloadDatasets se zprávou `["PID_GTFS"]`
#### _CIS zastávkový číselník_
- identifikátor: CIS_STOPS
- zdroj dat
- cesta: /PUBLIC/ZASTAVKY/JSON (config.datasources.RopidGTFSCisStopsPath)
- soubory:
- Stops.Min.json (config.datasources.RopidGTFSCisStopsFilename)
- formát dat
- protokol: ftp
- datový typ: json
- validační schéma: [datasourceJsonSchema](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/schema-definitions/ropid-gtfs/RopidGTFSCisStops.ts#L31)
- příklad vstupnich dat https://gitlab.com/operator-ict/golemio/code/modules/pid/-/snippets/2462390
- frekvence stahování
- cron definice:
- viz GTFS jízdní řády
- názvy rabbitmq front
- vehicle-positions.ropidgtfs.checkForNewData
- vehicle-positions.ropidgtfs.downloadDatasets se zprávou `["CIS_STOPS"]`
#### _OIS mapovací číselník pro tramvaje_
_:warning: Původním záměrem bylo využití OIS číselníku během zpracování poloh tramvají z MPVNETU. Momentálně zůstavá nevyužit, v budoucnu bude smazán_
- identifikátor: OIS_MAPPING
- zdroj dat
- cesta: / (config.datasources.RopidGTFSOisPath)
- soubory:
- oisMapping.json (config.datasources.RopidGTFSOisFilename)
- formát dat
- protokol: ftp
- datový typ: json
- validační schéma: [datasourceJsonSchema](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/schema-definitions/ropid-gtfs/RopidGTFSOisMapping.ts#L13)
- příklad vstupnich dat
```json
[
{
"ois": 5067,
"node": 67,
"name": "Čechovo náměstí"
}
]
```
- frekvence stahování
- cron definice:
- viz GTFS jízdní řády
- názvy rabbitmq front
- vehicle-positions.ropidgtfs.checkForNewData
- vehicle-positions.ropidgtfs.downloadDatasets se zprávou `["OIS_MAPPING"]`
#### _Oběhy vozidel_
- identifikátor: RUN_NUMBERS
- zdroj dat
- cesta: / (config.datasources.RopidGTFSRunNumbersPath)
- soubory:
- obehy.csv (config.datasources.RopidGTFSRunNumbersFilename)
- formát dat
- protokol: ftp
- datový typ: csv
- validační schéma: [datasourceJsonSchema](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/schema-definitions/ropid-gtfs/RopidGTFSRunNumbers.ts#L19)
- příklad vstupnich dat
```csv
route_id,run_number,service_id,trip_id,vehicle_type
L991,1,1111100-1,991_1342_220901,3
L991,1,1111100-1,991_1343_220901,3
```
- frekvence stahování
- cron definice:
- viz GTFS jízdní řády
- názvy rabbitmq front
- vehicle-positions.ropidgtfs.checkForNewData
- vehicle-positions.ropidgtfs.downloadDatasets se zprávou `["RUN_NUMBERS"]`
#### _Presets definice pro zkracovač URL_
- identifikátor: DEPARTURES_PRESETS
- zdroj dat
- cesta: / (config.datasources.RopidDeparturesPresetsPath)
- soubory:
- presets.json (config.datasources.RopidDeparturesPresetsFilename)
- formát dat
- protokol: ftp
- datový typ: json
- validační schéma: [outputPresetsJsonSchema](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/schema-definitions/ropid-departures-presets/RopidDeparturesPresetsOutputSchemas.ts)
- příklad vstupnich dat: [ropiddeparturespresets-data.json](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/test/integration-engine/ropid-gtfs/data/ropiddeparturespresets-data.json)
- frekvence stahování
- cron definice:
- cron.vehicle-positions.ropidpresets.checkForNewDeparturesPresets
- rabin `15 */4 * * * *`
- prod `15 */4 * * * *`
- názvy rabbitmq front
- vehicle-positions.ropidpresets.checkForNewDeparturesPresets
- vehicle-positions.ropidpresets.downloadDeparturesPresets
#### _VYMI výluky a mimořádnosti_
- zdroj dat
- url: https://vymipid.ropid.cz/ws/list_publ (config.datasources.RopidVYMIApiUrl)
- parametry dotazu: config.datasources.RopidVYMIApiHeaders
- formát dat
- protokol: http
- datový typ: json
- validační schéma: [datasourceJsonSchema](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/schema-definitions/ropid-vymi/index.ts#L62)
- příklad vstupnich dat: [ropidvymi-datasource.json](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/test/integration-engine/ropid-vymi/data/ropidvymi-datasource.json)
- frekvence stahování
- cron definice:
- cron.vehicle-positions.ropidvymi.checkForNewEvents
- rabin `*/30 * * * * *`
- prod `*/30 * * * * *`
- názvy rabbitmq front
- vehicle-positions.ropidvymi.checkForNewEvents
#### _Seznam Autobusu API_
- zdroj dat
- url: config.datasources.SeznamAutobusuApiUrl
- parametry dotazu: config.datasources.SeznamAutobusuApiHeaders
- formát dat
- protokol: http
- datový typ: json
- validační schéma: [seznamAutobusuJsonSchema](../src/schema-definitions/vehicle-descriptors/datasources/SeznamAutobusuJsonSchema.ts)
- příklad vstupnich dat: [InputDataFixture](../test/integration-engine/vehicle-positions/workers/vehicle-descriptors/fixtures/InputDataFixture.ts)
- frekvence stahování
- cron definice:
- cron.vehicle-positions.vehicledescriptors.refreshDescriptors
- rabin `0 15 5,12 * * *`
- prod `0 10 5,12 * * *`
- názvy rabbitmq front
- vehicle-positions.vehicledescriptors.refreshDescriptors
#### _Ukazatelé směru jízdy_
- zdroj dat
- pomocná statická data
- data nahrávány přímo do tabulky https://gitlab.com/operator-ict/golemio/code/modules/pid/-/snippets/2462793
- formát dat
- datový typ: sql
- validační schéma: [outputDeparturesDirectionsJsonSchema](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/schema-definitions/ropid-departures-directions/RopidDeparturesDirectionsOutputSchemas.ts#L1)
- příklad vstupnich dat: viz zdroj dat
- frekvence stahování
- manuální refresh dat
- název rabbitmq fronty
- neexistuje
#### _Grafana Loki_
- zdroj dat
- url: config.datasources.GrafanaLokiApiUrl
- parametry dotazu: config.datasources.GrafanaLokiApiHeaders
- formát dat
- protokol: http
- datový typ: json
- validační schéma: [grafanaLokiJsonSchema](../src/schema-definitions/ropid-departures-preset-logs/datasources/GrafanaLokiJsonSchema.ts)
- příklad vstupnich dat: [InputLogsFixture](../test/integration-engine/ropid-gtfs/workers/presets/fixtures/InputLogsFixture.ts)
- frekvence stahování
- cron definice:
- cron.vehicle-positions.ropidpresets.collectAndSaveLogs
- rabin `0 */1 * * * *`
- prod `0 */1 * * * *`
- názvy rabbitmq front
- vehicle-positions.ropidpresets.collectAndSaveLogs se zprávou `{ "targetMinutes": n }`
#### _JIS Events_
- zdroj dat
- baseUrl: module.pid.jis.vymiApi.baseUrl
- VYMI events path: module.pid.jis.vymiApi.events.path
- hlavičky VYMI events dotazu: module.pid.jis.vymiApi.events.headers a module.pid.jis.vymiApi.commonHeaders
- formát dat
- protokol: http
- datový typ: json
- validační schéma: [JISEventsJsonSchema](../src/schema-definitions/jis/datasources/JISEventsJsonSchema.ts)
- příklad vstupnich dat: [eventsDataSourceFixture](../test/integration-engine/jis/fixtures/eventsDataSourceFixture.ts)
- frekvence stahování
- cron definice:
- cron.vehicle-positions.jis.refreshJISEvents
- rabin `0 */1 * * * *`
- prod `0 */1 * * * *`
- 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)
- 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
- název rabbitmq fronty
- vehicle-positions.jis.fetchJISEvents
#### _JIS Infotexts_
- zdroj dat
- baseUrl: module.pid.jis.vymiApi.baseUrl
- VYMI infotexts path: module.pid.jis.vymiApi.infotexts.path
- hlavičky VYMI infotexts dotazu: module.pid.jis.vymiApi.infotexts.headers a module.pid.jis.vymiApi.commonHeaders
- formát dat
- protokol: http
- datový typ: json
- validační schéma: [JISInfotextsJsonSchema](../src/schema-definitions/jis/datasources/JISInfotextsJsonSchema.ts)
- příklad vstupnich dat: [infotextsDataSourceFixture](../test/integration-engine/jis/fixtures/infotextsDataSourceFixture.ts)
- frekvence stahování
- cron definice:
- cron.vehicle-positions.jis.refreshJISInfotexts
- rabin `0 */1 * * * *`
- prod `0 */1 * * * *`
- 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)
- 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
- název rabbitmq fronty
- vehicle-positions.jis.fetchJISInfotexts
### _Ropid staticka data_
- zdroj dat
- baseUrl: module.pid.staticData.baseUrl
- departure directions url: module.pid.staticData.departuresDirection.path
- metro rail track url: module.pid.staticData.metroRailTracks.path
- not public vehicles url: module.pid.staticData.notPublicVehicles.path
- formát dat
- protokol: http
- datový typ: csv (DeparturesDirection, MetroRailTrack), json (NotPublicVehicles)
- validační schéma:
- [MetroRailTrack](../src/schema-definitions/datasources/static-data/MetroRailTrackJsonSchema.ts)
- [DeparturesDirection](../src/schema-definitions/datasources/static-data/DeparturesDirectionsJsonSchema.ts)
- [NotPublicVehicles](../src/schema-definitions/datasources/static-data/interfaces/NotPublicVehiclesDataInterface.ts) – interface `INotPublicVehicles`
- příklad vstupnich dat: viz zdroj data
- frekvence stahování
- Po nacteni jizdnich radu (fronta: vehicle-positions.ropidgtfs.checkForNewData)
- názvy rabbitmq front
- vehicle-positions.ropidgtfs.saveStaticData
### Data nám jsou posílána
**Dostupní poskytovatelé**:
- MPVNET (Monitorování provozu vozidel) - ROPID + CHAPS
- autobusy (mimo DPP), vlaky, přívozy, lanovky
- TCP zprávy o obězích vozidel - DPP + CHAPS
- autobusy a trolejbusy, tramvaje
- metro
- TCP zprávy o obězích vozidel - TELMAX
- autobusy (ARRIVA City)
#### _Vehicle Positions_
- formát dat
- protokol: http
- datový typ: xml
- validační schéma: pro parsovaný json [SaveDataToDBSchema](../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/SaveDataToDBSchema.ts)
- příklad vstupních dat
```xml
<?xml version="1.0" encoding="UTF-8"?>
<m disp="http://77.93.194.81:8716/api">
<spoj lin="999999" alias="155" spoj="1" t="3" sled="2" np="true" zrus="false" lat="50.08323" lng="14.51035" cpoz="11:09:06" po="1" zast="56699" zpoz_prij="426" zpoz_odj="426">
<zast zast="57517" stan="C" prij="" odj="11:00" zpoz_typ="3" zpoz_prij="311" zpoz_odj="311"></zast>
</spoj>
</m>
```
- endpoint v input-gateway
- openapi specifikace [/vehiclepositions](https://api.golemio.cz/v2/pid/input/docs/openapi/#/%F0%9F%9B%A4%20Vehicle%20Positions/post_vehiclepositions)
- nastavení práv v permission-proxy
- endpoint `/input-gateway/v1/vehiclepositions/spoje`
- přeposíláno z [produkční data proxy](https://gitlab.com/operator-ict/golemio/devops/infrastructure/-/blob/master/cluster_production/golemio_data-proxy-values.yaml#L65)
- transformace raw dat
- zprávy jsou xml body parserem převedeny do jsonu a přeposlány do rabbitmq fronty
- název rabbitmq fronty
- vehicle-positions.vehiclepositions.saveDataToDB
- ukládání raw dat na blob storage
- název kontejneru: {rabin,golem}-input-gateway
- cesta: /vehiclepositions/yyyy-MM-dd/HH_mm_ss.SSS.xml
- agregace dat: není
- odhadovaná zátěž
- jednotky až desítky za minutu
#### _Vehicle Positions Common Runs_
- formát dat
- protokol: tcp
- datový typ: xml
- validační schéma: základní kontrola xml v [parserech](https://gitlab.com/operator-ict/golemio/code/tcp-input-gateway/-/tree/development/src/receivers/parsers), validační schéma pro parsovaný json [CommonRunsSchema](../src/integration-engine/vehicle-positions/workers/runs/schema/CommonRunsSchema.ts)
- příklad vstupnich dat (autobus)
```xml
<M>
<V turnus="134/3" line="134" evc="3738" np="ano" lat="50.03952" lng="14.42919" akt="07960001" takt="2022-06-29T17:28:13" konc="01100005" tjr="2022-06-29T17:23:00" pkt="12709236" tm="2022-06-29T17:28:22" events="O" />
</M>
```
- příklad vstupnich dat (trolejbus)
```xml
<M>
<V turnus="58/1" line="58" evc="0509" lat="50.11614" lng="14.49470" akt="07540001" takt="2023-06-03T08:16:19" konc="03840001" tjr="2023-06-03T08:16:00" pkt="733775" tm="2023-06-03T08:16:18" events="O" />
</M>
```
- adresa: api.golemio.cz:3003 (tramvaje) a api.golemio.cz:3004 (autobusy)
- dokumentace tcp receiverů: [transport input gateway#dpp-trams](https://gitlab.com/operator-ict/golemio/code/tcp-input-gateway#dpp-trams), [transport input gateway#dpp-busses](https://gitlab.com/operator-ict/golemio/code/tcp-input-gateway#dpp-busses)
- řízení přístupů řešeno na síťové úrovni mimo permission proxy
- přeposíláno z [produkční data proxy](https://gitlab.com/operator-ict/golemio/devops/infrastructure/-/blob/master/cluster_production/golemio_data-proxy-values.yaml#L35)
- transformace raw dat
- úplné zprávy jsou knihovnou `xml2js` převedeny do jsonu a přeposlány do rabbitmq fronty
- implementace tram/bus receiverů je totožná, pouze se zprávy přeposílají do jiných front a ukládají se do jiné složky na blob storage
- název rabbitmq front
- vehicle-positions.vehiclepositions.saveTramRunsToDB
- vehicle-positions.vehiclepositions.saveBusRunsToDB
- ukládání raw dat na blob storage
- název kontejneru: {rabin,golem}-input-gateway
- cesta: /tcp-dpp-{tram,bus}-data/yyyy-MM-dd/HH_mm_ss.SSS.xml
- agregace dat: 1 MB
- odhadovaná zátěž
- tramvaje - desítky zpráv za minutu
- autobusy - jednotky až desítky zpráv za sekundu
#### _Vehicle Positions Metro Runs_
- formát dat
- protokol: tcp
- datový typ: xml
- validační schéma: základní kontrola xml v [parseru](https://gitlab.com/operator-ict/golemio/code/tcp-input-gateway/-/blob/development/src/receivers/parsers/dpp-metro.parser.ts), validační schéma pro parsovaný json [MetroRunsSchema](../src/integration-engine/vehicle-positions/workers/runs/schema/MetroRunsSchema.ts)
- příklad vstupnich dat
```xml
<m linka="A" tm="2022-07-20T13:45:34Z" gvd="GD20a">
<vlak csp=" 3" csr=" 3" cv="279" ko="1809" odch="25" />
</m>
```
- adresa: tcp.golemio.cz:3006
- dokumentace tcp receiveru: [transport input gateway#dpp-metro](https://gitlab.com/operator-ict/golemio/code/tcp-input-gateway#dpp-metro)
- řízení přístupů řešeno na síťové úrovni mimo permission proxy
- přeposíláno z [produkční data proxy](https://gitlab.com/operator-ict/golemio/devops/infrastructure/-/blob/master/cluster_production/golemio_data-proxy-values.yaml#L55)
- transformace raw dat
- úplné zprávy jsou knihovnou `xml2js` převedeny do jsonu a přeposlány do rabbitmq fronty
- název rabbitmq front
- vehicle-positions.vehiclepositionsruns.saveMetroRunsToDB
- ukládání raw dat na blob storage
- název kontejneru: {rabin,golem}-input-gateway
- cesta: /tcp-dpp-metro-data/yyyy-MM-dd/HH_mm_ss.SSS.xml
- agregace dat: 1 MB
- odhadovaná zátěž
- desítky až stovky zpráv za minutu
#### _Vehicle Positions ARRIVA City Bus Runs_
- formát dat
- protokol: tcp
- datový typ: xml
- validační schéma: základní kontrola xml v [parseru](https://gitlab.com/operator-ict/golemio/code/tcp-input-gateway/-/blob/development/src/receivers/parsers/regional-bus.parser.ts), validační schéma pro parsovaný json [RegionalBusRunsSchema](../src/integration-engine/vehicle-positions/workers/runs/schema/RegionalBusRunsSchema.ts)
- příklad vstupnich dat
```xml
<M>
<V imei="867377023812625" rz="6AB8491" pkt="3107" lat="50.00201" lng="14.4054" tm="2023-07-02T23:59:44" events="R" rych="11" smer="149" />
</M>
```
- adresa: tcp.golemio.cz:3008 (TELMAX)
- dokumentace tcp receiveru: [transport input gateway#arriva-city-bus-data](https://gitlab.com/operator-ict/golemio/code/tcp-input-gateway/-/tree/development#arriva-city-bus-data)
- řízení přístupů řešeno na síťové úrovni mimo permission proxy
- přeposíláno z [produkční data proxy](https://gitlab.com/operator-ict/security/golemio-golem/-/blob/master/data-proxy/values-secret.yaml)
- transformace raw dat
- úplné zprávy jsou knihovnou `xml2js` převedeny do jsonu a přeposlány do rabbitmq fronty
- název rabbitmq front
- vehicle-positions.vehiclepositionsruns.saveArrivaCityRunsToDB
- ukládání raw dat na blob storage
- název kontejneru: {rabin,golem}-input-gateway
- cesta: /tcp-arriva-city-data/yyyy-MM-dd/HH_mm_ss.SSS.xml
- agregace dat: 1 MB
- odhadovaná zátěž
- desítky až stovky zpráv za minutu
#### _JIS Events_
- formát dat
- protokol: http
- datový typ: json
- validační schéma: [JISEventsJsonSchema](../src/schema-definitions/jis/datasources/JISEventsJsonSchema.ts)
- příklad vstupnich dat: [eventsDataSourceFixture](../test/integration-engine/jis/fixtures/eventsDataSourceFixture.ts)
- název rabbitmq fronty
- vehicle-positions.jis.refreshJISEvents
#### _JIS Infotexts_
- formát dat
- protokol: http
- datový typ: json
- validační schéma: [JISInfotextsJsonSchema](../src/schema-definitions/jis/datasources/JISInfotextsJsonSchema.ts)
- příklad vstupnich dat: [infotextsDataSourceFixture](../test/integration-engine/jis/fixtures/infotextsDataSourceFixture.ts)
- název rabbitmq fronty
- vehicle-positions.jis.refreshJISInfotexts
## Výstupní data
### Data aktivně posíláme na push endpoint
#### _ROPID monitorovací centrum_
- cíl dat
- url: config.datasources.RopidMonitoringPushUrl
- parametry dotazu: config.datasources.RopidMonitoringPushHeaders
- formát dat
- protokol: http
- datový typ: json
- příklad dat
```json
[
{
"deviceAlias": "test-povstani",
"receivedAt": "2023-06-27T14:39:58Z"
}
]
```
- frekvence stahování
- cron definice:
- cron.vehicle-positions.ropidpresets.collectAndSaveLogs
- rabin `0 */1 * * * *`
- prod `0 */1 * * * *`
- názvy rabbitmq front
- vehicle-positions.ropidpresets.collectAndSaveLogs se zprávou `{ "targetMinutes": n }`
## Zpracování dat / transformace
Všechny tabulky se nachází ve schématu `pid`
### TimetableWorker
#### task _CheckForNewData_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidgtfs.checkForNewData
- TTL: 19 minut
- parametry: `{ forceRefresh }`
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.ropidgtfs.downloadDatasets
- datové zdroje
- ROPID FTP
- transformace
- žádné
- data modely
- RopidGTFSMetadataModel `ropidgtfs_metadata`
#### task _DownloadDatasets_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidgtfs.downloadDatasets
- TTL: 59 minut
- parametry: `["PID_GTFS", "CIS_STOPS", "OIS_MAPPING", "RUN_NUMBERS"]`
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.ropidgtfs.transformAndSaveData
- název: vehicle-positions.ropidgtfs.checkSavedRowsAndReplaceTables
- datové zdroje
- ROPID FTP
- transformace
- žádné
- data modely
- RopidGTFSMetadataModel `ropidgtfs_metadata`
#### task _TransformAndSaveData_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidgtfs.transformAndSaveData
- TTL: 23 hodin
- parametry: `{ filepath, name, mtime, type, dataset }`
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- ROPID FTP
- transformace
- [RopidGTFSTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidGTFSTransformation.ts)
- [RopidGTFSCisStopsTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidGTFSCisStopsTransformation.ts)
- [RopidGTFSOisMappingTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidGTFSOisTransformation.ts)
- [RopidGTFSRunNumbersTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidGTFSRunNumbersTransformation.ts)
- [RopidGtfsRouteSubAgencyTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidGtfsRouteSubAgencyTransformation.ts)
- 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.
- rozšířené sloupce GTFS souborů (nestandardní rozšíření ROPID)
- `trips.txt` – sloupec `headsign_icons`: řetězec dvouznakových kódů ikon (např. `"MbSb"`), uložen do `ropidgtfs_trips.headsign_icons`
- `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`
- data modely
- RopidGTFSMetadataModel `ropidgtfs_metadata`
- RopidGTFSAgencyModel `ropidgtfs_agency`
- RopidGTFSCalendarModel `ropidgtfs_calendar`
- RopidGTFSCalendarDatesModel `ropidgtfs_calendar_dates`
- RopidGTFSRoutesModel `ropidgtfs_routes`
- RouteSubAgencyDto `ropidgtfs_route_sub_agencies`
- RopidGTFSShapesModel `ropidgtfs_shapes`
- RopidGTFSStopTimesModel `ropidgtfs_stop_times`
- RopidGTFSStopsModel `ropidgtfs_stops`
- RopidGTFSTripsModel `ropidgtfs_trips`
- RopidGTFSCisStopsModel `ropidgtfs_cis_stops`
- RopidGTFSCisStopGroupsModel `ropidgtfs_cis_stop_groups`
- RopidGTFSOisModel `ropidgtfs_ois`
- RopidGTFSRunNumbersModel `ropidgtfs_run_numbers`
#### task _CheckSavedRowsAndReplaceTables_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidgtfs.checkSavedRowsAndReplaceTables
- TTL: 23 hodin
- parametry: `["PID_GTFS", "CIS_STOPS", "OIS_MAPPING", "RUN_NUMBERS"]`
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.ropidgtfs.downloadDatasets
- název: vehicle-positions.ropidgtfs.refreshPrecomputedTables
- název: vehicle-positions.ropidgtfs.refreshPublicGtfsDepartureCache
- název: vehicle-positions.vehiclepositions.refreshGTFSTripData
- název: vehicle-positions.ropidgtfs.refreshGtfsStopsCache
- název: vehicle-positions.ropidgtfs.refreshGtfsTripStopsCache
- název: vehicle-positions.ropidgtfs.remapPresetsToGtfsStops
- datové zdroje
- ROPID FTP
- transformace
- žádné
- data modely
- RopidGTFSMetadataModel `ropidgtfs_metadata`
- RopidGTFSAgencyModel `ropidgtfs_agency`
- RopidGTFSCalendarModel `ropidgtfs_calendar`
- RopidGTFSCalendarDatesModel `ropidgtfs_calendar_dates`
- RouteSubAgencyDto `ropidgtfs_route_sub_agencies`
- RopidGTFSRoutesModel `ropidgtfs_routes`
- RopidGTFSShapesModel `ropidgtfs_shapes`
- RopidGTFSStopTimesModel `ropidgtfs_stop_times`
- RopidGTFSStopsModel `ropidgtfs_stops`
- RopidGTFSTripsModel `ropidgtfs_trips`
- RopidGTFSCisStopsModel `ropidgtfs_cis_stops`
- RopidGTFSCisStopGroupsModel `ropidgtfs_cis_stop_groups`
- RopidGTFSOisModel `ropidgtfs_ois`
- RopidGTFSRunNumbersModel `ropidgtfs_run_numbers`
- RopidGTFSPrecomputedServicesCalendarModel `ropidgtfs_precomputed_services_calendar`
- RopidGTFSPrecomputedMinMaxStopSequencesModel `ropidgtfs_precomputed_minmax_stop_sequences`
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
- RopidGTFSPrecomputedTripConnectionsModel `ropidgtfs_precomputed_trip_connections`
#### task _RefreshPrecomputedTables_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidgtfs.refreshPrecomputedTables
- TTL: 59 minut
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- ROPID FTP
- transformace
- žádné
- data modely
- RopidGTFSMetadataModel `ropidgtfs_metadata`
- RopidGTFSPrecomputedServicesCalendarModel `ropidgtfs_precomputed_services_calendar`
- RopidGTFSPrecomputedMinMaxStopSequencesModel `ropidgtfs_precomputed_minmax_stop_sequences`
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures`
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
- RopidGTFSPrecomputedTripConnectionsModel `ropidgtfs_precomputed_trip_connections`
#### task _RefreshPublicGtfsDepartureCacheTask_
Task se stará o aktualizaci cache pro public odjezdy. Pouští se pravidelně cronem a po dokončení načtení nových JŘ.
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidgtfs.refreshPublicGtfsDepartureCache
- TTL: 59 minut
- parametry: `{intervalFromHours, intervalToHours}`
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- ROPID FTP
- transformace
- [PublicDepartureCacheTransformation](../src/integration-engine/ropid-gtfs/transformations/PublicDepartureCacheTransformation.ts)
- 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`)
- 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`
- data modely
- RopidGTFSPrecomputedDeparturesModel `ropidgtfs_precomputed_departures` (obsahuje JOIN na `ropidgtfs_precomputed_trip_connections_tmp` přes `to_trip_id` a `to_stop_id`)
#### task _SaveStaticData_
Task se stará o aktualizaci statickych dat. Pouští se po dokončení načtení nových JŘ.
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidgtfs.saveStaticData
- TTL: 5 minut
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- Blob storage
- transformace
- [DeparturesDirectionTransformation](../src/integration-engine/ropid-gtfs/workers/timetables/tasks/transformations/DeparturesDirectionTransformation.ts)
- [MetroRailtrackDataTransformation](../src/integration-engine/ropid-gtfs/workers/timetables/tasks/transformations/MetroRailtrackDataTransformation.ts)
- `NotPublicVehicles` – data se ukládají přímo do cache klíče `config:notPublicVehicles` přes `NotPublicVehiclesRedisRepository` (žádná DB tabulka)
- data modely
- RopidDeparturesDirections `ropid_departures_directions`
- RopidGtfsMetroRailtrackGps `ropidgtfs_metro_railtrack_gps`
- Cache `config:notPublicVehicles` – JSON blob struktury `INotPublicVehicles`:
```json
{
"tram": { "registrationNumbers": ["string"] },
"road": { "registrationNumbers": ["string"] },
"routeIds": ["string"]
}
```
`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.
#### task _RemapPresetsToGtfsStopsTask_
Task přemapuje departure presety na aktuální GTFS zastávky a uloží výsledek do databáze. Pouští se automaticky po každém načtení nových GTFS dat.
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidgtfs.remapPresetsToGtfsStops
- TTL: 59 minut
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- žádné
- transformace
- žádné
- data modely
- RopidDeparturesPresetsModel `ropid_departures_presets`
- RopidDeparturesPresetsRopidGTFSStopsModel `ropid_departures_presets_ropidgtfs_stops`
#### task _EnsureCacheTask_
Task slouží jako ruční spouštěč obnovení všech cache. Nespouští se automaticky – pouze manuálním odesláním zprávy do fronty.
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidgtfs.ensureCache
- TTL: 5 minut
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositions.refreshGTFSTripData
- název: vehicle-positions.ropidgtfs.refreshPublicGtfsDepartureCache
- název: vehicle-positions.ropidgtfs.refreshGtfsStopsCache
- název: vehicle-positions.ropidgtfs.refreshGtfsTripStopsCache
- název: vehicle-positions.jis.refreshJISInfotextsCache
- datové zdroje
- žádné
- transformace
- žádné
- data modely
- žádné
### PresetWorker
#### _Task ~ SavePresetsDataTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidpresets.savePresets
- TTL: 5 minut
- tělo zprávy: obsahuje příchozí json presetů
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- IG /ropidgtfs/presets
- transformace
- [RopidDeparturesPresetsTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidDeparturesPresetsTransformation.ts)
- data modely
- RopidGTFSMetadataModel `ropidgtfs_metadata`,
- RopidDeparturesPresetsModel `ropid_departures_presets`
#### _task: CollectAndSaveLogsTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidpresets.collectAndSaveLogs
- TTL: 59 sekund
- parametry: `{ targetMinutes }`
- validační schéma: [LogCollectionSchema](../src/integration-engine/ropid-gtfs/workers/presets/schema/LogCollectionSchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.ropidpresets.processAndSendLogs
- datové zdroje
- Loki
- transformace
- [PresetLogTransformation](../src/integration-engine/ropid-gtfs/workers/presets/transformations/PresetLogTransformation.ts)
- data modely
- PresetLogModel `ropid_departures_preset_logs`
#### _task: ProcessAndSendLogsTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidpresets.processAndSendLogs
- TTL: 59 sekund
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- Loki
- transformace
- žádné
- data modely
- RopidDeparturesPresetsModel `ropid_departures_presets`
- PresetLogModel `ropid_departures_preset_logs`
#### _task: CheckForNewDeparturesPresetsTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidpresets.checkForNewDeparturesPresets
- TTL: 4 minuty
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.ropidpresets.downloadDeparturesPresets
- datové zdroje
- ROPID FTP
- transformace
- žádné
- data modely
- RopidGTFSMetadataModel `ropidgtfs_metadata`
#### _DownloadDeparturesPresetsTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidpresets.downloadDeparturesPresets
- TTL: 4 minuty
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- ROPID FTP
- transformace
- [RopidDeparturesPresetsTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-gtfs/transformations/RopidDeparturesPresetsTransformation.ts)
- data modely
- RopidGTFSMetadataModel `ropidgtfs_metadata`,
- RopidDeparturesPresetsModel `ropid_departures_presets`
### _RopidVYMIWorker_
Worker má na starost přípravu podkladových dat pro infotexty pro odjezdové tabule a GTFS real-time alerty
#### _task: CheckForNewEventsTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidvymi.checkForNewEvents
- TTL: 1 minuta
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.ropidvymi.fetchAndProcessEvents
- datové zdroje
- ROPID VYMI
- transformace
- žádné
- data modely
- RopidVYMIMetadataModel `ropidvymi_metadata`
#### _task: FetchAndProcessEventsTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.ropidvymi.fetchAndProcessEvents
- TTL: 1 minuta
- parametry: `{ digest, data }`
- validační schéma: [EventFetchOutputValidationSchema](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-vymi/workers/tasks/schema/EventFetchOutputValidationSchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- ROPID VYMI
- transformace
- [RopidVYMIEventsTransformation](https://gitlab.com/operator-ict/golemio/code/modules/pid/-/blob/development/src/integration-engine/ropid-vymi/RopidVYMIEventsTransformation.ts)
- data modely
- RopidVYMIMetadataModel `ropidvymi_metadata`
- RopidVYMIEventsModel `ropidvymi_events`
- RopidVYMIEventsRoutesModel `ropidvymi_events_routes`
- RopidVYMIEventsStopsModel `ropidvymi_events_stops`
### _VPWorker_
Worker má na starost zpracování a transformaci polohových dat, výpočet zpoždění a přípravu GTFS real-time výstupních dat
#### _task: SaveDataToDBTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.saveDataToDB
- TTL: 5 minut
- parametry: `{ $, zast }`
- validační schéma: [SaveDataToDBSchema](../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/SaveDataToDBSchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositions.updateGTFSTripId
- datové zdroje
- MPVNET
- transformace
- [PositionsTransformation](../src/integration-engine//vehicle-positions//workers//vehicle-positions/transformations/PositionsTransformation.ts)
- data modely
- VPTripsModel `vehiclepositions_trips`
- CisStopModel `vehiclepositions_cis_stops`
#### _task: UpdateGtfsTripIdTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.updateGTFSTripId
- TTL: 5 minut
- parametry: `{ trips, positions }`
- validační schéma: [UpdateGtfsTripIdSchema](../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateGtfsTripIdSchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositions.updateDelay
- datové zdroje
- MPVNET
- transformace
- žádné
- data modely
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
- VPPositionsModel `vehiclepositions_positions`
#### _task: RefreshGtfsTripDataTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.refreshGTFSTripData
- TTL: 10 minut
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- ROPID FTP
- transformace
- žádné
- data modely
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
- VPTripsModel `vehiclepositions_trips`
- VPTripWithLastPositionModel `v_vehiclepositions_all_trips_with_last_position`
#### _task: UpdateRunsGtfsTripIdTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.updateRunsGTFSTripId
- TTL: 5 minut
- parametry: `{ run, run_message, isNotPublic?, notPublicVehicleRouteType? }`
- `run` - běh vozidla (ICommonRunsModel s volitelným notPublicVehicleRouteType)
- `run_message` - zpráva o pozici vozidla
- `isNotPublic` - volitelný příznak, zda se jedná o neveřejné vozidlo (např. náhradní autobus)
- `notPublicVehicleRouteType` - volitelný typ vozidla (0=tram, 3=bus) pro správné mapování typu u ad-hoc vozidel
- validační schéma: [UpdateRunsGtfsTripIdSchema](../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateRunsGtfsTripIdSchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositions.updateDelay
- datové zdroje
- CHAPS TCP
- transformace
- oběh a nalezené GTFS scheduled trips se transformují na trips [TripsMapper.mapCommonRunToDto](../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/TripsMapper.ts) a pozice [PositionsMapper.mapCommonRunToDto](../src/integration-engine/vehicle-positions/workers/vehicle-positions/data-access/helpers/PositionsMapper.ts) pro frontu `vehiclepositions.updateDelay`
- data modely
- RopidGTFSPrecomputedTripScheduleModel `ropidgtfs_precomputed_trip_schedule`
- VPTripsModel `vehiclepositions_trips`
- VPPositionsModel `vehiclepositions_positions`
#### _task: UpdateDelayTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.updateDelay
- TTL: 50 sekund (včetně zpracování v předchozích frontách)
- parametry: `{ updatedTrips, positions, schedule }`
- validační schéma: [UpdateDelaySchema](../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateDelaySchema.ts)
- očekává parametrech zprávy `timestamp` s časovou značkou z první fronty, která obdržela nová data např. saveDataToDB
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositions.propagateDelay
- datové zdroje
- MPVNET, CHAPS TCP
- transformace
- determinace pozic tripů v rámci jednoho GTFS block id (platí pouze pro některé vlakové linky)
- [PositionsManager.computePositions](../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/PositionsManager.ts#L32): obohacení pozicových dat, aproximace pozice, dopočet zpoždění
- data modely
- VPTripsModel `vehiclepositions_trips`
- VPPositionsModel `vehiclepositions_positions`
#### _task: ProcessRegionalBusPositionsTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.processRegionalBusPositions
- TTL: 3 minuty
- parametry: `{ updatedTrips }`
- validační schéma: [UpdateDelaySchema](../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/UpdateDelaySchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositions.propagateDelay
- datové zdroje
- TELMAX TCP
- transformace
- [RegionalBusPositionsManager.computePositions](../src/integration-engine/vehicle-positions/workers/vehicle-positions/helpers/regional-bus/RegionalBusPositionsManager.ts): obohacení pozicových dat, aproximace pozice, dopočet zpoždění
- data modely
- VPTripsModel `vehiclepositions_trips`
- VPPositionsModel `vehiclepositions_positions`
#### _task: PropagateDelayTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.propagateDelay
- TTL: 5 minut
- parametry: `{ processedPositions, trips }`
- validační schéma: [PropagateDelaySchema](../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/PropagateDelaySchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- vehicle-positions.vehiclepositions.propagateTrainDelay
- datové zdroje
- MPVNET, CHAPS TCP, TELMAX TCP
- transformace
- [mapDelayedPositionsToRunTrips](../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.ts#L447): transformace výstupních pozic z updateDelay na oběhy
- [propagateDelayForGtfsTrip](../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateDelayTask.ts#L474): přepočet zpoždění u spojů se zpožděním před tratí
- VPPositionsModel `vehiclepositions_positions`
#### _task: PropagateTrainDelayTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.propagateTrainDelay
- TTL: 5 minut
- validační schéma: [PropagateDelaySchema](../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/PropagateTrainDelaySchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- MPVNET
- popis
- propaguje zpoždění pro následující blokové spoje
#### _task: DataRetentionTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.dataRetention
- TTL: 10 minut
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- žádné
- datové zdroje
- MPVNET, CHAPS TCP
- transformace
- žádné
- data modely
- VPPositionsModel `vehiclepositions_positions`
- VPPositionsHistoryModel `vehiclepositions_positions_history`
- VPTripsModel `vehiclepositions_trips`
- VPTripsHistoryModel `vehiclepositions_trips_history`
- CisStopModel `vehiclepositions_cis_stops`
#### _task: RefreshPublicTripCacheTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.refreshPublicTripCache
- TTL: 10s
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- `vehicle-positions.vehiclepositions.refreshPublicTripCache` task se spouští sám sebe a cron plní doplňující funkci.
- popis
- před samotným spuštěním se zkontroluje pomocí semaforu zdali task již někde neběží
- připraví zjednodušené informace o aktuálních pozicích, které se odešlou do redisu
- pomocí pub/sub se pak pošle do og informace o novém setu v redisu
- data modely
- VPPositionsModel `vehiclepositions_positions`
- VPTripsModel `vehiclepositions_trips`
#### _task: RefreshPublicStopTimeCacheTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositions.refreshPublicStopTimeCache
- TTL: 10s
- parametry: žádné
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- `vehicle-positions.vehiclepositions.refreshPublicStopTimeCache` task se spouští sám sebe a cron plní doplňující funkci.
- popis
- před samotným spuštěním se zkontroluje pomocí semaforu zdali task již někde neběží
- připraví informace o historických a predikovaných zpožděních aktivních spojů, které se odešlou do redisu
- data modely
- VPPositionsModel `vehiclepositions_positions`
- VPTripsModel `vehiclepositions_trips`
- DescriptorModel `vehiclepositions_vehicle_descriptors`
- GtfsShapesModel `ropidgtfs_shapes`
- PublicStopTimeModel `v_public_vehiclepositions_combined_stop_times`
### _RunsWorker_
Worker má na starost zpracování a transformaci TCP oběhů
#### _task: SaveTramRunsToDBTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositionsruns.saveTramRunsToDB
- TTL: 3 minuty
- parametry: `{ M: V: $[] }`
- validační schéma: [CommonRunsSchema](../src/integration-engine/vehicle-positions/workers/runs/schema/CommonRunsSchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositions.updateRunsGTFSTripId
- datové zdroje
- CHAPS TCP
- transformace
- [CommonRunsMessagesTransformation](../src/integration-engine/vehicle-positions/workers/runs/transformations/CommonRunsMessagesTransformation.ts)
- data modely
- CommonRunsModel `vehiclepositions_runs`
- CommonRunsMessagesModel `vehiclepositions_runs_messages`
#### _task: SaveBusRunsToDBTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositionsruns.saveBusRunsToDB
- TTL: 2 minuty
- parametry: `{ M: V: $[] }`
- validační schéma: [CommonRunsSchema](../src/integration-engine/vehicle-positions/workers/runs/schema/CommonRunsSchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositions.updateRunsGTFSTripId
- datové zdroje
- CHAPS TCP
- transformace
- [CommonRunsMessagesTransformation](../src/integration-engine/vehicle-positions/workers/runs/transformations/CommonRunsMessagesTransformation.ts)
- data modely
- CommonRunsModel `vehiclepositions_runs`
- CommonRunsMessagesModel `vehiclepositions_runs_messages`
#### _task: SaveMetroRunsToDBTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositionsruns.saveMetroRunsToDB
- TTL: 3 minuty
- parametry: `{ m: { $, vlak } }`
- validační schéma: [MetroRunsSchema](../src/integration-engine/vehicle-positions/workers/runs/schema/MetroRunsSchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositionsruns.processMetroRunMessages
- datové zdroje
- CHAPS TCP
- transformace
- [MetroRunsMessagesTransformation](../src/integration-engine/vehicle-positions/workers/runs/transformations/MetroRunsMessagesTransformation.ts)
- data modely
- MetroRunsMessagesModel `vehiclepositions_metro_runs_messages`
#### _task: ProcessMetroRunsMessagesTask_
- vstupní rabbitmq fronta
- název: vehicle-positions.vehiclepositionsruns.processMetroRunMessages
- TTL: 10 minut
- parametry: `{ routeName, messages }`
- validační schéma: [MetroTransformedRunsSchema](../src/integration-engine/vehicle-positions/workers/runs/tasks/schema/MetroTransformedRunsSchema.ts)
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
- název: vehicle-positions.vehiclepositions.updateDelay
- datové zdroje
- CHAPS TCP
- transformace
- [MetroRunsMessageProcessingTransformation](../src/integration-engine/vehicle-positions/workers/runs/tasks/transformations/MetroRunsMessageProcessingTransformation.ts), dále se oběhy a nalezené GTFS scheduled trips transformují na trips [TripsMapper.map