@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.
Files changed (65) hide show
  1. package/dist/helpers/RedisJsonParser.d.ts +21 -0
  2. package/dist/helpers/RedisJsonParser.js +57 -0
  3. package/dist/helpers/RedisJsonParser.js.map +1 -0
  4. package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js +0 -1
  5. package/dist/input-gateway/vehicle-positions/VehiclePositionsController.js.map +1 -1
  6. package/dist/integration-engine/jis/ioc/Di.js +2 -0
  7. package/dist/integration-engine/jis/ioc/Di.js.map +1 -1
  8. package/dist/integration-engine/jis/ioc/JISContainerToken.d.ts +1 -0
  9. package/dist/integration-engine/jis/ioc/JISContainerToken.js +1 -0
  10. package/dist/integration-engine/jis/ioc/JISContainerToken.js.map +1 -1
  11. package/dist/integration-engine/jis/repositories/JISEventsRepository.d.ts +9 -1
  12. package/dist/integration-engine/jis/repositories/JISEventsRepository.js +33 -2
  13. package/dist/integration-engine/jis/repositories/JISEventsRepository.js.map +1 -1
  14. package/dist/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.d.ts +14 -0
  15. package/dist/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.js +63 -0
  16. package/dist/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.js.map +1 -0
  17. package/dist/integration-engine/ropid-gtfs/data-access/RopidGTFSRoutesRepository.d.ts +12 -0
  18. package/dist/integration-engine/ropid-gtfs/data-access/RopidGTFSRoutesRepository.js +39 -0
  19. package/dist/integration-engine/ropid-gtfs/data-access/RopidGTFSRoutesRepository.js.map +1 -0
  20. package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.d.ts +2 -0
  21. package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js +48 -1
  22. package/dist/integration-engine/ropid-gtfs/data-access/cache/DelayComputationRedisRepository.js.map +1 -1
  23. package/dist/integration-engine/ropid-gtfs/ioc/Di.js +15 -13
  24. package/dist/integration-engine/ropid-gtfs/ioc/Di.js.map +1 -1
  25. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.d.ts +1 -0
  26. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js +1 -0
  27. package/dist/integration-engine/ropid-gtfs/ioc/RopidGtfsContainerToken.js.map +1 -1
  28. package/dist/integration-engine/vehicle-positions/ioc/Di.js +1 -1
  29. package/dist/integration-engine/vehicle-positions/ioc/Di.js.map +1 -1
  30. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertsGenerator.d.ts +7 -1
  31. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertsGenerator.js +14 -4
  32. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/helpers/AlertsGenerator.js.map +1 -1
  33. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js +10 -6
  34. package/dist/integration-engine/vehicle-positions/workers/gtfs-rt/tasks/GenerateFilesTask.js.map +1 -1
  35. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/VPInterfaces.d.ts +3 -1
  36. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js +2 -3
  37. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask.js.map +1 -1
  38. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/PropagateTrainDelayTask.js.map +1 -1
  39. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js +2 -3
  40. package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/UpdateDelayTask.js.map +1 -1
  41. package/dist/output-gateway/public/data-access/redis/DelayComputationRepository.d.ts +1 -1
  42. package/dist/output-gateway/public/data-access/redis/DelayComputationRepository.js +10 -14
  43. package/dist/output-gateway/public/data-access/redis/DelayComputationRepository.js.map +1 -1
  44. package/dist/output-gateway/public/domain/repository/IDelayComputationRepository.d.ts +1 -1
  45. package/dist/output-gateway/public/service/helpers/trip-scope/strategy/ShapesTripScopeHandler.js +1 -1
  46. package/dist/output-gateway/public/service/helpers/trip-scope/strategy/ShapesTripScopeHandler.js.map +1 -1
  47. package/dist/output-gateway/public/service/helpers/trip-scope/strategy/StopTimesTripScopeHandler.js +1 -1
  48. package/dist/output-gateway/public/service/helpers/trip-scope/strategy/StopTimesTripScopeHandler.js.map +1 -1
  49. package/docs/cache/index.md +5 -0
  50. package/docs/cache/types/in_memory.md +58 -0
  51. package/docs/cache/types/psql.md +76 -0
  52. package/docs/cache/types/redis.md +314 -0
  53. package/docs/processing/index.md +17 -0
  54. package/docs/processing/input_realtime_data/http_mpvnet.md +153 -0
  55. package/docs/processing/input_realtime_data/tcp_dpp_bus.md +27 -0
  56. package/docs/processing/input_realtime_data/tcp_dpp_metro.md +24 -0
  57. package/docs/processing/input_realtime_data/tcp_dpp_tram.md +26 -0
  58. package/docs/processing/input_realtime_data/tcp_telmax_arriva_city.md +44 -0
  59. package/docs/processing/state_position_tracking/http_mpvnet.md +55 -0
  60. package/docs/{state_position_tracking/tcp_common.md → processing/state_position_tracking/tcp_dpp_common.md} +2 -14
  61. package/docs/{state_position_tracking/tcp_metro.md → processing/state_position_tracking/tcp_dpp_metro.md} +2 -9
  62. package/docs/processing/state_position_tracking/tcp_telmax_arriva_city.md +7 -0
  63. package/docs/processing/vehicle_types.md +32 -0
  64. package/package.json +3 -3
  65. 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.1",
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.3",
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
- ```