@golemio/pid
Version:
Golemio PID Module
77 lines (73 loc) • 5.76 kB
Markdown
# 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