0cd1047b10
Run Tests / test (pull_request) Successful in 30s
repo 內 35/38 份既有 spec 都是舊版歸檔流程留下的原始 delta 內容(`## ADDED Requirements`,缺標題與 Purpose),openspec CLI 現版本嚴格驗證 (--strict)會報錯或警告。逐一補上: - 缺標題/Purpose 的 30 份:加上 `# <name> Specification` 標題 + 依內容 撰寫的 Purpose 段落,`## ADDED Requirements` 改回 `## Requirements` - compose-cloud-baseline、scheduler-container:已有標題與 Requirements,只補 Purpose 包裝 - provider-verification:已有標題與 Purpose,只需把 `## ADDED Requirements` 改回 `## Requirements` - admin-user-management、notification-email:各有一條 requirement 缺 SHALL/MUST 關鍵字(純敘述句或表格),補上規範用語,內容不變 `openspec validate --specs --strict`:38/38 全過(原本 4/38)。純文件 補齊,未變更任何 requirement 的實質內容或行為描述。 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011LpcY9b7y9x4fusHBTXciQ
2.4 KiB
2.4 KiB
diving-offers-api Specification
Purpose
定義公開的課程列表與課程詳情 API,支援關鍵字搜尋、地區與標籤篩選、分頁,以及前端開發 origin 的 CORS 設定。
Requirements
Requirement: 課程列表 API
後端 SHALL 提供公開的 GET /api/diving-offers endpoint,回傳分頁的潛水課程列表,支援關鍵字搜尋與篩選,無需認證即可存取。response 中每筆課程包含 provider_id 欄位(可為 null)。
Scenario: 取得全部課程列表
- WHEN 客戶端發送
GET /api/diving-offers且不帶任何參數 - THEN 回傳 HTTP 200,body 包含
{ data: [...], meta: { total, per_page, current_page } },預設每頁 12 筆,每筆資料含provider_id
Scenario: 依關鍵字搜尋課程
- WHEN 客戶端發送
GET /api/diving-offers?q=墾丁 - THEN 回傳
title或location包含「墾丁」的課程列表
Scenario: 依地區篩選課程
- WHEN 客戶端發送
GET /api/diving-offers?region=南部 - THEN 只回傳
region欄位等於「南部」的課程
Scenario: 依標籤篩選課程
- WHEN 客戶端發送
GET /api/diving-offers?tag=初學者 - THEN 只回傳
tag欄位包含「初學者」的課程
Scenario: 分頁參數
- WHEN 客戶端發送
GET /api/diving-offers?page=2&per_page=6 - THEN 回傳第 2 頁資料,每頁 6 筆,
meta包含正確的分頁資訊
Requirement: 課程詳情 API
後端 SHALL 提供公開的 GET /api/diving-offers/{id} endpoint,回傳單一課程完整資訊,無需認證即可存取。
Scenario: 取得存在的課程詳情
- WHEN 客戶端發送
GET /api/diving-offers/1(該 id 存在) - THEN 回傳 HTTP 200,body 包含
{ data: { id, title, location, spot, rating, reviews, price, badges, description, tag, region, created_at } }
Scenario: 課程不存在
- WHEN 客戶端發送
GET /api/diving-offers/99999(該 id 不存在) - THEN 回傳 HTTP 404,body 包含
{ message: "課程不存在" }
Requirement: CORS 允許前端 Origin
後端 SHALL 在 config/cors.php 中允許來自前端開發 origin(http://localhost:5173)的跨域請求。
Scenario: 前端跨域請求課程列表
- WHEN 瀏覽器從
http://localhost:5173發送GET /api/diving-offers - THEN 後端回應包含正確的 CORS header,瀏覽器不阻擋請求