@golemio/pid 5.9.1-dev.2464819473 → 5.9.1

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.
@@ -1522,6 +1522,44 @@ Worker má na starost stahování VYMI (JIS) událostí a infotextů, jejich tra
1522
1522
  - zdrojové tabulky
1523
1523
  - `jis_infotexts`, `jis_infotexts_ropidgtfs_stops`, `ropidgtfs_stops`
1524
1524
 
1525
+ ### PID Departure Boards v4
1526
+
1527
+ #### _/v4/pid/transferboards_
1528
+
1529
+ - 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
1530
+ - parametry
1531
+ - `aswId` + `vehicleRegistrationNumber` + `routeType` – identifikace zastávky a vozidla přes ASW číselník (vzájemně se vylučuje s `cisId`+`tripNumber`)
1532
+ - `cisId` + `tripNumber` – identifikace zastávky a spoje přes CIS číselník (zatím neimplementováno, vrací 501)
1533
+ - `timeFrom` – volitelný ISO8601 čas příjezdu (pokud není zadán, použije se reálný čas příjezdu z RT dat)
1534
+ - `limit` – volitelný počet odjezdů (výchozí 8, max 30)
1535
+ - cachováno na 5 sekund (stale-while-revalidate 5 sekund)
1536
+ - zdrojové cache záznamy
1537
+ - `gtfsStopsCache:*` – převod ASW node ID na GTFS stop_id
1538
+ - `gtfsDelayComputation:*` – zjištění zastávek spoje a predikovaného času příjezdu
1539
+ - `vpPublicCache:*` – aktuální poloha a zpoždění vozidla
1540
+ - `gtfsPublicDepartureCache:*` – statické odjezdy ze zastávek (vč. `connections` a `wheelchair_accessible`)
1541
+ - `vpPublicStopTimeCache:*` – live zastávkové časy pro spoje se známou polohou
1542
+ - `jisCache:*` – aktivní infotexty pro dané zastávky
1543
+ - načítání odjezdů z cache (`gtfsPublicDepartureCache`)
1544
+ - 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
1545
+ - 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)
1546
+ - garantované přestupy (`is_guaranteed_transfer`)
1547
+ - 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`
1548
+ - 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)
1549
+ - 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
1550
+ - typy "vždy zobrazit" (metro, vlak, přívoz, lanovka) filtr `findRelevantTripIdsFromLines` zcela přeskakují
1551
+ - dostupnost pro vozíčkáře (`is_wheelchair_accessible`)
1552
+ - **metro**: určeno výhradně podle `wheelchair_boarding` zastávky (hodnota `1` = přístupná)
1553
+ - **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)
1554
+ - odfiltrování odjezdů stejné linky v opačném směru (`TransferFacade.isDifferentLine`) — odjezdy se shodným `route_short_name` + `route_type`, ale odlišným `direction_id` oproti aktuálnímu vozidlu jsou odstraněny; odjezdy s neznámým `direction_id` (null) jsou ponechány
1555
+ - seskupování a omezení výstupu (`TransferDepartureCacheTransformation`)
1556
+ - **metro**: seskupuje se podle `route_short_name + route_type + direction_id`; na jeden záznam výstupu připadají až 2 hodnoty v poli `departure_timestamp.minutes[]`
1557
+ - **ostatní typy**: seskupuje se podle `route_short_name + route_type + direction_id`; na skupinu připadají nejvýše 2 samostatné záznamy odjezdů
1558
+ - `direction_id` se řeší s fallback řetězcem: `departure.direction_id` (z cache odjezdů) → `position.detailed_info.direction_id` (z RT poloh vozidel) → in-memory cache (klíč `route_short_name + trip_headsign`) → `0`
1559
+ - konfigurace filtrování opačného směru (backtracking)
1560
+ - `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`
1561
+ - `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
1562
+
1525
1563
  ### Public v2
1526
1564
 
1527
1565
  #### _/v2/public/gtfs/trips/{gtfsTripId}_
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@golemio/pid",
3
- "version": "5.9.1-dev.2464819473",
3
+ "version": "5.9.1",
4
4
  "description": "Golemio PID Module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "url": "https://gitlab.com/operator-ict/golemio/code/modules/pid"
34
34
  },
35
35
  "engines": {
36
- "node": ">=22.0.0",
36
+ "node": ">=20.0.0",
37
37
  "npm": ">=8.0.0"
38
38
  },
39
39
  "devDependencies": {
@@ -48,7 +48,7 @@
48
48
  "@types/chai": "4.2.3",
49
49
  "@types/chai-as-promised": "7.1.2",
50
50
  "@types/mocha": "^10.0.10",
51
- "@types/node": "^22.19.17",
51
+ "@types/node": "^20.12.7",
52
52
  "@types/pg-copy-streams": "^1.2.5",
53
53
  "@types/sinon": "^9.0.10",
54
54
  "@types/supertest": "^2.0.10",
@@ -61,7 +61,7 @@
61
61
  "dotenv": "^8.2.0",
62
62
  "eslint": "^8.1.1",
63
63
  "husky": "^4.3.7",
64
- "mocha": "^11.7.5",
64
+ "mocha": "^10.0.0",
65
65
  "npm-run-all": "^4.1.5",
66
66
  "nyc": "^17.1.0",
67
67
  "prettier": "^2.5.1",
@@ -73,12 +73,12 @@
73
73
  "ts-node": "^10.9.2",
74
74
  "ts-patch": "^3.3.0",
75
75
  "tsconfig-paths": "^4.2.0",
76
- "typedoc": "0.28.19",
76
+ "typedoc": "^0.28.14",
77
77
  "typescript": "^5.9.3",
78
78
  "typescript-transform-paths": "^3.5.5"
79
79
  },
80
80
  "peerDependencies": {
81
- "@golemio/core": "^3.0.7-dev.2 || ^3.0.0"
81
+ "@golemio/core": "^3.0.1-dev.2 || ^3.0.0 || ^2.0.1"
82
82
  },
83
83
  "overrides": {
84
84
  "@google-cloud/storage": {