1. 簡介
「路線App」(HKTranApp)是一款 iOS 應用程式,為香港市民及訪港旅客提供公共交通工具的即時到站資訊,涵蓋巴士、港鐵及渡輪。
2. 目標用戶
- 日常通勤的香港市民
- 需要即時掌握交通工具到站時間的用戶
- 訪港旅客
3. 功能需求
3.1 即時到站資訊(ETA)
| 編號 | 需求 | 優先級 |
| FR-001 | 顯示九巴(KMB)即時到站時間 | 必須 |
| FR-002 | 顯示城巴(Citybus)即時到站時間 | 必須 |
| FR-003 | 顯示港鐵(MTR)即時班次及月台資訊 | 必須 |
| FR-004 | 顯示渡輪航班時間表 | 應該 |
| FR-005 | 每 30 秒自動刷新 ETA | 必須 |
| FR-006 | 顯示特別班次路線(如加班車、特別線) | 可選 |
3.2 路線搜尋
| 編號 | 需求 | 優先級 |
| FR-010 | 按路線號碼搜尋(如「87D」) | 必須 |
| FR-011 | 按車站名稱或目的地搜尋 | 必須 |
| FR-012 | 支援繁體中文、簡體中文及英文搜尋 | 必須 |
| FR-013 | 顯示最近搜尋記錄 | 應該 |
| FR-014 | 離線状态下可搜尋已下載的路線索引 | 必須 |
3.3 收藏與個人化
| 編號 | 需求 | 優先級 |
| FR-020 | 用戶可收藏路線及車站組合 | 必須 |
| FR-021 | 支援多個收藏清單分組(最多 5 個,如「上班」「放假」) | 必須 |
| FR-022 | 每個分組最多儲存 10 個路線卡片 | 必須 |
| FR-023 | 可重新命名、刪除及重新排序分組 | 應該 |
| FR-024 | 重複收藏時提示用戶 | 必須 |
3.4 站點瀏覽
| 編號 | 需求 | 優先級 |
| FR-030 | 顯示所選路線的全部站點列表 | 必須 |
| FR-031 | 支援切換去程/回程方向 | 必須 |
| FR-032 | 僅顯示有站點數據的方向 | 應該 |
| FR-033 | 每個站點顯示即時 ETA 預覽 | 應該 |
3.5 離線與網絡
| 編號 | 需求 | 優先級 |
| FR-040 | 首次啟動需網絡下載路線索引 | 必須 |
| FR-041 | 離線時顯示最近快取的 ETA 資料 | 必須 |
| FR-042 | 離線時顯示離線模式提示 | 必須 |
| FR-043 | 網絡恢復後自動恢復即時更新 | 必須 |
3.6 使用者介面
| 編號 | 需求 | 優先級 |
| FR-049 | 首次啟動顯示歡迎頁面 | 應該 |
| FR-050 | 支援淺色及深色模式 | 必須 |
| FR-051 | 支援直向及橫向螢幕 | 應該 |
| FR-052 | 提供三語介面(繁中、簡中、英文) | 必須 |
4. ETA 狀態顯示
每張路線卡片根據資料新鮮度及網絡狀態,顯示不同視覺狀態:
| 狀態 | 條件 | 顯示 |
| 正常 | 快取 < 90 秒 | 正常透明度 |
| 稍舊 | 快取 90 秒 – 5 分鐘 | 80% 透明度,琥珀色時鐘 |
| 離線 | 快取 5–30 分鐘或無網絡 | 60% 透明度,離線圖示 |
| 錯誤 | 快取 > 30 分鐘或 API 失敗 | 紅色三角圖示 |
| 暫停服務 | API 回傳空陣列 | 「暫停服務」+ 月亮圖示 |
| 受限 | ETA > 120 分鐘 | 「點擊查看站名」 |
| 載入中 | 首次載入,無快取 | 載入動畫 |
5. 非功能需求
| 編號 | 需求 | 優先級 |
| NFR-001 | 支援 iOS 16.0 或以上 | 必須 |
| NFR-002 | 無需註冊或登入即可使用 | 必須 |
| NFR-003 | 不收集用戶個人資料 | 必須 |
| NFR-004 | 不包含廣告 | 必須 |
| NFR-005 | 無第三方追蹤 SDK | 必須 |
| NFR-006 | ETA API 請求超時設定為 10 秒 | 必須 |
| NFR-007 | KMB API 請求間隔不少於 500ms(速率限制) | 必須 |
| NFR-008 | 所有資料儲存在裝置本地,不上傳伺服器 | 必須 |
6. 數據來源
| 交通工具 | API 來源 |
| 九巴 KMB | data.etabus.gov.hk |
| 城巴 Citybus | rt.data.gov.hk(CTB ETA API) |
| 港鐵 MTR | rt.data.gov.hk(Next Train API) |
| 渡輪 Ferry | 運輸署公開資料(靜態時間表) |
1. 简介
「路线App」(HKTranApp)是一款 iOS 应用程序,为香港市民及访港旅客提供公共交通工具的实时到站信息,涵盖巴士、港铁及渡轮。
2. 目标用户
- 日常通勤的香港市民
- 需要实时掌握交通工具到站时间的用户
- 访港旅客
3. 功能需求
3.1 实时到站信息(ETA)
| 编号 | 需求 | 优先级 |
| FR-001 | 显示九巴(KMB)实时到站时间 | 必须 |
| FR-002 | 显示城巴(Citybus)实时到站时间 | 必须 |
| FR-003 | 显示港铁(MTR)实时班次及月台信息 | 必须 |
| FR-004 | 显示渡轮航班时间表 | 应该 |
| FR-005 | 每 30 秒自动刷新 ETA | 必须 |
| FR-006 | 显示特别班次路线(如加班车、特别线) | 可选 |
3.2 路线搜索
| 编号 | 需求 | 优先级 |
| FR-010 | 按路线号码搜索(如「87D」) | 必须 |
| FR-011 | 按车站名称或目的地搜索 | 必须 |
| FR-012 | 支持繁体中文、简体中文及英文搜索 | 必须 |
| FR-013 | 显示最近搜索记录 | 应该 |
| FR-014 | 离线状态下可搜索已下载的路线索引 | 必须 |
3.3 收藏与个性化
| 编号 | 需求 | 优先级 |
| FR-020 | 用户可收藏路线及车站组合 | 必须 |
| FR-021 | 支持多个收藏清单分组(最多 5 个,如「上班」「放假」) | 必须 |
| FR-022 | 每个分组最多储存 10 个路线卡片 | 必须 |
| FR-023 | 可重命名、删除及重新排序分组 | 应该 |
| FR-024 | 重复收藏时提示用户 | 必须 |
3.4 站点浏览
| 编号 | 需求 | 优先级 |
| FR-030 | 显示所选路线的全部站点列表 | 必须 |
| FR-031 | 支持切换去程/回程方向 | 必须 |
| FR-032 | 仅显示有站点数据的方向 | 应该 |
| FR-033 | 每个站点显示实时 ETA 预览 | 应该 |
3.5 离线与网络
| 编号 | 需求 | 优先级 |
| FR-040 | 首次启动需网络下载路线索引 | 必须 |
| FR-041 | 离线时显示最近缓存的 ETA 资料 | 必须 |
| FR-042 | 离线时显示离线模式提示 | 必须 |
| FR-043 | 网络恢复后自动恢复实时更新 | 必须 |
3.6 用户界面
| 编号 | 需求 | 优先级 |
| FR-049 | 首次启动显示欢迎页面 | 应该 |
| FR-050 | 支持浅色及深色模式 | 必须 |
| FR-051 | 支持直向及横向屏幕 | 应该 |
| FR-052 | 提供三语界面(繁中、简中、英文) | 必须 |
4. ETA 状态显示
每张路线卡片根据数据新鲜度及网络状态,显示不同视觉状态:
| 状态 | 条件 | 显示 |
| 正常 | 缓存 < 90 秒 | 正常透明度 |
| 稍旧 | 缓存 90 秒 – 5 分钟 | 80% 透明度,琥珀色时钟 |
| 离线 | 缓存 5–30 分钟或无网络 | 60% 透明度,离线图标 |
| 错误 | 缓存 > 30 分钟或 API 失败 | 红色三角图标 |
| 暂停服务 | API 回传空数组 | 「暂停服务」+ 月亮图标 |
| 受限 | ETA > 120 分钟 | 「点击查看站名」 |
| 加载中 | 首次加载,无缓存 | 加载动画 |
5. 非功能需求
| 编号 | 需求 | 优先级 |
| NFR-001 | 支持 iOS 16.0 或以上 | 必须 |
| NFR-002 | 无需注册或登录即可使用 | 必须 |
| NFR-003 | 不收集用户个人数据 | 必须 |
| NFR-004 | 不包含广告 | 必须 |
| NFR-005 | 无第三方追踪 SDK | 必须 |
| NFR-006 | ETA API 请求超时设定为 10 秒 | 必须 |
| NFR-007 | KMB API 请求间隔不少于 500ms(速率限制) | 必须 |
| NFR-008 | 所有数据储存在装置本地,不上传服务器 | 必须 |
6. 数据来源
| 交通工具 | API 来源 |
| 九巴 KMB | data.etabus.gov.hk |
| 城巴 Citybus | rt.data.gov.hk(CTB ETA API) |
| 港铁 MTR | rt.data.gov.hk(Next Train API) |
| 渡轮 Ferry | 运输署公开资料(静态时间表) |
1. Introduction
HKTranApp is an iOS application that provides real-time public transport arrival information for Hong Kong residents and visitors, covering buses, MTR, and ferries.
2. Target Users
- Daily commuters in Hong Kong
- Users who need real-time transit arrival information
- Tourists visiting Hong Kong
3. Functional Requirements
3.1 Real-time ETA
| ID | Requirement | Priority |
| FR-001 | Display KMB real-time arrival times | Must |
| FR-002 | Display Citybus real-time arrival times | Must |
| FR-003 | Display MTR real-time schedules and platform info | Must |
| FR-004 | Display ferry schedules | Should |
| FR-005 | Auto-refresh ETA every 30 seconds | Must |
| FR-006 | Display special service routes (e.g. additional departures) | Nice |
3.2 Route Search
| ID | Requirement | Priority |
| FR-010 | Search by route number (e.g. "87D") | Must |
| FR-011 | Search by stop name or destination | Must |
| FR-012 | Support Traditional Chinese, Simplified Chinese, and English search | Must |
| FR-013 | Show recent search history | Should |
| FR-014 | Offline search using downloaded route index | Must |
3.3 Favorites & Personalization
| ID | Requirement | Priority |
| FR-020 | Users can save route + stop combinations | Must |
| FR-021 | Support multiple watch list groups (max 5, e.g. "Work", "Weekend") | Must |
| FR-022 | Each group holds max 10 route cards | Must |
| FR-023 | Rename, delete, and reorder groups | Should |
| FR-024 | Prompt on duplicate saves | Must |
3.4 Stop Browser
| ID | Requirement | Priority |
| FR-030 | Display full stop list for selected route | Must |
| FR-031 | Support outbound/inbound direction switching | Must |
| FR-032 | Only show directions that have stop data | Should |
| FR-033 | Show real-time ETA preview per stop | Should |
3.5 Offline & Network
| ID | Requirement | Priority |
| FR-040 | First launch requires network to download route index | Must |
| FR-041 | Show cached ETA data when offline | Must |
| FR-042 | Display offline mode indicator | Must |
| FR-043 | Auto-resume live updates when network restores | Must |
3.6 User Interface
| ID | Requirement | Priority |
| FR-049 | Show welcome screen on first launch | Should |
| FR-050 | Support light and dark mode | Must |
| FR-051 | Support portrait and landscape orientation | Should |
| FR-052 | Provide trilingual UI (Traditional Chinese, Simplified Chinese, English) | Must |
4. ETA State Display
Each route card displays a visual state based on data freshness and network conditions:
| State | Condition | Display |
| Fresh | Cache < 90s | Full opacity |
| Stale | Cache 90s – 5min | 80% opacity, amber clock |
| Offline | Cache 5–30min or no network | 60% opacity, offline icon |
| Error | Cache > 30min or API failure | Red triangle icon |
| No Service | API returns empty array | "No Service" + moon icon |
| Degraded | ETA > 120min | "Tap to view stop name" |
| Loading | First load, no cache | Spinner |
5. Non-Functional Requirements
| ID | Requirement | Priority |
| NFR-001 | Support iOS 16.0 or later | Must |
| NFR-002 | No registration or login required | Must |
| NFR-003 | No collection of user personal data | Must |
| NFR-004 | No advertisements | Must |
| NFR-005 | No third-party tracking SDKs | Must |
| NFR-006 | ETA API request timeout of 10 seconds | Must |
| NFR-007 | KMB API request interval ≥ 500ms (rate limiting) | Must |
| NFR-008 | All data stored locally on device, no server upload | Must |
6. Data Sources
| Transport | API Source |
| KMB | data.etabus.gov.hk |
| Citybus | rt.data.gov.hk (CTB ETA API) |
| MTR | rt.data.gov.hk (Next Train API) |
| Ferry | Transport Department Open Data (static timetables) |