Skip to content

shadowcollecter/GPU-Service-FE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI Notebook Execution Platform - 前端產品需求文件 (PRD)


0. 專案啟動與開發指引

推薦開發環境

安裝依賴

npm install

開發模式(熱重載)

npm run dev

生產環境建置

npm run build

型別檢查、編譯與壓縮

npm run build

單元測試(Vitest)

npm run test:unit

端對端測試(Playwright)

npx playwright install # 首次需安裝瀏覽器
npm run build # CI 或正式測試前需先建置
npm run test:e2e # 執行所有瀏覽器測試
npm run test:e2e -- --project=chromium # 僅測試 Chromium
npm run test:e2e -- tests/example.spec.ts # 指定檔案測試
npm run test:e2e -- --debug # 除錯模式

程式碼檢查(ESLint)

npm run lint

重要更新紀錄

  • 新增「指定模型」輸入欄位於 LLM 安全檢查 API 金鑰區塊,placeholder 為「例如:gpt-4」。
  • 儲存與測試時一併傳送 model 欄位。
  • 所有文案皆為正體中文。
  • 兩欄位排版優化,並排顯示。
  • 側邊欄 logo 圖片放大,並移除原本的文案。
  • 登入機制改為自行管理:不使用 Keycloak,僅支援兩種登入方式:
    1. 學校 OAuth(由後端串接學校 OAuth 流程並發 token)
    2. 帳號密碼(由後端驗證並發 token) 兩種方式皆由本系統後端統一管理與驗證。

學校 OAuth 登入流程

  1. 使用者於登入頁點擊「學校 OAuth 登入」按鈕。
  2. 前端觸發 handleOAuthLogin 方法,將 window.location.href 導向 /api/v1/auth/oauth/redirect。
  3. 瀏覽器跳轉至後端 /api/v1/auth/oauth/redirect,開始學校 OAuth 認證流程。
  4. 認證完成後,後端將使用者導回前端(通常帶有 token 或授權資訊)。
  5. 前端收到 token 後,完成登入並導向首頁或指定頁面。

此流程確保 OAuth 登入安全且由後端統一管理。


以下是針對「AI Notebook Execution Platform」前端設計的專屬產品需求文件 (PRD),旨在為前端開發團隊提供清晰的指導,定義使用者介面 (UI) 和使用者體驗 (UX) 的具體需求與實現細節。這份前端 PRD 提取自完整 PRD 中的相關內容,聚焦於前端的工作範圍、介面設計、功能需求與技術實現建議,並整合了之前討論的所有內容,包括檔案下載功能、LLM 安全檢查結果的反饋等。同時,本文件參考了最新的網頁搜尋結果(如 simran-pm.medium.com)以確保文件結構與業界最佳實踐一致,特別是前端與後端的責任劃分。


1. 產品概述

1.1 產品名稱

AI Notebook Execution Platform - Frontend

1.2 產品目標

打造一個基於 Vue.js 的前端應用,提供直觀、響應式的使用者介面,讓使用者能夠輕鬆上傳 Jupyter Notebook (.ipynb) 檔案、選擇執行資源、查看任務狀態、下載執行結果,並接收系統公告和其他通知。同時,為管理員提供全面的監控與管理介面,以便管理使用者、調整資源、監控系統與安全狀態。前端應用透過與後端 API 的互動,確保資料的即時更新與操作的流暢性,旨在提供優質的使用者體驗 (UX),如 simran-pm.medium.com 所述,透過 PRD 確保團隊對產品願景的一致理解。

1.3 目標使用者

  • 一般使用者:可上傳 .ipynb 檔案、選擇 GPU 資源與 VRAM 大小、查看系統公告、追踪任務狀態、下載執行完成的 .ipynb 輸出檔案。
  • 管理員:除具備一般使用者功能外,還可管理系統公告、監控系統資源與任務佇列、調整使用者時間、生成統計報表、審查安全檢查結果、配置安全檢查參數。

1.4 前端工作範圍概述

