visionA 雲端版前端 — 沿用 local-tool 既有 UI(原則 4:先抄 local-tool)+
新增雲端特有的登入 / 配對 / 設定流程,含以下整合階段:
- Phase 0:13 頁 + 30+ 元件 + 雛形 banner
- dashboard / devices / models / workspace / clusters / settings 等頁
- AppShell + Sidebar + Header + tokens + i18n(中英雙語 96 keys)
- API client + 5 stores + 3 hooks
- Phase 0.6:OIDC redirect 改造
- login 頁改為 OIDC redirect(`window.location.href = /api/auth/login`)
- register 改說明頁、account 改唯讀(user 資料來源是 MC)
- api client 改 cookie session(credentials: include)+ 完全清掉 localStorage
- Phase 0.7:stage 部署 + nil guard
- getApiBaseUrl() 修:browser 環境視為 same-origin(與 login 頁一致)
- login 頁加「已登入 → router.replace('/')」effect
- User type email/name 改 optional(MC id_token 不一定回 email/name claim)
- header.tsx UserMenu displayName 4 層 fallback:name → email → id → i18n
- 雛形 banner 文案更新(已接 Innovedus 帳號中心)+ 版號 Phase 0.7
驗證:pnpm lint / test (125/125) / build 全綠
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
44 lines
1.1 KiB
JSON
44 lines
1.1 KiB
JSON
{
|
||
"name": "visiona-frontend",
|
||
"version": "0.1.0",
|
||
"private": true,
|
||
"description": "visionA Cloud 前端(Phase 0 雛形骨架)",
|
||
"scripts": {
|
||
"dev": "next dev",
|
||
"build": "next build",
|
||
"start": "next start",
|
||
"lint": "eslint",
|
||
"test": "vitest run",
|
||
"test:watch": "vitest"
|
||
},
|
||
"dependencies": {
|
||
"class-variance-authority": "^0.7.1",
|
||
"clsx": "^2.1.1",
|
||
"lucide-react": "^0.575.0",
|
||
"next": "16.1.6",
|
||
"next-themes": "^0.4.6",
|
||
"radix-ui": "^1.4.3",
|
||
"react": "19.2.3",
|
||
"react-dom": "19.2.3",
|
||
"sonner": "^2.0.7",
|
||
"tailwind-merge": "^3.5.0",
|
||
"tw-animate-css": "^1.4.0",
|
||
"zustand": "^5.0.11"
|
||
},
|
||
"devDependencies": {
|
||
"@tailwindcss/postcss": "^4",
|
||
"@testing-library/jest-dom": "^6.9.1",
|
||
"@testing-library/react": "^16.3.2",
|
||
"@types/node": "^20",
|
||
"@types/react": "^19",
|
||
"@types/react-dom": "^19",
|
||
"@vitejs/plugin-react": "^5.1.4",
|
||
"eslint": "^9",
|
||
"eslint-config-next": "16.1.6",
|
||
"jsdom": "^28.1.0",
|
||
"tailwindcss": "^4",
|
||
"typescript": "^5",
|
||
"vitest": "^4.0.18"
|
||
}
|
||
}
|