前言
要在同一個畫面同時看到「站名」與「幾分鐘到」,關鍵在於兩份資料能不能對得上。沿用昨天的規則:欄位用小駝峰、時間用 ISO 8601(含時區)、持續時間用秒、枚舉用可讀字串。今天把「固定(站/路線)」與「即時(到站)」的對應關係講清楚,之後任何資料來源,只要放進這套對齊規則,就能穩定顯示。
對齊的核心欄位
固定資料(站/路線):routeId, routeName, stopId, stopName, lat, lon, direction, updateTime
即時資料(到站):routeId, stopId, estimateSeconds, stopStatus, direction, updateTime
兩邊共有的「橋樑」是 routeId+stopId(必要時加上 direction)。顯示名稱來自固定資料,倒數與狀態來自即時資料;新鮮度用 updateTime。
routeId/stopId 對齊圖(固定 ↔ 即時)
┌───────────────────────────┐                ┌───────────────────────────┐
│ 固定資料(站/路線)         │                │ 即時資料(到站)             │
│                           │   對齊欄位       │                           │
│  routeId  ────────────────┼──────────────▶  │  routeId                  │
│  stopId   ────────────────┼──────────────▶  │  stopId                   │
│  direction ───────────────┼──────────────▶  │  direction                │
│  stopName(顯示名稱)      │                  │  estimateSeconds(倒數秒) │
│  routeName(顯示名稱)     │                  │  stopStatus(狀態字)      │
│  updateTime(資料時間) ───┼──────────────▶  │  updateTime(資料時間)    │
│  lat/lon(地點資訊)      │                │                           │
└───────────────────────────┘                └───────────────────────────┘
│                                        ▲
│(畫面顯示用名稱)                       │(畫面倒數與新鮮度)
▼                                        │
routeName/stopName                       estimateSeconds/updateTime
對齊要點(名稱、型別、單位)
•名稱一致:兩邊都叫 routeId、stopId、direction,不要一邊 RouteID、一邊 route_id。
•型別一致:建議兩邊都用字串(例:"307"、"12345"),避免數字/字串混用。
•單位一致:倒數一律用 estimateSeconds(秒),顯示層再換成人話。
•時間一致:updateTime 一律用 YYYY-MM-DDThh:mm:ss+08:00(含時區)。
常見歪掉的情況與處理方式
•方向沒對上:同一 routeId 有去程/返程,請一併帶 direction 才能精準對齊。
•站名改了但編號不改:對齊仍以 stopId 為準,顯示名稱以最新 stopName 為主。
•即時回「暫無」「末班」:stopStatus 用可讀字串(normal/last/suspended/noData),不要把 -1 直接丟給使用者。
•	來源傳數字 ID:若固定資料用字串,統一轉成字串再比對(例:307 ↔ "307")。
小結
其中的核心只有一句話:用 routeId + stopId(必要時加 direction)把固定與即時接起來。名稱一致、型別一致、單位一致,畫面就能穩定地同時顯示站名與倒數;換資料來源或擴充到其他路線、站點,也能沿用同一套規則。