前端(Frontend)主要負責使用者介面的呈現與互動,使用戶能夠直觀地操作系統並接收反饋,主要工作內容包括:

  • 使用者介面設計與實現:基於 Vue.js 框架,實現使用者與管理員的 UI 界面,包括系統公告顯示、檔案上傳、資源選擇、佇列狀態顯示、任務狀態追踪與結果預覽等功能。
  • 使用者體驗優化:確保介面響應式設計,適配不同設備與屏幕尺寸,並優化頁面加載速度(首次加載時間不超 3 秒,組件響應不超 300 毫秒)。
  • 數據互動與實時更新:透過 Axios 調用後端 REST API 取得數據(如任務狀態、系統公告),並使用 WebSocket 或 Server-Sent Events (SSE) 實現佇列狀態與任務進度的實時更新。
  • 狀態管理與錯誤處理:使用 Pinia 管理前端狀態,處理 API 調用中的錯誤(如認證失敗、伺服器錯誤),並透過攔截器統一處理認證與錯誤提示。
  • 權限控制:使用 Vue 路由守衛實現基於角色的頁面訪問控制,確保一般使用者與管理員僅能訪問對應功能。
  • 檔案下載功能:實現使用者下載執行完成的 .ipynb 輸出檔案功能,透過調用後端 API 取得檔案流,並使用瀏覽器下載機制完成檔案下載。
  • 前端範圍限制:前端不處理業務邏輯(如安全檢查、任務調度),僅負責數據展示與使用者輸入收集,將複雜邏輯交由後端處理。

2. 功能需求

2.1 前端功能概述

前端應用應實現以下核心功能,確保一般使用者與管理員能夠高效完成各自的操作,並獲得良好的使用者體驗。

2.1.1 一般使用者功能

  • 系統公告查看:在首頁顯示最新公告,支持摺疊/展開內容,重要公告以視覺標記(如顏色、圖標)突出顯示,歷史公告可瀏覽。
  • 檔案上傳與任務上傳:提供拖放上傳介面,支援 .ipynb 檔案(上限 10 MB),並允許選擇是否需要 GPU 資源及指定 VRAM 大小 (7.9G, 15.9G, 23.9G, 31.9G, 63.9G, 79.9G)。
  • 使用時間顯示:以進度條或其他圖形化方式展示使用者剩餘時間與總使用時間,剩餘時間低於閾值(如 10 小時)時顯示警示。
  • 佇列狀態查看:顯示當前佇列深度(例如 20/40)與預估等待時間,若佇列滿則顯示「隊列已滿,請稍後重試」提示。
  • 任務狀態追踪:顯示已上傳任務的狀態(如等待中、執行中、完成、失敗),包含執行時間與資源使用情況。
  • 結果處理與下載:任務完成後,顯示輸出結果預覽,並提供下載 .ipynb 輸出檔案的功能,點擊下載按鈕觸發瀏覽器下載,檔案名稱易於識別(如 result_{submission_id}.ipynb)。若訪問被拒絕,顯示錯誤提示。
  • 通知接收:透過前端通知或電子郵件接收任務狀態更新與結果通知,可選擇將結果發送至指定郵箱。

2.1.2 管理員功能(額外功能)

  • 系統公告管理:支援公告的新增、編輯、刪除,設定優先級(一般、重要、緊急)與有效期。
  • 佇列管理:顯示佇列深度,提供「清空佇列」按鈕,操作前顯示確認對話框,確保誤操作防護。
  • 集群監控:視覺化呈現 CPU/GPU 使用率、佇列狀態與健康度,使用熱力圖展示資源熱點。
  • 資源控制:提供介面調整佇列配置參數(如優先級、配額)與上傳速率。
  • 使用者管理:查看使用者列表,支援搜尋與分頁,查看使用者詳細資訊,調整使用者剩餘時間。
  • 統計報表:生成使用統計報表,支援按時間、使用者等多維度過濾與排序,顯示圖表化數據。
  • 安全審核統計:查看因安全檢查被拒絕的任務統計,包含拒絕率趨勢與詳細記錄,允許檢視被拒絕檔案。
  • LLM 安全檢查管理:配置安全檢查參數(如風險指數閾值、提示詞模板),查看 LLM API 健康狀態(如成功率、響應時間),顯示風險指數分布圖表。
  • LLM 安全檢查 API 金鑰區塊新增「指定模型」欄位,placeholder 為「例如:gpt-4」。
  • 儲存與測試時會一併傳送模型名稱。
  • 所有文案皆為正體中文,欄位排版優化。

