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>
39 lines
2.3 KiB
Plaintext
39 lines
2.3 KiB
Plaintext
# visionA Cloud Frontend — 環境變數範本
|
||
#
|
||
# 複製一份為 `.env.local`,並依實際環境填入。
|
||
# `.env.local` 由 .gitignore 忽略,**切勿 commit**。
|
||
#
|
||
# 所有 runtime 變數都以 `NEXT_PUBLIC_` 開頭(Next.js 要求前端可讀)。
|
||
# ⚠️ 因此不要放真正機密的值——這類值應走後端 API。
|
||
|
||
# 後端 API server base URL(不含 trailing slash)
|
||
# 預設對應 visionA-backend 本地開發 port(TDD §1.4 api-server 預設 3001;
|
||
# F5 雛形階段允許以 3721 對應 local-tool 既有後端,以方便整合測試)
|
||
#
|
||
# ⚠️ BFF Pattern(OF2 / Phase 0.6 OIDC 之後):
|
||
# - 所有 API 請求帶 `credentials: 'include'`,瀏覽器會自動攜帶 backend 設的
|
||
# `visiona_session` HttpOnly cookie。
|
||
# - 跨 origin(本範例:frontend localhost:3000 ↔ backend localhost:3721)時,
|
||
# backend CORS 必須回傳:
|
||
# * `Access-Control-Allow-Credentials: true`
|
||
# * `Access-Control-Allow-Origin: http://localhost:3000`(明確 origin,**禁止 `*`**)
|
||
# - 上述條件任一不符 → 瀏覽器會在 console 報 CORS 錯誤、fetch 拋 NetworkError。
|
||
# - 同 origin 部署(prod 通常將 frontend / backend 放同網域)時無此限制。
|
||
NEXT_PUBLIC_API_BASE=http://localhost:3721
|
||
|
||
# WebSocket base URL(通常是 API base 改 ws/wss;同源部署時可留空讓前端自動推導)
|
||
NEXT_PUBLIC_WS_BASE=ws://localhost:3721
|
||
|
||
# Innovedus Member Center 註冊頁 URL(Phase 0.6 OIDC 接入;對齊 oidc-tdd.md §10.1 / §10.5)
|
||
# - login 頁的「前往註冊」連結會指向這裡(在新分頁開啟)
|
||
# - register 頁的「前往 Innovedus 帳號中心」按鈕也會跳到這裡(同分頁完整導航)
|
||
# - 未設定(或留空)→ 兩處 UI 均會 disable(aria-disabled="true")
|
||
# - dev 預設指向 Member Center 本地 dev port 5050
|
||
NEXT_PUBLIC_MEMBER_CENTER_REGISTER_URL=http://localhost:5050/account/register
|
||
|
||
# Innovedus Member Center profile 頁 URL(Phase 0.6 OIDC 接入;對齊 oidc-tdd.md §10.3)
|
||
# - /account 頁「前往 Innovedus 帳號中心」按鈕會指向這裡(在新分頁開啟)
|
||
# - 未設定(或留空)→ 按鈕會被替換為「未設定」hint
|
||
# - dev 預設指向 Member Center 本地 dev port 5050
|
||
NEXT_PUBLIC_MEMBER_CENTER_PROFILE_URL=http://localhost:5050/account/profile
|