# 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.**