2.2 介面設計詳細需求

2.2.1 登入與導航

  • 登入頁面
    • 使用 Vue 表單組件實現簡單的登入介面,包含學校 OAuth 登入選項(透過 Keycloak 回調)。
    • 提供清晰的錯誤提示(如認證失敗)與加載狀態指示。
  • 導航菜單
    • 使用 Vue 側邊或頂部導航組件,根據使用者角色(一般使用者或管理員)動態顯示可訪問的選項。
    • 一般使用者選項:首頁、任務上傳、任務狀態、使用時間。
    • 管理員選項:包含一般使用者選項,另增加系統管理、佇列管理、使用者管理、統計報表、安全審核、資源監控。
    • 支援響應式設計,適配不同屏幕尺寸(桌機、手機、平板)。
    • 提供快速導航連結至首頁與個人資訊頁面。
  • 角色基於路由守衛:實現路由守衛機制,確保未授權使用者無法訪問管理員頁面,訪問被拒時顯示友好錯誤頁面(如 403 Forbidden,提示 "Access Denied")。

2.2.2 系統公告介面

  • 使用者公告檢視
    • 首頁展示有效期內的公告列表,最新公告置頂,重要與緊急公告以不同顏色或圖標標記(例如紅色驚嘆號)。
    • 支援公告內容摺疊/展開,避免佔用過多頁面空間,預設顯示標題與簡短摘要。
    • 提供「查看更多」按鈕,展開歷史公告列表,支援分頁顯示。
  • 管理員公告管理
    • 公告管理頁面包含列表視圖,展示所有公告(標題、優先級、時間範圍、狀態),支援分頁與過濾(按優先級或時間)。
    • 提供「新增公告」與「編輯」按鈕,彈出表單視窗,使用富文本編輯器(如 TinyMCE)編輯內容。
    • 新增/編輯表單包含標題、內容、優先級下拉選項(一般、重要、緊急)、開始與結束日期選擇器。
    • 支援公告刪除功能,刪除前顯示確認對話框。

2.2.3 任務上傳介面

  • 檔案上傳區域
    • 使用 Vue 拖放組件實現檔案上傳,支援單檔案選擇與拖放操作,顯示檔案格式限制(僅 .ipynb)與大小限制(10 MB)。
    • 上傳過程中顯示進度條,反映上傳百分比,上傳完成後顯示檔案名稱與成功訊息。
    • 若檔案不符合條件(如格式錯誤、大小超限),顯示錯誤提示(如 "File must be .ipynb and less than 10MB")並禁用上傳按鈕。
  • 資源選擇
    • 提供「是否需要 GPU」切換按鈕(如 Toggle Switch),預設為「否」。
    • 若選擇「是」,顯示 VRAM 大小下拉選項 (7.9G, 15.9G, 23.9G, 31.9G, 63.9G, 79.9G),旁邊顯示每個選項的可用狀態(如「可用」或「資源緊張」)與預估等待時間。
  • 佇列狀態顯示
    • 在上傳頁面頂部或底部顯示佇列狀態進度條(如 "Current Queue: 15/40"),並顯示預估等待時間(如 "Estimated Wait: 10 minutes")。
    • 若佇列已滿,顯示紅色警告訊息(如 "Queue is full. Please try again later."),並禁用上傳按鈕。
  • 上傳反饋
    • 上傳成功後,顯示成功訊息(如 "Task submitted successfully. ID: {submission_id}"),包含佇列位置與預估等待時間。
    • 若因 LLM 安全檢查被拒絕,顯示錯誤訊息(如 "Task rejected due to high risk code detected. Risk Score: {score}."),並提供查看詳細原因的連結(導向任務狀態頁)。
    • 若因佇列滿或時間不足被拒絕,顯示相應說明(如 "Submission failed. Queue is full." 或 "Insufficient remaining time.")。

