feat:實作預約系統 — 時段管理、預約生命週期與前端整合
後端: - 新增 course_schedules / bookings migration(含索引) - BookingStatus / ScheduleStatus PHP BackedEnum - CourseSchedule / Booking Model(七狀態機 VALID_TRANSITIONS) - ScheduleController、ProviderBookingController、MemberBookingController - 雙層名額驗證(API 層快速失敗 + DB lockForUpdate 防超賣) - 24h 取消截止、pending 不佔位設計 - ExpirePendingBookings(每小時)/ CompleteFinishedBookings(每日)Scheduler - Docker cron 配置、CACHE_STORE 改為 file 修正 502 前端: - 課程詳情頁加入時段選擇與預約流程 - 我的預約頁(展開式卡片、狀態說明、連結課程詳情) - Coach 時段管理(上午/下午時間選擇器、新課程引導) - Coach 預約管理(依課程分組、待確認徽章) - Navbar 新增「我的預約」與「時段/預約管理」入口 - 密碼格式提示與即時比對 OpenSpec: - booking-system change 歸檔至 archive/2026-05-12-booking-system - 新增 specs/course-scheduling 與 specs/booking-lifecycle 主規格 Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
## Why
|
||||
|
||||
CFDivePlatform 目前只有課程瀏覽,Member 無法預約課程,Provider 無法管理開課時段,平台缺少核心商業閉環。預約系統是金流整合與平台商業化的前置條件,必須優先實作。
|
||||
|
||||
## What Changes
|
||||
|
||||
- 新增 `course_schedules` 資料表:Provider 建立開課時段(日期、時間、人數上限)
|
||||
- 新增 `bookings` 資料表:記錄 Member 預約紀錄,含價格快照
|
||||
- 新增 Member API:查詢可用時段、送出預約、取消預約
|
||||
- 新增 Provider API:管理開課時段 CRUD、接受/拒絕/取消預約
|
||||
- 新增 Laravel Scheduler:pending 超 48 小時自動 expired;課程日期過後自動 completed
|
||||
- 新增前端頁面:Member 課程詳情頁加入時段選擇與預約流程;Provider Dashboard 加入時段管理與預約管理
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `course-scheduling`:Provider 建立與管理開課時段,含日期、時間、人數上限、狀態(open/full/cancelled)
|
||||
- `booking-lifecycle`:Member 送出預約、取消預約;Provider 確認/拒絕/取消預約;系統自動過期與完成;七狀態狀態機(pending / confirmed / completed / rejected / expired / member_cancelled / provider_cancelled)
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
(無既有 spec 受影響)
|
||||
|
||||
## Impact
|
||||
|
||||
**後端**
|
||||
- 新增 Migration:`course_schedules`、`bookings`
|
||||
- 新增 Model:`CourseSchedule`、`Booking`
|
||||
- 新增 Controller:`ScheduleController`(Provider)、`BookingController`(Member/Provider)
|
||||
- 新增 Laravel Scheduler:`ExpirePendingBookings`、`CompleteFinishedBookings`
|
||||
- 更新 `api.php`:新增 `/member/bookings`、`/member/schedules`、`/provider/schedules`、`/provider/bookings` 路由群組
|
||||
|
||||
**前端**
|
||||
- 更新 `CourseDetail.vue`(或新建):加入時段列表與預約按鈕
|
||||
- 新增 `src/pages/member/MyBookings.vue`:我的預約列表
|
||||
- 新增 Coach Dashboard 子頁面:`ScheduleManager.vue`、`BookingManager.vue`
|
||||
- 新增 `src/api/bookingApi.js`:封裝預約相關 API 呼叫
|
||||
|
||||
**資料庫**
|
||||
- 兩張新資料表,無現有資料表結構變更
|
||||
- `diving_offers.price` 作為預約時的價格快照來源
|
||||
Reference in New Issue
Block a user