Valós idejű kerékpár elérhetőség megjelenítéséhez az alkalmazásban társítsa a visszaadott darabszámot annak frissességi állapotával és a jármű elvételi lehetőségeivel. Egy megfigyelés azt írja le, amit a forrás egy adott pillanatban ismert; nem garantálja, hogy a kerékpár még ott lesz az érkezéskor.
A ROOTE mobilitási szerződés megkülönbözteti az állomásokat, az egyedi járműveket és azok állapotát. Az interfésznek tükröznie kell ezeket a különbségeket anélkül, hogy összekeverné az ismeretlen értéket, az üres állomást és az ideiglenesen elérhetetlen forrást.
Állomás és egyedi jármű különválasztása
Egy állomás kerekpár- és visszavevőhely-számlálókat mutathat. Egy egyedi jármű rendelkezik elérhetőségi állapottal és egyéb esetleges információkkal. Kerülje, hogy egy állomást kerékpárként számoljon, vagy azonos készletet képviselő számlálókat összeadjon.
A ROOTE mobilitási DTO-ban az availability.bikes és availability.docks lehet ismeretlen. A hajtás vagy akkumulátor mezőket csak akkor jelenítse meg, ha léteznek és a szerződés szerint értelmezhetőek.
A frissesség és időbélyegek olvasása
| Mező | Értelmezés |
|---|---|
| freshness.state | Jelzett állapot: fresh (friss), stale (elavult), unknown (ismeretlen) vagy static (statikus) |
| freshness.source_updated_at | A forrás frissítésének dátuma, ha ismert |
| freshness.received_at | A szerződés által jelzett fogadás ideje |
| freshness.expires_at | Érvényességi határidő, ha ismert |
| availability.bikes | Ismert mennyiség vagy ismeretlen érték |
| pickup.enabled és pickup.state | Információk a kerékpár elvételéről az állomáson |
Az Ön hívásának időpontja nem feltétlenül egyezik meg a megfigyelés idejével. Egy 10 órakor kapott eredmény tartalmazhat egy 9:45-kor frissített forrást. Ne jelenítse meg úgy, hogy „most frissítve” csak az interfész fogadási ideje alapján.
Különböző megjelenítési állapotokat tervezzen
| Fogadott adat | Várható megjelenítés |
|---|---|
| Ismert mennyiség és friss adat | Megfigyelt mennyiség időbeli jelzéssel |
| Mennyiség nulla | Nem észlelt kerékpár az időbeli kontextusával együtt |
| Mennyiség null (ismeretlen) | Ismeretlen elérhetőség |
| Stale állapot vagy lejárt érvényesség | Régi adat; frissítés szükséges |
| pickup.enabled=false | Elvétel nem elérhető, még ha a számláló pozitív is |
| Keresési hiba | Elérhetőség átmenetileg nem elérhető, nem nullára konvertálva |
Ne sorolja az unknown vagy static állapotot frissnek. Egy állomás információja lehet stabil, miközben a számláló gyorsan változik. Tartsa meg a válasz által előírt figyelmeztetéseket és hozzárendeléseket is.
Egy normalizálás példa megjelenítés előtt
A következő függvény egy megjelenítési állapotot ad vissza egy már a ROOTE sémát ellenőrzött állomásból. Nem teljes válaszvalidátor. A látható címkéknek az Ön interfészének fordítási kulcsaiból kell származniuk.
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
};
}
Még observed állapot mellett se alakítsa át a pickupState=unknown-t megerősített elvétellé. A számláló továbbra is egy megfigyelés. Jelenítse meg az elvételi kontextust, ha terméke segíti a felhasználót az állomás kiválasztásában.
Frissítés felesleges hívások sokszorosítása nélkül
Igazítsa a frissítést a közzétett lejárathoz, a szolgáltatás feltételeihez és a felhasználói viselkedéshez. Csoportosítsa az azonos kéréseket, kerülje az inaktív oldalon futó háttérhívásokat, és bontsa fel az érvénytelenített kereséseket.
Egy helyi cache időzítés nem bizonyítja a forrás frissességét. Hiba esetén megtarthat egy időbélyegzett utolsó megfigyelést, ha azt az interfész kifejezetten régi adatként jelzi. Ne törölje ezt az elkülönítést az első sikeres ismétléskor, ha a forrás továbbra is stale.
Kapcsolat megértése a GBFS-sel
A GBFS a megosztott mobilitási szolgáltatásokat és azok közzétett állapotait írja le. Egy közvetlen integráció értelmeznie kell a fájlokat, verziókat és adatfolyam időbélyegeket. Egy szabványos API esetén használja az API szerződését; ne adjon hozzá feltételezett hiányzó GBFS mezőt a válaszhoz.
GTFS, GTFS Realtime és GBFS közötti választás
A felhasználót megtévesztő helyzetek tesztelése
Teszteljen valódi nullát, ismeretlen értéket, lejárt érvényességet, kikapcsolt elvételt és hibát érvényes eredmény után. Ellenőrizze a megjelenítés időzónáit is. Egy pozitív számláló sosem eredményezhet „foglalt kerékpárt”, és egy elérhetetlenség sosem produkálhat kitalált nullát.
Üres és hibás válaszok kezelése
Alkalmazza ezeket a szabályokat egy MI asszisztensben
Felhasználói útmutató kerékpárkereséshez
Gyakran ismételt kérdések
Pozitív mennyiség garantálja-e a kerékpárt az érkezésemkor?
Nem. Ez egy megfigyelést ír le, amely változhat a keresés és az érkezés között.
Kicserélhető-e a null érték nullára?
Nem. A null ismeretlen értéket jelent; a nulla ismert mennyiség, és más jelentése van.
Minden néhány másodpercben frissíteni kell?
Használja az érvényességi jelzéseket, a szolgáltatási korlátokat és az interfészigényeket. Egy önkényes gyakoriság nem garantál frissebb forrást.