2.2.4 任務監控介面

  • 任務列表
    • 使用 Vue 卡片或表格組件顯示使用者上傳的所有任務,包含任務 ID、狀態(等待中、執行中、完成、失敗)、上傳時間、資源類型(CPU/GPU)、執行時間。
    • 支援任務狀態徽章,透過不同顏色表示狀態(例如等待中為藍色、執行中為綠色、失敗為紅色)。
    • 支援分頁與過濾功能,使用者可按狀態或時間範圍篩選任務。
  • 任務詳情
    • 點擊任務卡片或表格行,展開詳細資訊頁面,顯示任務完整資訊,包括起始時間、結束時間(如有)、詳細資源使用情況(如 GPU VRAM 分配)。
    • 若任務完成,顯示「下載結果」與「發送至郵箱」按鈕;若任務失敗且與安全檢查相關,顯示拒絕原因(如 "Rejected due to high risk code. Risk Score: 9")。
  • 任務結果下載
    • 點擊「下載結果」按鈕,調用後端 API 取得檔案流,觸發瀏覽器下載,檔案名稱格式為 result_{submission_id}.ipynb
    • 若下載因未授權失敗,顯示錯誤提示(如 "Access denied. You do not have permission to download this file.")。
  • 任務結果郵件通知
    • 點擊「發送至郵箱」按鈕,彈出表單輸入郵箱地址,上傳後顯示成功訊息(如 "Result sent to your email.");若未授權,顯示錯誤提示。

2.2.5 使用時間展示

  • 時間概覽
    • 在個人資訊頁面或任務上傳頁面,使用進度條顯示使用者總使用時間與剩餘時間(如 "Used: 20h / Remaining: 80h")。
    • 若剩餘時間低於 1 小時,進度條顯示為警示顏色(如橙色或紅色),並顯示文字提示(如 "Low remaining time. Contact admin for extension.")。
  • 時間歷史
    • 提供「查看歷史」按鈕,顯示過去任務的時間記錄列表,包含任務 ID、執行時間範圍、耗時與狀態,支援分頁與時間過濾。

2.2.6 管理員儀表板

  • 資源使用概覽
    • 使用 ECharts 或 Chart.js 圖表組件,顯示 CPU 與 GPU 資源使用率折線圖或柱狀圖,包含即時數據與歷史趨勢(可切換時間範圍,如 1 小時、1 天)。
    • 顯示佇列深度進度條(分別顯示 CPU 與 GPU 佇列),如 "CPU Queue: 5/20, GPU Queue: 10/20"。
    • 顯示活躍使用者數與其他關鍵指標。
  • 集群狀態監控
    • 使用熱力圖或儀表盤展示集群資源分布與健康度,健康度以分數或顏色表示(如 80 分為綠色,<50 為紅色)。
    • 提供趨勢分析圖表,顯示資源使用高峰與瓶頸。
  • 智能資源控制面板
    • 提供表單或滑塊調整佇列參數,如 CPU/GPU 配額、優先級、上傳速率(例如每分鐘 5 至 15 個 workload)。
    • 顯示系統推薦的優化建議(如 "Increase GPU queue priority due to high wait time.")。
  • 佇列管理
    • 顯示佇列詳細列表,包含等待中任務的 ID、使用者和資源需求。
    • 提供「清空佇列」按鈕,點擊後彈出確認對話框,確認後發送請求至後端執行清空操作,操作成功後顯示通知。
  • 使用者管理
    • 使用表格組件顯示使用者列表,包含 ID、姓名、角色、剩餘時間、任務數量,支援搜尋(按 ID 或姓名)與分頁。
    • 點擊使用者行,顯示詳情頁,可調整剩餘時間,輸入調整值(正負秒數)與原因,上傳後顯示更新結果。
  • 統計報表
    • 提供過濾條件表單,包含時間範圍、特定使用者、排序方式(按時間或任務數),上傳後生成報表。
    • 報表使用圖表(例如柱狀圖展示每個使用者的使用時間)與表格呈現詳細數據,支援匯出(如 CSV 格式)。
  • 安全審核統計
    • 顯示被拒絕任務的統計圖表(例如按時間或風險指數分布的折線圖),包含總拒絕率與趨勢。
    • 提供被拒絕任務詳細列表,點擊可檢視拒絕原因與檔案內容(若後端提供)。
  • LLM 安全檢查管理
    • 提供 API 金鑰與模型設定(含儲存、測試功能),於同一區塊可直接輸入金鑰與模型並操作。
    • 提供 LLM 安全檢查參數設定(風險閾值、提示詞模板、失敗策略),以表單方式直接於頁面調整並儲存。
    • 顯示 LLM API 服務健康狀態(如調用成功率、平均響應時間),可手動重新整理。
    • 提供 LLM 安全檢查報告查詢(可依風險等級、日期篩選,顯示分布統計與詳細列表),查詢結果以表格與統計數據同頁顯示。
    • 以上功能皆於同一頁面以表單、查詢按鈕、表格等方式呈現,無需切換分頁。

