# Velosipēdu pieejamība reālajā laikā: kā to parādīt lietotnē?

> Parādiet velosipēdu pieejamību ar ROOTE API: laika zīmogi, datu svaigums, nezināmas vērtības, atsvaidzināšana un novecojuši dati jūsu lietotnē.

Source: https://www.roote.ai/lv/guides/velos-pieejamibas-reala-laika-latveju-valoda/
Language: lv
Author: ROOTE

Lai lietotnē parādītu velosipēdu pieejamību reālajā laikā, saistiet saņemto skaitu ar tā svaigumu un transportlīdzekļa saņemšanas iespējām. Novērojums apraksta, ko avots zināja konkrētā brīdī; tas negarantē, ka velosipēds joprojām būs pieejams ierašanās brīdī.

ROOTE mobilitātes līgums atšķir stacijas, atsevišķus transportlīdzekļus un to statusus. Saskarnei jāatspoguļo šīs atšķirības, nesajaucot nezināmu vērtību, tukšu staciju un pagaidu nepieejamu avotu.

## Atšķirt staciju no atsevišķa transportlīdzekļa

Stacija var parādīt velosipēdu un atgriešanas vietu skaitītājus. Atsevišķam transportlīdzeklim ir pieejamības statuss un citi iespējamie dati. Izvairieties no stacijas skaitīšanas kā velosipēda vai tādu pašu krājumu skaitītāju summēšanas.

ROOTE mobilitātes DTO lauki availability.bikes un availability.docks var būt nezināmi. Propulcijas vai baterijas lauki jāparāda tikai tad, ja tie pastāv un tiek interpretēti saskaņā ar līgumu.

