61 lines
2.5 KiB
Markdown
61 lines
2.5 KiB
Markdown
# Frontend TaskPlan
|
||
|
||
## 目標
|
||
完成 member.ose.tw 前端(Vue3 + JS + Vite + Element Plus + Tailwind),支援 OIDC 登入、個人資料查看、權限管理(Schema v2)。
|
||
|
||
## Phase 1: 基礎框架 ✅
|
||
- [x] Vite + Vue3 專案結構
|
||
- [x] Element Plus + Tailwind 基礎接入
|
||
- [x] Router 與頁面骨架
|
||
- [x] Pinia store(auth + permission)
|
||
- [x] Axios 分離 user/admin client
|
||
- [x] Production build 可通過
|
||
|
||
## Phase 2: OIDC 登入流程 ✅
|
||
- [x] `LoginPage`(OIDC 前往按鈕,跳轉 Authentik)
|
||
- [x] `AuthCallbackPage`(接收 code,交換 access_token)
|
||
- [x] Token 自動存儲與路由守衛
|
||
- [x] 401 時自動導向重新登入
|
||
|
||
## Phase 3: 用戶資訊與權限 ✅
|
||
- [x] `MePage`(`GET /me` 顯示個人資料)
|
||
- [x] `PermissionSnapshotPage`(`GET /me/permissions/snapshot`)
|
||
- [x] 表格新增 `system` 欄位(Schema v2)
|
||
|
||
## Phase 4: 管理員授權(v1) ✅
|
||
- [x] `PermissionAdminPage`(直接 grant/revoke 使用者)
|
||
- [x] Payload 新增 `system` 必填、`module` 改為選填
|
||
- [x] `scope_type` 改為 company/site 下拉選單
|
||
|
||
## Phase 5: Schema v2 管理頁面 ✅
|
||
- [x] API 層:systems、modules、companies、sites、members、permission-groups
|
||
- [x] Store:admin.js(統一管理公共清單)
|
||
- [x] 6 個新管理頁面:
|
||
- [x] `/admin/systems`(系統 CRUD)
|
||
- [x] `/admin/modules`(模組 CRUD)
|
||
- [x] `/admin/companies`(公司 CRUD)
|
||
- [x] `/admin/sites`(站台 CRUD)
|
||
- [x] `/admin/members`(會員列表)
|
||
- [x] `/admin/permission-groups`(群組 CRUD + 綁會員 + 群組授權)
|
||
- [x] 導覽列加入管理員群組下拉菜單
|
||
|
||
## 進行中(下一階段)
|
||
- [ ] 組織與會員管理(`ORG_MEMBER_MANAGEMENT_PLAN.md`)
|
||
- [ ] 路由守衛策略完善(是否限制某些管理頁)
|
||
- [ ] 錯誤訊息 i18n 與統一顯示格式
|
||
|
||
## 待辦(上線前)
|
||
- [ ] 增加 e2e / UI smoke 測試
|
||
- [ ] 優化 bundle size(目前 main chunk 1.2MB,需考慮 lazy loading)
|
||
- [ ] 加入環境切換策略(dev/staging/prod)
|
||
- [ ] 加入登入來源與 token 取得說明頁
|
||
|
||
## 驗收條件(Schema v2)
|
||
- [x] 未登入時導向登入頁 → OIDC 流程 ✅
|
||
- [x] 登入後可穩定讀取 `/me` 與快照 ✅
|
||
- [x] 可新增 system/module/company/site ✅
|
||
- [x] 可做用戶直接 grant/revoke(新 payload) ✅
|
||
- [x] 可建立 permission-group、加會員、群組 grant/revoke ✅
|
||
- [x] `/me/permissions/snapshot` 表格可顯示 system + module + action ✅
|
||
- [x] 與後端契約文件一致 ✅
|