2.3 前端效能與非功能需求

  • 頁面加載時間:首次頁面加載時間不超過 3 秒,確保快速響應。
  • 組件響應時間:UI 組件對使用者互動的反應時間不超過 300 毫秒。
  • 響應式設計:支援主流瀏覽器(Chrome, Firefox, Edge)與不同屏幕尺寸,從手機(320px)到桌機(1920px),確保介面可讀與可用。
  • 可訪問性 (Accessibility):遵循 WCAG 2.1 Level AA 標準,確保視障或聽障使用者可透過螢幕閱讀器操作介面,鍵盤導航支持所有功能。
  • 錯誤處理:對 API 調用失敗進行友好提示(如 "Network error. Please try again."),避免技術性錯誤訊息直接暴露給使用者。
  • 安全性:防止 XSS 與 CSRF 攻擊,確保使用者輸入經過消毒,透過攔截器統一處理認證過期(如自動導向登入頁)。

3. 技術實現建議

3.1 技術堆疊

  • Vue.js 框架:採用 Vue 3 與 TypeScript 開發,確保代碼類型安全與現代化。
  • 狀態管理:使用 Pinia 管理前端狀態,如使用者資訊、任務列表等,提升複雜組件間數據共享效率。
  • 路由管理:使用 Vue Router 實現頁面導航與角色基於權限控制。
  • HTTP 客戶端:使用 Axios 調用後端 REST API,實現數據取得與檔案下載,提供統一的錯誤處理與認證攔截器。
  • 實時更新:使用 WebSocket 或 Server-Sent Events (SSE) 實現任務狀態與佇列狀態的即時更新,避免頻繁輪詢。
  • UI 組件庫:選擇 Element Plus 或 Vuetify 作為 UI 組件庫,提供一致的視覺風格與快速開發體驗。
  • 圖表庫:使用 ECharts 或 Chart.js 實現資源使用、統計報表等數據視覺化功能。
  • 富文本編輯器:使用 TinyMCE 或 CKEditor 實現系統公告內容編輯,支持圖片與連結嵌入。

3.2 項目結構建議

  • 模塊化架構:將前端代碼按功能模塊組織,分為 views(頁面)、components(可重用組件)、services(API 調用服務)、store(狀態管理)等目錄。
  • 路由配置:在 router/index.ts 中定義路由表,透過 meta 屬性標記角色權限(如 meta: { roles: ['ADMIN'] }),由路由守衛檢查。
  • API 服務封裝:在 services/api 目錄下封裝 API 調用邏輯,按功能分文件(如 taskService.tsuserService.ts),統一處理錯誤與認證。
  • 組件設計:遵循原子設計原則(Atomic Design),將組件分為原子、分子、組織層級,提升可重用性與維護性。

3.3 檔案下載實現

  • 下載流程
    • 使用者點擊「下載結果」按鈕,前端調用後端 API 端點(如 GET /api/v1/task/result/{id}),攜帶 JWT Token。
    • 後端返回檔案流,響應頭設置為 Content-Type: application/octet-streamContent-Disposition: attachment; filename="result_{submission_id}.ipynb"
    • 前端使用 Blob 物件處理檔案流,創建臨時 URL 並觸發 <a> 標籤下載,確保檔案名稱正確顯示。
  • 錯誤處理
    • 若後端返回 403 Forbidden 或其他錯誤,前端解析 JSON 錯誤訊息(如 { "errorCode": "ACCESS_DENIED", "message": "You are not authorized to access this task result." }),顯示友好提示(如透過 Vue 通知組件顯示 "Access denied. You do not have permission to download this file.")。
  • 性能優化
    • 避免多次下載請求,設置按鈕防抖機制(如點擊後 2 秒內禁用按鈕)。
    • 對於大檔案,顯示下載進度條(若瀏覽器支援),提升使用者體驗。