[ROOTE OpenAPI līgums](https://api.roote.ai/openapi.json)

## Lasīt svaigumu un laika zīmogus

| Lauks | Interpretācija |
| --- | --- |
| freshness.state | Paziņotais statuss: fresh (svaigs), stale (novecojis), unknown (nezināms) vai static (statiskums) |
| freshness.source_updated_at | Avota atjaunināšanas datums, ja zināms |
| freshness.received_at | Saņemšanas datums, ko norāda līgums |
| freshness.expires_at | Norādītais derīguma termiņš, ja zināms |
| availability.bikes | Zināmais daudzums vai nezināma vērtība |
| pickup.enabled un pickup.state | Informācija par velosipēda saņemšanu stacijā |

Jūsu zvana laiks nav automātiski novērojuma laiks. Rezultāts, kas saņemts plkst. 10:00, var saturēt avotu atjaunotu plkst. 9:45. Nerādiet “atjaunināts tagad” tikai pamatojoties uz saskarnes saņemšanas laiku.

## Paredzēt atšķirīgus displeja statusus

| Saņemtie dati | Paredzamais attēlojums |
| --- | --- |
| Zināms daudzums un svaigi dati | Novērots daudzums un laika indikācija |
| Daudzums ir nulle | Neviens velosipēds nav novērots, ar tā laika kontekstu |
| Daudzums null | Pieejamība nav zināma |
| Statuss stale vai beidzies derīgums | Veci dati; ieteicams atjaunot |
| pickup.enabled=false | Saņemšana nav pieejama, pat ja skaitītājs ir pozitīvs |
| Meklēšanas kļūda | Pieejamība ir īslaicīgi nepieejama, bez pārvēršanas uz nulli |

Neuzskatiet statusu unknown vai static par svaigu. Stacijas informācija var būt stabila, kamēr skaitītājs mainās ātri. Saglabājiet arī brīdinājumus un pieprasītās atzīmes atbildē.

## Normalizācijas piemērs pirms attēlošanas

Šī funkcija rada attēlojuma statusu no jau validētas stacijas pret ROOTE shēmu. Tā nav pilnīgs atbildes validētājs. Redzamie nosaukumi jāņem no jūsu saskarnes tulkojumu atslēgām.

```
function availabilityView(station, now = Date.now()) {
  const freshness = station.freshness;
  const expiresAt = freshness.expires_at
    ? Date.parse(freshness.expires_at) : null;
  const expired = expiresAt !== null &&
    Number.isFinite(expiresAt) && expiresAt <= now;
  if (station.pickup.enabled === false ||
      station.pickup.state === 'unavailable_now') {
    return { state: 'pickup_unavailable', count: null };
  }
  if (expired || freshness.state === 'stale') {
    return { state: 'stale', count: null };
  }
  const count = station.availability.bikes;
  if (freshness.state !== 'fresh' || count === null ||
      !Number.isFinite(count) || count < 0) {
    return { state: 'unknown', count: null };
  }
  return {
    state: count === 0 ? 'empty' : 'observed', count,
    sourceUpdatedAt: freshness.source_updated_at,
    receivedAt: freshness.received_at,
    pickupState: station.pickup.state
  };
}
```

Pat ar statusu observed nepārvērtiet pickupState=unknown par apstiprinātu saņemšanu. Skaitītājs paliek novērojums. Parādiet saņemšanas kontekstu, ja jūsu produkts palīdz lietotājam izvēlēties staciju.

## Atsvaidzināt bez nevajadzīgas zvanu palielināšanas

Pielāgojiet atsvaidzināšanu pēc publicētā derīguma termiņa, pakalpojuma nosacījumiem un lietotāja uzvedības. Grupējiet identiskus pieprasījumus, izvairieties no fona zvaniem neaktīvā lapā un atceliet aizvietotus meklējumus.

Vietējais kešatmiņas termiņš nepierāda avota svaigumu. Pēc kļūdas varat saglabāt pēdējo datēto novērojumu, ja jūsu saskarne to skaidri rāda kā novecojušu. Nepārdzēsiet šo atšķirību pirmajā veiksmīgajā atjaunošanā, ja avots paliek stale.

## Saprast saikni ar GBFS

GBFS apraksta koplietojamos mobilitātes pakalpojumus un to izziņotos statusus. Tieša integrācija jāinterpretē failus, versiju un datplūsmas laika zīmogus. Ar standartizētu API izmantojiet API līgumu; nepievienojiet GBFS lauku, kas nav paredzēts atbildē.

[Izvēle starp GTFS, GTFS Realtime un GBFS](https://www.roote.ai/lv/guides/gtfs-gtfs-rt-un-gbfs-kadas-atskiribas/)

## Testēt situācijas, kas var maldināt lietotāju

Testējiet īstu nulli, nezināmu vērtību, beigušos derīgumu, deaktivizētu saņemšanu un kļūdu pēc derīga rezultāta. Pārbaudiet arī laika joslu attēlošanu. Pozitīvs skaitītājs nekad nedrīkst radīt “rezervētu velosipēdu”, un nepieejamība nekad nerada izdomātu nulli.

[Apstrādāt tukšas atbildes un kļūdas](https://www.roote.ai/lv/guides/nav-rezultatu-apis-klaidu-atpazisana/)

[Piemērot šīs vadlīnijas mākslīgā intelekta palīgprogrammā](https://www.roote.ai/lv/guides/kako-izveidot-palidzetaju-kas-atrod-mobilitate-ap-adresi/)

[Lietotāja ceļvedis velosipēda atrašanai](https://www.roote.ai/lv/guides/kako-atrast-brivos-daramo-velo-netalu/)

## Bieži uzdotie jautājumi

### Vai pozitīvs daudzums garantē velosipēdu ierašanās brīdī?

Nē. Tas apraksta novērojumu, kas var mainīties starp meklēšanu un jūsu ierašanos.

### Vai null var aizvietot ar nulli (0)?

Nē. Null norāda nezināmu vērtību; nulle ir zināms daudzums ar citu nozīmi.

### Vai vajag atsvaidzināt ik pēc dažām sekundēm?

Izmantojiet derīguma, pakalpojuma ierobežojumu un lietotnes vajadzību norādes. Patvaļīga frekvence negarantē svaigākus avotus.
