@golemio/pid
Version:
Golemio PID Module
111 lines (67 loc) • 2.97 kB
Markdown
# Kdy je odjezd oznacen jako MISSING
Odjezd je oznacen jako **MISSING**, pokud vozidlo **melo jet**, ale **nejsou k dispozici zadna validni realtime data (delay / poloha)**.
Implementace: `src/output-gateway/pid/models/helpers/SkipHelper.ts` - metoda `isVehicleMissing()`
---
## Konstanty
| Konstanta | Hodnota | Popis |
|-----------|---------|-------|
| `START_SOON_MINUTES_THRESHOLD` | 30 min | Prah pro "brzy zacina" (non-metro) |
| `START_SOON_METRO_MINUTES_THRESHOLD` | 5 min | Prah pro "brzy zacina" (metro) |
| `DEPARTURED_MINUTES_THRESHOLD` | -2 min | Trip mel zacit pred vice nez 2 minutami |
| `TRIP_GAP_MINUTES_THRESHOLD` | 60 min | Velka mezera mezi tripy v runu |
---
## MISSING = true (odjezd se nezobrazuje)
Odjezd je **MISSING**, pokud plati nasledujici:
### 1. Zakladni podminky (musi platit vsechny)
- `is_delay_available = false`
- `trip.start_timestamp` **nebo** `planned_start_timestamp` existuje
- `run_number` existuje (neni null)
- `route_id` existuje (neni null)
### 2. Casove podminky
Trip zacina v casovem okne:
- **Non-metro:** do 30 minut
- **Metro:** do 5 minut
A zaroven:
- Trip **uz mel zacit** (`minutesToStart < -2`)
**Vysledek:** odjezd je **MISSING**
---
### 3. Odjezd navazuje na predchozi jizdu bez dat
Pokud trip **jeste uplne nesplnuje bod 2** (nezacal pred 2+ minutami), muze byt stale oznacen jako **MISSING**, pokud:
1. Existuje `runSchedule` pro dany run
2. Trip **neni prvni v runu**
3. Mezi aktualnim a predchozim tripem **neni mezera >= 60 minut**
4. Predchozi trip:
- **nema realtime data** (je v `untrackedTrips`)
- **uz mel zacit** (`previousMinutesToStart < -2`)
**Vysledek:** odjezd je **MISSING**
---
### 4. Rozsirena kontrola pres predchozi jizdu
Pokud predchozi trip sam **neni prvni v runu** (index > 0) a:
- Mezi jeho startem a koncem jeste starsi jizdy **neni mezera >= 60 minut**
Predchozi jizda je take povazovana za chybejici a **aktualni odjezd je MISSING**.
---
## NOT MISSING = false (odjezd se zobrazi)
Odjezd **neni MISSING**, pokud plati alespon jedna z techto podminek:
### Chybi vstupni data
- `trip.start_timestamp` neexistuje (a `planned_start_timestamp` taky ne)
- `run_number = null`
- `route_id = null`
### Ma realtime data
- `is_delay_available = true`
### Je prilis brzy
Trip zacina:
- **Non-metro:** za >= 30 minut
- **Metro:** za >= 5 minut
### Nelze overit navaznost jizd
- `runSchedule` pro dany run neexistuje
- Trip neni nalezen v run schedule
- Trip je **prvni v runu** (index = 0)
### Mezi jizdami je velka mezera
- Mezera od predchozi jizdy >= 60 minut
- Mezera pred predchozi jizdou >= 60 minut
### Predchozi jizda ma data nebo jeste nezacala
- Predchozi trip **ma realtime data** (neni v `untrackedTrips`)
- Predchozi trip **jeste nemel zacit** (`previousMinutesToStart >= -2`)
---
## Shrnnuti
> **Odjezd je MISSING, kdyz uz mel jet, nema zadna realtime data a zaroven neni duvod si myslet, ze vozidlo teprve prijede z jine jizdy.**