@golemio/pid 3.13.1 → 3.13.2-dev.1803100353
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/dist/helpers/RedisJsonParser.d.ts +21 -0
- package/dist/helpers/RedisJsonParser.js +57 -0
- package/dist/helpers/RedisJsonParser.js.map +1 -0
- package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js +0 -1
- package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js.map +1 -1
- package/dist/integration-engine/jis/ioc/Di.js +2 -0
- package/dist/integration-engine/jis/ioc/Di.js.map +1 -1
- package/dist/integration-engine/jis/ioc/JISContainerToken.d.ts +1 -0
- package/dist/integration-engine/jis/ioc/JISContainerToken.js +1 -0
- package/dist/integration-engine/jis/ioc/JISContainerToken.js.map +1 -1
- package/dist/integration-engine/jis/repositories/JISEventsRepository.d.ts +9 -1
- package/dist/integration-engine/jis/repositories/JISEventsRepository.js +33 -2
- package/dist/integration-engine/jis/repositories/JISEventsRepository.js.map +1 -1
- package/dist/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.d.ts +14 -0
- package/dist/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.js +63 -0
- package/dist/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RopidGTFSRoutesRepository.d.ts +12 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RopidGTFSRoutesRepository.js +39 -0
- package/dist/integration-engine/ropid-gtfs/data-access/RopidGTFSRoutesRepository.js.map +1 -0
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.d.ts +2 -0
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js +48 -1
- package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/ioc/Di.js +15 -13
- package/dist/integration-engine/ropid-gtfs/ioc/Di.js.map +1 -1
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.d.ts +1 -0
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js +1 -0
- package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/ioc/Di.js +1 -1
- package/dist/integration-engine/vehicle-positions/ioc/Di.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertsGenerator.d.ts +7 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertsGenerator.js +14 -4
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertsGenerator.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js +10 -6
- package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces.d.ts +3 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js +2 -3
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js +2 -3
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js.map +1 -1
- package/dist/output-gateway/public/data-access/redis/DelayComputationRepository.d.ts +1 -1
- package/dist/output-gateway/public/data-access/redis/DelayComputationRepository.js +10 -14
- package/dist/output-gateway/public/data-access/redis/DelayComputationRepository.js.map +1 -1
- package/dist/output-gateway/public/domain/repository/IDelayComputationRepository.d.ts +1 -1
- package/dist/output-gateway/public/service/helpers/trip-scope/strategy/ShapesTripScopeHandler.js +1 -1
- package/dist/output-gateway/public/service/helpers/trip-scope/strategy/ShapesTripScopeHandler.js.map +1 -1
- package/dist/output-gateway/public/service/helpers/trip-scope/strategy/StopTimesTripScopeHandler.js +1 -1
- package/dist/output-gateway/public/service/helpers/trip-scope/strategy/StopTimesTripScopeHandler.js.map +1 -1
- package/docs/cache/index.md +5 -0
- package/docs/cache/types/in_memory.md +58 -0
- package/docs/cache/types/psql.md +76 -0
- package/docs/cache/types/redis.md +314 -0
- package/docs/processing/index.md +17 -0
- package/docs/processing/input_realtime_data/http_mpvnet.md +153 -0
- package/docs/processing/input_realtime_data/tcp_dpp_bus.md +27 -0
- package/docs/processing/input_realtime_data/tcp_dpp_metro.md +24 -0
- package/docs/processing/input_realtime_data/tcp_dpp_tram.md +26 -0
- package/docs/processing/input_realtime_data/tcp_telmax_arriva_city.md +44 -0
- package/docs/processing/state_position_tracking/http_mpvnet.md +55 -0
- package/docs/{state_position_tracking/tcp_common.md → processing/state_position_tracking/tcp_dpp_common.md} +2 -14
- package/docs/{state_position_tracking/tcp_metro.md → processing/state_position_tracking/tcp_dpp_metro.md} +2 -9
- package/docs/processing/state_position_tracking/tcp_telmax_arriva_city.md +7 -0
- package/docs/processing/vehicle_types.md +32 -0
- package/package.json +3 -3
- package/docs/state_position_tracking/http.md +0 -113
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# TCP Telmax Arriva City + Arriva City Neratovice
|
|
2
|
+
|
|
3
|
+
```xml
|
|
4
|
+
<M>
|
|
5
|
+
|
|
6
|
+
<V imei="860425047186836" rz="5SB8545" pkt="573" lat="50.0451" lng="14.44866" tm="2025-03-30T18:07:09" events="Z" rych="13" smer="49" />
|
|
7
|
+
|
|
8
|
+
<V imei="862430061982423" rz="6SN8270" pkt="5527" lat="50.10773" lng="14.60353" tm="2025-03-30T18:07:11" events="P" line="100204" conn="4032" rych="0" smer="320" evc="9018" turnus="204716" ridic="200602" akt="55207" konc="55250" />
|
|
9
|
+
|
|
10
|
+
<V imei="867377023798816" rz="6SU3222" pkt="2837" lat="49.95867" lng="14.8828" tm="2025-03-30T18:07:09" events="Z" rych="39" smer="350" />
|
|
11
|
+
|
|
12
|
+
<V imei="867377023795952" rz="9U89136" pkt="1002" lat="49.86153" lng="14.58563" tm="2025-03-30T18:07:13" events="L" rych="48" smer="193" />
|
|
13
|
+
|
|
14
|
+
<V imei="867377023798816" rz="6SU3222" pkt="2838" lat="49.95876" lng="14.88278" tm="2025-03-30T18:07:10" events="Z" rych="39" smer="351" />
|
|
15
|
+
|
|
16
|
+
<V imei="867377023797230" rz="9U89064" pkt="939" lat="50.038" lng="14.45776" tm="2025-03-30T18:07:12" events="R" rych="11" smer="40" />
|
|
17
|
+
|
|
18
|
+
<V imei="867377023812609" rz="6AB1843" pkt="5024" lat="50.12651" lng="14.51493" tm="2025-03-30T18:07:11" events="T" rych="0" smer="347" />
|
|
19
|
+
|
|
20
|
+
<V imei="868711063963758" rz="6SU2942" pkt="4016" lat="50.07414" lng="14.56016" tm="2025-03-30T18:07:11" events="RZ" rych="13" smer="244" />
|
|
21
|
+
|
|
22
|
+
<V imei="867377023797214" rz="6AJ8958" pkt="4597" lat="50.09357" lng="14.49805" tm="2025-03-30T18:07:15" events="A" rych="15" smer="294" />
|
|
23
|
+
|
|
24
|
+
<V imei="867377023820230" rz="4AV4134" pkt="3974" lat="50.08041" lng="14.48195" tm="2025-03-30T18:07:11" events="L" rych="30" smer="78" />
|
|
25
|
+
|
|
26
|
+
</M>
|
|
27
|
+
```
|
|
28
|
+
- **imei** - identifikátor palubního počítače/vozidla, u nás `external_trip_id`
|
|
29
|
+
- **rz** - SPZ, nepoužíváme
|
|
30
|
+
- **pkt** - identifikátor zprávy z vozidla/číslo TCP packetu??? Nepoužíváme
|
|
31
|
+
- **lat** - zeměpisná šířka
|
|
32
|
+
- **lng** - zeměpisná délka
|
|
33
|
+
- **tm** - timestamp odeslání právy z vozidla
|
|
34
|
+
- **events** - událost asociovaná se zprávou
|
|
35
|
+
- **R** - výjezd ze zastávky
|
|
36
|
+
- **line** - označení linky podle CIS
|
|
37
|
+
- **conn** - označení spoje podle CIS
|
|
38
|
+
- **rych** - rychlost vozidla
|
|
39
|
+
- **smer** - azimut
|
|
40
|
+
- **evc** - [Evidenční číslo vozidla](https://cs.wikipedia.org/wiki/Eviden%C4%8Dn%C3%AD_%C4%8D%C3%ADslo_vozidla)
|
|
41
|
+
- **turnus** - jiný formát než DPP???, nepoužíváme
|
|
42
|
+
- **ridic** - ??? nepoužíváme
|
|
43
|
+
- **akt** - aktuální zastávka , nepoužíváme
|
|
44
|
+
- **konc** - poslední zastávka, nepoužíváme
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# HTTP MPVNet state_position
|
|
2
|
+
|
|
3
|
+
- Batch data chodí na VP-IG (vyšší jednotky MB během špičky)
|
|
4
|
+
- Formát vstupních dat viz [input_realtime_data/http_mpvnet.md](../input_realtime_data/http_mpvnet.md)
|
|
5
|
+
- (HTTP) Input Gateway
|
|
6
|
+
- Raw data se uloží na blob storage
|
|
7
|
+
- knihovnou `xml2js` se transformují na JSON
|
|
8
|
+
- validují se vůči JSON schématu a pošlou na Rabbita do fronty `saveDataToDB`
|
|
9
|
+
- saveDataToDB
|
|
10
|
+
- data se napasují na struktury tabulek `vehiclepositions_trips` a `vehiclepositions_positions` (stav je `unknown`, `tracking` se bere ze vstupních dat)
|
|
11
|
+
- všechny spoje se upsertují, nové spoje a jejich pozice se pošlou do fronty `updateGTFSTripId`, existující do `updateDelay`
|
|
12
|
+
- updateGTFSTripId
|
|
13
|
+
- duplikace vlakových spojů a pozic podle block id (určení tracking podle cis stop id)
|
|
14
|
+
- obohacení spojů GTFS daty (včetně oběhu a kmenové linky)
|
|
15
|
+
- upsert asociovaných pozic
|
|
16
|
+
- spoje se pošlou do fronty `updateDelay`
|
|
17
|
+
- updateDelay
|
|
18
|
+
- opět duplikace vlakových spojů, upsert asociovaných pozic
|
|
19
|
+
- opětovné načtení asociovaných pozic z DB
|
|
20
|
+
- určení trasy spoje podle GTFS shapes a stop times
|
|
21
|
+
- processing pozic, uložení do databáze
|
|
22
|
+
- Not tracking (`tracking` je `0` a nebo nepřišly souřadnice)
|
|
23
|
+
- pokud je poslední pozice neznámá, nebo je známá a ve stavu `on_track` nebo `at_stop`, je aktuální stav `before_track`
|
|
24
|
+
- pokud je poslední známá pozice s `tracking 2`
|
|
25
|
+
- pokud je pozice duplicitní (existuje pozice se stejným `origin_timestamp`), stav je `duplicate`
|
|
26
|
+
- jinak je stav `after_track`
|
|
27
|
+
- Tracking (`tracking` je `2`, souřadnice jsou známy)
|
|
28
|
+
- pokud je vozidlo 200 metrů od nejblizšího bodu (anchor points) na trase, stav je `off_track`
|
|
29
|
+
- pokud je nejbližší bod v zastávce, nastaví se stav na `at_stop`
|
|
30
|
+
- jinak je stav `on_track`
|
|
31
|
+
- Zrušený spoj (příznak `canceled` u pozice)
|
|
32
|
+
- stav je vždy `canceled`
|
|
33
|
+
- propagateDelay
|
|
34
|
+
- podle kmenové linky a oběhu vyhledáme navazující spoje
|
|
35
|
+
- podle GTFS trip id a registračního čísla poslední pozici ve stavu `before_track`
|
|
36
|
+
- přepsání stavu na `before_track_delayed`
|
|
37
|
+
|
|
38
|
+
```mermaid
|
|
39
|
+
flowchart TB;
|
|
40
|
+
A[HTTP data]-->B[VP HTTP Input Gateway]--raw data-->Blob[Azure Blob Storage];
|
|
41
|
+
B--JSON xml2js-->C[AMQP saveDataToDB]--upsert-->trips[(DB trips)];
|
|
42
|
+
C--nové spoje bez GTFS dat-->D[AMQP updateGTFSTripId];
|
|
43
|
+
C--existující spoje-->E[AMQP updateDelay];
|
|
44
|
+
D--upsert-->trips;
|
|
45
|
+
D--upsert-->positions[(DB positions)];
|
|
46
|
+
D--nové spoje s GTFS daty-->E;
|
|
47
|
+
E--upsert-->trips;
|
|
48
|
+
E--upsert-->positions;
|
|
49
|
+
E--select-->trips;
|
|
50
|
+
E--select-->positions;
|
|
51
|
+
E--uložené spoje-->F[AMQP propagateDelay];
|
|
52
|
+
F--select-->trips;
|
|
53
|
+
F--select-->positions;
|
|
54
|
+
F--upsert-->positions;
|
|
55
|
+
```
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
# TCP common state_position
|
|
1
|
+
# TCP DPP common state_position
|
|
2
2
|
|
|
3
3
|
- Data chodí na TCP-IG
|
|
4
|
-
|
|
5
|
-
```xml
|
|
6
|
-
<M>
|
|
7
|
-
<V turnus="17/3" line="17" evc="9168" np="ano" lat="50.05440" lng="14.41812" akt="03030001" takt="2022-08-02T21:56:22" konc="26200002" tjr="2022-08-02T21:56:00" pkt="1885317" tm="2022-08-02T21:56:22" events="O" />
|
|
8
|
-
</M>
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
```xml
|
|
12
|
-
<M>
|
|
13
|
-
<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" />
|
|
14
|
-
</M>
|
|
15
|
-
```
|
|
16
|
-
|
|
4
|
+
- Formát vstupních dat viz [input_realtime_data/http_mpvnet.md](../input_realtime_data/tcp_dpp_bus.md) a [input_realtime_data/tcp_dpp_tram.md](../input_realtime_data/tcp_dpp_tram.md)
|
|
17
5
|
- Transport (TCP) Input Gateway
|
|
18
6
|
- Raw data se uloží na blob storage (1MB buffer)
|
|
19
7
|
- knihovnou `xml2js` transformují na JSON
|
|
@@ -1,14 +1,7 @@
|
|
|
1
|
-
# TCP metro state_position
|
|
1
|
+
# TCP DPP metro state_position
|
|
2
2
|
|
|
3
3
|
- Data chodí na TCP-IG
|
|
4
|
-
|
|
5
|
-
```xml
|
|
6
|
-
<m linka="A" tm="2022-07-20T13:45:34Z" gvd="GD20a">
|
|
7
|
-
<vlak csp=" 3" csr=" 3" cv="279" ko="1809" odch="25" />
|
|
8
|
-
<!--...-->
|
|
9
|
-
</m>
|
|
10
|
-
```
|
|
11
|
-
|
|
4
|
+
- Formát vstupních dat viz [input_realtime_data/tcp_dpp_metro.md](../input_realtime_data/tcp_dpp_metro.md)
|
|
12
5
|
- Transport (TCP) Input Gateway
|
|
13
6
|
- Raw data se uloží na blob storage (1MB buffer)
|
|
14
7
|
- knihovnou `xml2js` transformují na JSON
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# TCP Telmax Arriva City state_position
|
|
2
|
+
|
|
3
|
+
- Data chodí na TCP-IG
|
|
4
|
+
- Data využíváme pouze na rabínovi, na produkci bereme z MPVNetu
|
|
5
|
+
- Formát vstupních dat viz [input_realtime_data/tcp_telmax_arriva_city.md](../input_realtime_data/tcp_telmax_arriva_city.md)
|
|
6
|
+
- Transport (TCP) Input Gateway
|
|
7
|
+
- TODO doplnit
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Mapování MPVNet vehicle type na GTFS
|
|
2
|
+
|
|
3
|
+
## Typ vozidel podle MPV
|
|
4
|
+
- 0 - neznámý nebo vlak
|
|
5
|
+
- 1 - metro
|
|
6
|
+
- 2 - tramvaj
|
|
7
|
+
- 3 - autobus MHD
|
|
8
|
+
- 4 - příměstský autobus
|
|
9
|
+
- 5 - noční autobus
|
|
10
|
+
- 6 - noční tramvaj
|
|
11
|
+
- 7 - náhradní doprava
|
|
12
|
+
- 8 - lanovka
|
|
13
|
+
- 9 - školní spoj
|
|
14
|
+
- 10 - spoj pro lidi s hendikepem
|
|
15
|
+
- 11 - smluvní spoj
|
|
16
|
+
- 12 - loď
|
|
17
|
+
- 13 - vlak
|
|
18
|
+
- 14 - náhradní autobus za vlak
|
|
19
|
+
- 15 - náhradní tramvaj
|
|
20
|
+
- 16 - noční příměstský autobus
|
|
21
|
+
- 17 - ostatní
|
|
22
|
+
- 18 - trolejbus
|
|
23
|
+
|
|
24
|
+
## Typ vozidel podle GTFS
|
|
25
|
+
- 0 - tramvaj, podle MPV 2, 6, 15
|
|
26
|
+
- 1 - metro, podle MPV 1
|
|
27
|
+
- 2 - vlak, podle MPV 0 a 13
|
|
28
|
+
- 3 - autobus, podle MPV 3, 4, 5, 7, 16
|
|
29
|
+
- 4 - loď, podle MPV 12
|
|
30
|
+
- 7 - lanovka, podle MPV 8
|
|
31
|
+
- 11 - trolejbus, podle MPV 18
|
|
32
|
+
- 1700 - smíšený nebo neznámý, nemapujeme z MPV
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/pid",
|
|
3
|
-
"version": "3.13.
|
|
3
|
+
"version": "3.13.2-dev.1803100353",
|
|
4
4
|
"description": "Golemio PID Module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"@golemio/core": ">=1.16.0-rc.1551191551"
|
|
77
77
|
},
|
|
78
78
|
"dependencies": {
|
|
79
|
-
"@golemio/ovapi-gtfs-realtime-bindings": "1.2.
|
|
79
|
+
"@golemio/ovapi-gtfs-realtime-bindings": "1.2.4-dev.1288219308",
|
|
80
80
|
"@turf/turf": "^6.5.0",
|
|
81
81
|
"cheap-ruler": "^3.0.2",
|
|
82
82
|
"csv-parser": "^3.0.0",
|
|
@@ -84,4 +84,4 @@
|
|
|
84
84
|
"html-entities": "^2.3.3",
|
|
85
85
|
"pg-copy-streams": "^5.1.1"
|
|
86
86
|
}
|
|
87
|
-
}
|
|
87
|
+
}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
# HTTP state_position
|
|
2
|
-
|
|
3
|
-
- Batch data chodí na VP-IG (několik MB)
|
|
4
|
-
|
|
5
|
-
```xml
|
|
6
|
-
<?xml version="1.0" encoding="utf-8"?>
|
|
7
|
-
<m disp="http://77.93.194.81:8716/api">
|
|
8
|
-
<spoj ka="2" kb="0" den="2023-03-21" lin="100115" alias="115" spoj="1061" dopr="ČSAD POLKOST"
|
|
9
|
-
doprSkut="ČSAD POLKOST" kmenl="115" t="3" tcis="A" np="true" po="39" vuzevc="1861"
|
|
10
|
-
skol="false" posl="false" sled="0" lat="50.0307" lng="14.49185" cpoz="10:00:04" azimut="337"
|
|
11
|
-
rychl="26">
|
|
12
|
-
<zast stan="B" odj="10:30" zast="56714" asw="520091" zpoz_typ_odj="2" zpoz_odj="0" />
|
|
13
|
-
<zast stan="B" odj="10:32" zast="56794" asw="11310002" zpoz_typ_odj="2" zpoz_odj="0" />
|
|
14
|
-
<zast stan="A" odj="10:34" zast="59066" asw="13410001" zpoz_typ_odj="2" zpoz_odj="0" />
|
|
15
|
-
<zast stan="A" odj="10:36" zast="67975" asw="11320001" zpoz_typ_odj="2" zpoz_odj="0" />
|
|
16
|
-
<zast stan="B" odj="10:37" zast="58953" asw="13340002" zpoz_typ_odj="2" zpoz_odj="0" />
|
|
17
|
-
<zast stan="A" odj="10:40" zast="58789" asw="1810001" zpoz_typ_odj="2" zpoz_odj="0" />
|
|
18
|
-
<zast stan="A" odj="10:41" zast="56794" asw="11310001" />
|
|
19
|
-
<zast stan="F" prij="10:43" zast="56714" asw="520002" />
|
|
20
|
-
</spoj>
|
|
21
|
-
<spoj ka="2" kb="0" den="2023-03-21" lin="100117" alias="117" spoj="1016" dopr="ABOUT ME"
|
|
22
|
-
doprSkut="ABOUT ME" kmenl="117" t="3" tcis="A" np="true" po="6" vuzevc="1950" skol="false"
|
|
23
|
-
posl="false" sled="0" lat="50.04645" lng="14.46061" cpoz="09:59:56" azimut="165" rychl="0"
|
|
24
|
-
zast="57408" asw="500006" zpoz_prij="14">
|
|
25
|
-
<zast stan="B" odj="08:55" zast="66826" asw="32360002" zpoz_typ_odj="3" zpoz_odj="35" />
|
|
26
|
-
<zast stan="B" odj="08:55" zast="67375" asw="9910002" zpoz_typ_odj="3" zpoz_odj="81" />
|
|
27
|
-
<zast stan="C" odj="08:56" zast="55206" asw="2800053" zpoz_typ_odj="3" zpoz_odj="119" />
|
|
28
|
-
<zast stan="B" odj="08:58" zast="55181" asw="620002" zpoz_typ_odj="3" zpoz_odj="113" />
|
|
29
|
-
<zast stan="H8" odj="08:59" zast="51228" asw="10060052" zpoz_typ_odj="3" zpoz_odj="121" />
|
|
30
|
-
<zast stan="A" odj="09:00" zast="67477" asw="26020001" zpoz_typ_odj="3" zpoz_odj="85" />
|
|
31
|
-
<zast stan="E" odj="09:02" zast="51227" asw="9290005" zpoz_typ_odj="3" zpoz_odj="68" />
|
|
32
|
-
<zast stan="A" odj="09:03" zast="51226" asw="9390001" zpoz_typ_odj="3" zpoz_odj="91" />
|
|
33
|
-
<zast stan="A" odj="09:05" zast="55233" asw="11580001" zpoz_typ_odj="3" zpoz_odj="81" />
|
|
34
|
-
<zast stan="D" odj="09:07" zast="43729" asw="760051" zpoz_typ_odj="3" zpoz_odj="2" />
|
|
35
|
-
<zast stan="A" odj="09:08" zast="55214" asw="170001" zpoz_typ_odj="3" zpoz_odj="31" />
|
|
36
|
-
<zast stan="A" odj="09:09" zast="55183" asw="7270001" zpoz_typ_odj="3" zpoz_odj="36" />
|
|
37
|
-
<zast stan="A" odj="09:11" zast="55257" asw="7720001" zpoz_typ_odj="3" zpoz_odj="-9" />
|
|
38
|
-
<zast stan="A" odj="09:12" zast="55220" asw="9950001" zpoz_typ_odj="3" zpoz_odj="-15" />
|
|
39
|
-
<zast stan="B" odj="09:13" zast="55188" asw="9270002" zpoz_typ_odj="3" zpoz_odj="-2" />
|
|
40
|
-
<zast stan="B" odj="09:15" zast="58807" asw="6250002" zpoz_typ_odj="3" zpoz_odj="-20" />
|
|
41
|
-
<zast stan="B" odj="09:16" zast="58781" asw="4460002" zpoz_typ_odj="3" zpoz_odj="-5" />
|
|
42
|
-
<zast stan="B" odj="09:17" zast="58863" asw="6580002" zpoz_typ_odj="3" zpoz_odj="1" />
|
|
43
|
-
<zast stan="D" odj="09:18" zast="58863" asw="6580004" zpoz_typ_odj="3" zpoz_odj="-9" />
|
|
44
|
-
<zast stan="A" odj="09:19" zast="59095" asw="3280001" zpoz_typ_odj="3" zpoz_odj="-24" />
|
|
45
|
-
<zast stan="A" odj="09:20" zast="58972" asw="600001" zpoz_typ_odj="3" zpoz_odj="-8" />
|
|
46
|
-
<zast stan="B" odj="09:21" zast="58836" asw="4940002" zpoz_typ_odj="3" zpoz_odj="-11" />
|
|
47
|
-
<zast stan="B" odj="09:22" zast="58976" asw="8570002" zpoz_typ_odj="3" zpoz_odj="22" />
|
|
48
|
-
<zast stan="D" odj="09:24" zast="58837" asw="4970004" zpoz_typ_odj="3" zpoz_odj="-4" />
|
|
49
|
-
<zast stan="A" odj="09:25" zast="58869" asw="7220001" zpoz_typ_odj="3" zpoz_odj="-3" />
|
|
50
|
-
<zast stan="B" odj="09:27" zast="47119" asw="8930002" zpoz_typ_odj="3" zpoz_odj="-28" />
|
|
51
|
-
<zast stan="H" odj="09:29" zast="27948" asw="4880008" zpoz_typ_odj="3" zpoz_odj="-56" />
|
|
52
|
-
<zast stan="A" odj="09:32" zast="57400" asw="4410001" zpoz_typ_odj="3" zpoz_odj="-38" />
|
|
53
|
-
<zast stan="B" odj="09:33" zast="57401" asw="10480002" zpoz_typ_odj="3" zpoz_odj="-7" />
|
|
54
|
-
<zast stan="B" odj="09:34" zast="59152" asw="9370002" zpoz_typ_odj="3" zpoz_odj="-11" />
|
|
55
|
-
<zast stan="B" odj="09:35" zast="59258" asw="9380002" zpoz_typ_odj="3" zpoz_odj="-6" />
|
|
56
|
-
<zast stan="B" odj="09:37" zast="58814" asw="3430002" zpoz_typ_odj="3" zpoz_odj="48" />
|
|
57
|
-
<zast stan="L" prij="09:39" zast="57408" asw="500006" zpoz_typ_prij="3" zpoz_prij="14" />
|
|
58
|
-
</spoj>
|
|
59
|
-
<!--...-->
|
|
60
|
-
</m>
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
- (HTTP) Input Gateway
|
|
64
|
-
- Raw data se uloží na blob storage
|
|
65
|
-
- knihovnou `xml2js` se transformují na JSON
|
|
66
|
-
- validují se vůči JSON schématu a pošlou na Rabbita do fronty `saveDataToDB`
|
|
67
|
-
- saveDataToDB
|
|
68
|
-
- data se napasují na struktury tabulek `vehiclepositions_trips` a `vehiclepositions_positions` (stav je `unknown`, `tracking` se bere ze vstupních dat)
|
|
69
|
-
- všechny spoje se upsertují, nové spoje a jejich pozice se pošlou do fronty `updateGTFSTripId`, existující do `updateDelay`
|
|
70
|
-
- updateGTFSTripId
|
|
71
|
-
- duplikace vlakových spojů a pozic podle block id (určení tracking podle cis stop id)
|
|
72
|
-
- obohacení spojů GTFS daty (včetně oběhu a kmenové linky)
|
|
73
|
-
- upsert asociovaných pozic
|
|
74
|
-
- spoje se pošlou do fronty `updateDelay`
|
|
75
|
-
- updateDelay
|
|
76
|
-
- opět duplikace vlakových spojů, upsert asociovaných pozic
|
|
77
|
-
- opětovné načtení asociovaných pozic z DB
|
|
78
|
-
- určení trasy spoje podle GTFS shapes a stop times
|
|
79
|
-
- processing pozic, uložení do databáze
|
|
80
|
-
- Not tracking (`tracking` je `0` a nebo nepřišly souřadnice)
|
|
81
|
-
- pokud je poslední pozice neznámá, nebo je známá a ve stavu `on_track` nebo `at_stop`, je aktuální stav `before_track`
|
|
82
|
-
- pokud je poslední známá pozice s `tracking 2`
|
|
83
|
-
- pokud je pozice duplicitní (existuje pozice se stejným `origin_timestamp`), stav je `duplicate`
|
|
84
|
-
- jinak je stav `after_track`
|
|
85
|
-
- Tracking (`tracking` je `2`, souřadnice jsou známy)
|
|
86
|
-
- pokud je vozidlo 200 metrů od nejblizšího bodu (anchor points) na trase, stav je `off_track`
|
|
87
|
-
- pokud je nejbližší bod v zastávce, nastaví se stav na `at_stop`
|
|
88
|
-
- jinak je stav `on_track`
|
|
89
|
-
- Zrušený spoj (příznak `canceled` u pozice)
|
|
90
|
-
- stav je vždy `canceled`
|
|
91
|
-
- propagateDelay
|
|
92
|
-
- podle kmenové linky a oběhu vyhledáme navazující spoje
|
|
93
|
-
- podle GTFS trip id a registračního čísla poslední pozici ve stavu `before_track`
|
|
94
|
-
- přepsání stavu na `before_track_delayed`
|
|
95
|
-
|
|
96
|
-
```mermaid
|
|
97
|
-
flowchart TB;
|
|
98
|
-
A[HTTP data]-->B[VP HTTP Input Gateway]--raw data-->Blob[Azure Blob Storage];
|
|
99
|
-
B--JSON xml2js-->C[AMQP saveDataToDB]--upsert-->trips[(DB trips)];
|
|
100
|
-
C--nové spoje bez GTFS dat-->D[AMQP updateGTFSTripId];
|
|
101
|
-
C--existující spoje-->E[AMQP updateDelay];
|
|
102
|
-
D--upsert-->trips;
|
|
103
|
-
D--upsert-->positions[(DB positions)];
|
|
104
|
-
D--nové spoje s GTFS daty-->E;
|
|
105
|
-
E--upsert-->trips;
|
|
106
|
-
E--upsert-->positions;
|
|
107
|
-
E--select-->trips;
|
|
108
|
-
E--select-->positions;
|
|
109
|
-
E--uložené spoje-->F[AMQP propagateDelay];
|
|
110
|
-
F--select-->trips;
|
|
111
|
-
F--select-->positions;
|
|
112
|
-
F--upsert-->positions;
|
|
113
|
-
```
|