3.4 實時更新實現

  • WebSocket 連接
    • 在前端初始化時,建立與後端的 WebSocket 連接(例如 ws://api.example.com/ws/updates),攜帶 JWT Token 進行認證。
    • 訂閱任務狀態與佇列更新事件,收到後端推送的消息後,更新前端狀態(如任務狀態從「等待中」變為「執行中」)。
  • SSE 替代方案
    • 若 WebSocket 不可用,可使用 Server-Sent Events,透過 EventSource API 接收後端推送的更新事件。
  • UI 更新
    • 使用 Vue 的響應式系統,確保收到更新後,UI 自動重新渲染(如佇列深度進度條更新、任務狀態徽章變色)。

3.5 錯誤處理與攔截器

  • 認證攔截
    • 在 Axios 請求攔截器中,自動為每個請求添加 Authorization: Bearer {token} 標頭,Token 從 Local Storage 或 Pinia 狀態中取得。
    • 若收到 401 Unauthorized 響應,清除 Token 並導向登入頁面,顯示提示(如 "Session expired. Please login again.")。
  • 錯誤提示
    • 對 400、403、500 等狀態碼的響應,解析後端返回的 JSON 錯誤訊息,透過 Vue 通知組件(如 Element Plus 的 ElNotification)顯示友好錯誤提示。
    • 對於網絡錯誤(如連接超時),顯示通用錯誤訊息(如 "Network error. Please check your connection.")。

3.6 構建與部署

  • 開發環境:使用 Vite 作為 Vue 開發服務器,支持熱重載與快速編譯。
  • 構建流程
    • 使用 TypeScript 編譯檢查,確保代碼類型安全。
    • 使用 ESLint 與 Prettier 進行代碼品質控制,統一程式碼風格。
    • 使用 Vite 打包生成靜態資源,優化資源大小與加載效率。
  • 部署方式
    • 構建 Docker 映像,包含 Nginx 伺服器,服務靜態資源與代理 API 請求。
    • 部署至 Kubernetes 集群,使用 Service 與 Ingress 確保高可用性與負載均衡。

4. 前端 API 交互規範

前端透過以下定義的 API 與後端通信,確保數據取得與操作的正確性。API 規範遵循 RESTful 原則,所有請求透過 HTTPS 傳輸,並攜帶 JWT Token 進行認證。

4.1 通用規範

  • 數據格式:請求與響應使用 JSON 格式,檔案下載除外(使用二進制流)。
  • 錯誤處理:後端返回錯誤時,包含標準錯誤碼與訊息(如 { "errorCode": "string", "message": "string" }),前端根據錯誤碼顯示相應提示。
  • 版本控制:API 路徑包含版本號(如 /api/v1/),確保未來升級相容性。
  • 分頁與過濾:列表 API 支援分頁(page, size)、排序(sort)與過濾參數,前端提供相應控制項。

5. 設計與視覺規範

5.1 視覺風格

  • 主題顏色:採用現代化科技風格,主色調為藍色(科技感,如 #409EFF),輔色調為灰色(中性,如 #909399)與綠色(表示成功,如 #67C23A),確保視覺一致性。
  • 字體:使用易讀字體(如 Roboto 或 Open Sans),正文字體大小為 14px,標題大小範圍為 16px 至 24px,確保可讀性。
  • 圖標:使用一致的圖標庫(如 Element Plus 自帶圖標或 Font Awesome),確保圖標尺寸統一(例如 16px 或 24px)。
  • 間距與佈局:遵循 8px 網格系統,組件間距與內邊距為 8px 的倍數,確保佈局整齊。
  • 陰影與深度:對卡片與按鈕使用適度陰影(如 box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1)),提升層次感。

5.2 互動設計

  • 按鈕行為:按鈕支援懸停(Hover)效果(如顏色變暗)、點擊反饋(如按下動畫),確保反應迅速。
  • 表單行為:表單欄位支援焦點狀態(Focus,邊框高亮),錯誤狀態顯示紅色提示文字。
  • 通知顯示:使用右上角或右下角彈出通知,支援成功(綠色)、錯誤(紅色)、警告(橙色)等多種類型,自動關閉時限為 5 秒,使用者可手動關閉。
  • 加載狀態:API 調用或頁面切換時顯示加載指示器(如旋轉圖標或進度條),避免使用者感到卡頓。
  • 響應式互動:在小型設備上,導航菜單摺疊為漢堡選單,表格與圖表支援水平滾動或縮略顯示。

5.3 可訪問性 (Accessibility)

  • 鍵盤導航:所有互動元素(如按鈕、連結、表單欄位)支援鍵盤操作,使用 Tab 移動焦點,Enter 或 Space 觸發操作。
  • 螢幕閱讀器:確保 HTML 結構語義化,使用正確的 ARIA 屬性(如 aria-labelaria-expanded),支援視障使用者。
  • 顏色對比:確保文字與背景顏色的對比度至少為 4.5:1(符合 WCAG 2.1 AA 標準),避免色盲使用者無法辨識關鍵資訊。
  • 動畫控制:提供選項關閉非必要動畫(如通知滑入效果),避免對敏感使用者造成不適。

6. 風險評估與緩解策略

風險類型 風險描述 緩解策略
介面響應性能問題 頁面或組件響應時間過長,影響使用者體驗 使用虛擬滾動技術顯示大數據列表,優化圖表渲染,組件懶加載,確保首次加載時間 < 3 秒
實時更新失敗 WebSocket 或 SSE 連接失敗,導致狀態不同步 提供備用輪詢機制(如每 10 秒更新一次),顯示連接狀態提示,允許使用者手動重新整理
檔案下載體驗差 下載速度慢或未授權錯誤提示不清晰 顯示下載進度條(若瀏覽器支援),提供友好錯誤訊息,限制重複下載請求以減輕伺服器負擔
響應式設計兼容問題 不同設備與浏览器上的佈局或功能異常 採用響應式框架與組件庫,測試多種屏幕尺寸(手機至桌機)與主流瀏覽器(Chrome, Firefox, Edge)
可訪問性不足 視障或行動不便使用者無法正常操作介面 遵循 WCAG 2.1 AA 標準,測試鍵盤導航與螢幕閱讀器,確保顏色對比度與語義化 HTML
LLM 檢查結果反饋差 安全檢查拒絕原因不清楚,導致使用者困惑 顯示詳細拒絕原因與風險指數(如 "Task rejected due to high risk code. Risk Score: 9"),提供聯繫管理員途徑

7. 開發與測試計劃

7.1 開發階段

  • 階段 1 - 原型設計 (1-2 週):設計 UI 原型,包含主要頁面(登入、任務上傳、任務狀態、管理員儀表板),與 UX 團隊合作確認視覺與交互細節。
  • 階段 2 - 核心功能開發 (4-6 週):實現一般使用者功能(登入、上傳、任務追踪、下載),確保 API 集成與實時更新正常運作。
  • 階段 3 - 管理員功能開發 (3-4 週):實現管理員專屬功能(公告管理、佇列控制、資源監控、安全審核),包含圖表與配置介面。
  • 階段 4 - 優化與測試 (2-3 週):進行效能優化(如組件懶加載)、可訪問性測試(鍵盤導航、螢幕閱讀器)、跨瀏覽器兼容性測試。

7.2 測試策略

  • 單元測試:使用 Jest 或 Vitest 測試核心組件與服務邏輯,確保 API 調用與狀態管理正確。
  • 端到端測試:使用 Cypress 或 Playwright 模擬使用者操作,測試完整流程(上傳、上傳、下載、管理員配置)。
  • 效能測試:測試頁面加載與組件響應時間,確保符合非功能需求(首次加載 < 3 秒,響應 < 300 毫秒)。
  • 可訪問性測試:使用 axe-core 工具檢查 WCAG 標準合規性,確保鍵盤導航與螢幕閱讀器支援。
  • 使用者測試 (Usability Testing):邀請真實使用者(一般使用者與管理員)進行測試,收集反饋以改進 UI 與 UX。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors