Files
CFDivePlatform/openspec/specs/admin-stats/spec.md
T
a620906209 ad2c05779d feat:實作 Admin Panel — 平台管理後台
後端:
- AdminStatsController:總會員/教練/課程數統計 API
- AdminUserController:會員與教練列表、詳情、啟用/停用、教練驗證(toggle 反轉語意)
- AdminOfferController:全平台課程列表與刪除
- routes/api.php:新增 /api/admin/stats、members、providers、offers 等路由

前端(frontend/):
- adminAuth store、adminAxios(第三套獨立認證)
- /admin/* 路由群組 + requiresAdmin guard
- AdminNavBar、AdminLayout
- App.vue:isCoachPage → isBackofficePage(/coach/* 和 /admin/* 皆隱藏會員 NavBar)
- LoginView、DashboardView(統計卡片)
- MembersView、ProvidersView(含驗證操作)、OffersView(含刪除確認)

OpenSpec:
- 新增 specs:admin-auth / admin-user-management / admin-offer-management / admin-stats / admin-panel-ui
- 歸檔:openspec/changes/archive/2026-05-10-admin-panel

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
2026-05-10 04:07:13 +08:00

13 lines
528 B
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.
## ADDED Requirements
### Requirement: 平台統計數據 API
後端 SHALL 提供 `GET /api/admin/stats`(需 Bearer tokenrole=admin),回傳平台核心數據。
#### Scenario: 取得統計數據
- **WHEN** 管理員送出 GET /api/admin/stats
- **THEN** 回傳 HTTP 200`{ status: true, data: { total_members: N, total_providers: N, total_offers: N } }`
#### Scenario: 非管理員存取
- **WHEN** 非 admin role 的 token 送出請求
- **THEN** 回傳 HTTP 403`{ status: false, message: "無權限存取" }`