S

SportLink

Dynamic Modeling

Sequence Diagram

sequenceDiagram autonumber actor User as 一般會員 actor Host as 主揪 participant UI as App 介面 participant Ctrl as 系統控制器 participant DB as 資料庫實體 Note over User, DB: 階段一:帳號註冊與能力自評 User->>UI: 填寫個資註冊帳號 UI->>DB: INSERT users User->>UI: 填寫運動能力自評 (Level) UI->>DB: UPDATE users UI-->>User: 註冊完成 Note over Host, DB: 階段二:資源檢索與動態防呆預約 Host->>UI: 搜尋場地並點擊「預約」 UI->>Ctrl: reserveSlot(slot_id) Ctrl->>Ctrl: 內部演算:計算動態鎖定時間 Ctrl->>DB: UPDATE time_slots (status='Locked') UI-->>Host: 顯示結帳倒數,等待確認 Host->>UI: 確認付款與招募條件,建立球局 UI->>Ctrl: createGameSession(settings) Ctrl->>DB: UPDATE time_slots (status='Booked') Ctrl->>DB: INSERT game_sessions (status='Recruiting') UI-->>Host: 球局建立成功,進入管理主控台
sequenceDiagram autonumber actor Joiner as 尋找場地者 actor Host as 主揪 participant UI as App 介面 participant Radar as 雷達控制器 participant Fin as 帳務控制器 participant DB as 資料庫實體 Host->>UI: 開啟「LBS 雷達招募」 UI->>Radar: activateRadar(session_id, radius) Radar->>DB: UPDATE game_sessions (is_radar_active=true) Radar-->>Joiner: LBS 空間推播 (附近有缺咖球局) Joiner->>UI: 發送「加入請求」 UI->>DB: INSERT participants (status='Pending') Radar-->>Host: 收到加入申請通知 Host->>UI: 審核檔案並點選「同意加入」 UI->>DB: UPDATE participants (status='Approved') Note over UI, DB: 觸發動態計費機制 UI->>Fin: recalculateFee(session_id) Fin->>DB: 撈取 TimeSlot 總價與 Approved 總人數 Fin->>Fin: 總價 / 總人數 = 每人應繳費用 Fin-->>UI: 推播最新帳單金額給所有參與者
sequenceDiagram autonumber actor User as 欲退坑會員 participant UI as App 介面 participant Ctrl as 稽核引擎 (AuditCtrl) participant DB as 資料庫實體 User->>UI: 點擊「取消報名」 UI->>Ctrl: requestCancel(user_id, session_id) Ctrl->>DB: 撈取 game_sessions.lock_time alt 當前時間 < lock_time (正常退出) Ctrl->>DB: DELETE participants Ctrl-->>UI: 退出成功 (無懲罰) else 當前時間 >= lock_time (逾時退坑) Ctrl-->>UI: 觸發防呆:詢問是否「照常付費」 alt 選擇 [願意付費] User->>UI: 確認付費 UI->>DB: UPDATE participants (status='Paid_Absent') Ctrl-->>UI: 維持信用積分 else 選擇 [拒絕付費] User->>UI: 堅持退出 UI->>DB: UPDATE participants (status='Malicious_Dropout') Note over Ctrl, DB: 執行階梯式扣分演算法 Ctrl->>DB: 查詢該員近期退坑次數 Ctrl->>Ctrl: 計算扣除分數 Ctrl->>DB: UPDATE users (扣除 credit_score) end end