Files
CFDivePlatform/openspec/changes/archive/2026-06-11-audit-remediation/tasks.md
T
a620906209 a97a7d096c
Run Tests / test (pull_request) Successful in 2m2s
chore(openspec): 補歸檔 2026-06-11-audit-remediation change
事後補齊本次稽核修補的 OpenSpec 歷史紀錄(proposal / design /
tasks / 規格增量),主規格已於實作時直接更新,本 archive 僅為
變更軌跡。design.md 記錄 5 項關鍵決策(artisan command 取代
HTTP 端點、10/min 為基準、列表過濾而非禁止上架等)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 18:44:14 +08:00

43 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 1. T1.1 封鎖 admin/registerP0
- [x] 1.1 移除 `routes/api.php` 的公開 `POST /api/admin/register` 路由
- [x] 1.2 移除 `AuthController::registerAdmin()` 方法
- [x] 1.3 移除 `app/Docs/AuthApiDoc.php` 對應 Swagger 區塊
- [x] 1.4 新增 `app/Console/Commands/CreateAdminUser.php``app:create-admin`,密碼 min:8,支援 --position / --department,未帶 --password 時互動式輸入)
- [x] 1.5 [整合測試] `AdminAccountCreationTest`:端點回 404 不建帳號、command 建立 admin+profile、重複 email 失敗、弱密碼失敗(4 案例)
- [x] 1.6 更新 `admin-auth` 規格:新增「管理員帳號建立途徑」requirement
- [x] 1.7 確認前端無 admin 註冊入口(無引用)、Seeder 不受影響
## 2. T1.2 同步 login-rate-limiting 規格
- [x] 2.1 規格門檻 5/min → 10/min(與 `throttle:10,1` 實作及 AuthRateLimitTest 一致),註記放寬理由
## 3. T2.1 is_verified 最小業務語意(P1
- [x] 3.1 `DivingOffer` 新增 `scopeVisibleToPublic`provider_id null 或教練已驗證)
- [x] 3.2 `DivingOfferController` 公開 index / show 套用 scope
- [x] 3.3 `AdminUserController::toggleProviderVerified` 後 flush `diving_offers` 快取 tag
- [x] 3.4 新增 `provider-verification` 規格(含已知限制 Notes
- [x] 3.5 [整合測試] `DivingOfferVisibilityTest`:列表含已驗證/排除未驗證/null 不受限、詳情 404、toggle 立即生效(快取失效)、教練自有端點不受限(7 案例)
## 4. T3.1 預約核心測試(P2
- [x] 4.1 [整合測試] `BookingLifecycleTest`:狀態機合法/非法轉移、pending 不佔名額、價格快照、24h 取消截止、名額釋放、跨用戶授權邊界(17 案例)
- [x] 4.2 [整合測試] `BookingOversellTest`confirm 時防超賣不變式、full 擋新預約、釋放後可再確認(3 案例)
- [x] 4.3 [整合測試] `BookingSchedulerTest``app:expire-pending-bookings` 48h 邊界、`app:complete-finished-bookings` 日期邊界與通知(6 案例)
- [x] 4.4 [整合測試] `BookingChatAuthTest`HTTP 端點與 presence channel 雙防線(8 案例)
- [x] 4.5 [整合測試] `AdminEndpointAuthTest`:六個 admin GET 端點 401/403/200 矩陣、Admin 不可繞過狀態機(5 案例)
## 5. T4 規格清理
- [x] 5.1 補 `auth-test-coverage` 歸檔遺留的 TBD Purpose
- [x] 5.2 `auth-test-coverage` admin register 場景改寫為「公開註冊端點保持關閉」
- [x] 5.3 同步移除 `AuthLoginTest` 中測已刪端點的 2 個測試
- [x] 5.4 修正 `member-portal-ui` 前端 repo 描述(實際位於本 repo `frontend/`
- [x] 5.5 `admin-auth` 補 check-member / check-provider 查詢端點規格
## 6. 驗證
- [x] 6.1 容器內 `php artisan test` 全綠:146 passed / 378 assertions
- [x] 6.2 確認本機 CourseImageTest 失敗為環境因素(laragon PHP 缺 GD),非回歸