UNPKG

@golemio/pid

Version:
77 lines (73 loc) 5.76 kB
# PostgreSQL cache - V současnosti cachujeme pouze kontext k danému RT spoji - tedy stav vozidla/spoje po poslední zpracované zprávě - Nemusíme tedy dotahovat předchozí pozice z DB, ale veškeré informace máme ve sloupci `last_position_context` v tabulce `vehicle_positions_trips` - Uložen jako JSON objekt s variabilními daty a atributy - v závislosti na stavu vozidla/spoje některé atributy chybí nebo jsou prázdné/null - Pokud se jedná o první pozici na spoji, pak všechny atributy kromě `tripId` budou null a nepovinné atributy můžou chybět - Aktuální interface viz [IVPTripsLastPositionContext](../../../src/schema-definitions/vehicle-positions/models/interfaces/VPTripsLastPositionInterfaces.ts) ```typescript interface IVPTripsLastPositionContext { lastPositionId: string | null; lastPositionLat?: number | null; lastPositionLng?: number | null; lastPositionOriginTimestamp: number | null; lastPositionTracking: Feature<Point, IVPTripsPositionAttributes> | null; lastPositionCanceled: boolean | null; lastPositionLastStop: { id: string | null; sequence: number | null; arrival_time: number | null; arrival_delay: number | null; departure_time: number | null; departure_delay: number | null; }; lastPositionDelay: number | null; atStopStreak: IVPTripsComputedPositionAtStopStreak; lastPositionBeforeTrackDelayed: { delay: number | null; origin_timestamp: Date; } | null; lastPositionState: StatePositionEnum | null; lastStopSequence?: number | null; lastPositionStateChange: string | null; tripId: string; } ``` - **lastPositionId** - ID poslední pozice, koresponduje ID záznamu v tabulce `vehiclepositions_positions` - _poznámka_: využití během aktualizace tripu v databázi (lze nahradit přímo pozicí). Rovněž se využívá během propagace zpoždění - **lastPositionLat** - poslední známá zeměpisná šířka vozidla - _poznámka_: nepoužívá se a může být null, pokud je spoj zrušen a nepodařilo se zjistit poslední známou polohu - **lastPositionLng** - poslední známá zeměpisná délka vozidla - _poznámka_: nepoužívá se a může být null, pokud je spoj zrušen a nepodařilo se zjistit poslední známou polohu - **lastPositionOriginTimestamp** - `origin_timestamp` poslední pozice (čas přenosu zprávy od DPP — `tm`; odpovídá zeměpisné poloze lat/lng) - _poznámka_: využití během propagace zpoždění a určení duplikovaných zpráv. unix timestamp v milisekundách - **lastPositionTracking** - pokud je poslední pozice tracked, pak je zde uložena jako GeoJSON objekt, jinak null - _poznámka_: využití během určení stavu vozidla jedoucího z/do garáže, projetí poslední zastávky a ujeté trasy `shape_dist_traveled` a azimutu u propagované pozice - **lastPositionCanceled** - indikátor, zda byl spoj předchozí zprávou deklarován jako zrušený - _poznámka_: využití během aktualizace tripu v databázi. Zbytečné a lze nahradit stavem pozice - **lastPositionLastStop** - informace o poslední zastávce, kterou vozidlo projelo - _poznámka_: využití pouze pro výpočet zpoždění na zastávce - **id** - GTFS ID zastávky. V současnosti je vždy null a nepoužívá se - **sequence** - pořadí zastávky v rámci GTFS stop times - **arrival_time** - čas příjezdu na zastávku podle GTFS - **arrival_delay** - vypočítané zpoždění příjezdu na zastávku oproti GTFS v sekundách - **departure_time** - čas odjezdu ze zastávky podle GTFS - **departure_delay** - vypočítané zpoždění odjezdu ze zastávky oproti GTFS v sekundách - **lastPositionDelay** - poslední vypočítané zpoždění vozidla na spoji - _poznámka_: využití pouze pro výpočet zpoždění na zastávce - **atStopStreak** - informace o délce pobytu vozidla na zastávce - _poznámka_: využití pro přesnější určení zpoždění vozidla během pobytu na zastávce a taky pro výpočet zpoždění během příjezdu a odjezdu na zastávku - **firstPositionTimestamp** - timestamp první pozice na zastávce - **firstPositionDelay** - zpoždění v sekundách během první pozice na zastávce. Liší se od zpoždění během příjezdu na zastávku, které se počítá jinak - **stop_sequence** - pořadí zastávky v rámci GTFS stop times - **lastPositionBeforeTrackDelayed** - dodatečné informace o poslední pozici - _poznámka_: vyplněno pouze v případě, že poslední pozice spoje byla zpropagována z předchozího spoje na oběhu, jinak null. Využití pro určení zpozdění vozidla a taky pro určení stavu vozidla jedoucího z/do garáže - **delay** - zpoždění poslední pozice oproti GTFS v sekundách - **origin_timestamp** - čas přenosu poslední pozice (`tm`; odpovídá zeměpisné poloze) - **lastPositionState** - stav vozidla během poslední pozice - _poznámka_: využití pro určení stavu a správné určení segmentu trasy (mezi jakými zastávkami se vozidlo nachází, díky tomu přesnější zpoždění vozidla) - **lastStopSequence** - pořadí poslední projeté zastávky v rámci GTFS stop times - _poznámka_: využití během určení, zda se vozidlo navrátilo na trase zpět - **lastPositionStateChange** - timestamp poslední změny stavu vozidla - _poznámka_: využití pro určení stavu vozidla a zda se má vůbec vypočítat zpoždění - **tripId** - RT ID spoje, ke kterému se kontext vztahuje. Koresponduje ID záznamu v tabulce `vehiclepositions_trips` - _poznámka_: využití během aktualizace tripu v databázi. Zbytečné, šlo by udělat lépe