本章定義 Fugu 團隊負責的 App 開發範圍:使用 React Native 開發跨平台 App,包含 BLE 設備整合、本地資料管理、以及 API Client 實作。
📚 本章節文件結構¶
03.1 App 架構¶
- React Native 技術堆疊 (TypeScript, react-native-ble-plx)
- App 分層架構 (UI Layer / Service Layer / Data Layer)
- 核心模組:WorkoutEngine, BLEManager, APIClient, StorageService
- 狀態管理方案 (Redux Toolkit / Zustand)
- 開發環境設定
適合對象:React Native 開發者、App 架構師
03.2 BLE 設備整合¶
- 支援設備 (SolidFocus Bike 含阻力控制, Rower 僅讀取)
- FTMS v1.0.1 GATT Services & Characteristics
- BLE 連線狀態機 (Disconnected → Scanning → Connecting → Ready)
- 資料解析 (Indoor Bike Data, Rower Data) 含 TypeScript 範例
- 控制指令 (Resistance Control Point) 使用 react-native-ble-plx
- 權限處理 (iOS & Android)
適合對象:React Native BLE 開發者、設備整合工程師
參考文件:external/SolidFocus FTMS v1.0.1 整合規範.pdf
03.3 資料流與同步策略¶
- 設計原則:Offline-First, Mobile Data First
- 資料來源定義:Local DB vs Server DB
- 完整 Flow 定義:
- Flow 1: App 啟動流程(何時讀 Local / 何時呼叫 API)
- Flow 2: 登入與資料同步(Login 後如何處理 Local 與 Server 資料)
- Flow 3: 開始運動流程(完全 Local,不使用網路)
- Flow 4: 運動結束與上傳(背景非阻塞上傳)
- Flow 5: 查看歷史記錄(從 Local 立即顯示)
- Flow 6: 登出流程(處理 Pending Sessions)
- Flow 7: 課程列表顯示(快取策略)
- Flow 8: Token Refresh(自動重試)
- 錯誤處理與 Retry 策略
03.4 本地資料庫 Schema¶
- 技術選型:為何選擇 WatermelonDB
- Schema 設計:5 個 Tables (users, sessions, trainings, training_videos, sync_queue)
- Models 定義:完整的 TypeScript Model 範例
- 使用範例:CRUD 操作、React 整合、自動更新 UI
- 同步策略:上傳 Pending Sessions、下載 Server Sessions
🔗 相關章節¶
- 第 2 章:系統架構 - 系統整體架構
- 第 4 章:API Contract - Backend API 規格 (Fugu + SolidFocus 協作)
下一步:閱讀 03.1 App 架構 了解 App 架構設計。