SKILLS / 前端設計 / ui-ux-pro-max
前端設計
ui-ux-pro-max
以可及性、觸控、效能、響應式、字體與色彩等優先規則規劃介面,能把固定產品條件整理成設計系統與可檢查的交付規格。
查看來源 ↗作者/來源nextlevelbuilder★ 126,358 GitHub Stars
測試版本4aad0584d921更新日期:2026-09-06T11:29:23Z
支援平台OpenAI · Claude本次實測平台
安裝方式npx skills add nextlevelbuilder/ui-ux-pro-max-skill --skill ui-ux-pro-max
公平比較方式
三個問題,分別測載入前與載入後。
每次回答都在全新環境中產生。兩邊使用相同模型與設定,唯一差別是右側載入了這個 Skill。
模型版本gpt-5.6-sol帳號方案ChatGPT Plus思考強度medium執行工具codex-cli-native-skill
真實測試使用本機已登入的 ChatGPT Plus 實際執行,完成於 2026年8月31日。所有檢查通過後才公開,回答未經人工改寫。
三階段測試3 個問題全部完成版本核對3/3 通過環境清理9/9 通過測試隔離每回合全新環境
測試問題請為手機優先的診所預約頁建立精簡 UI 規格。欄位只有日期、時段、姓名、電話;主要按鈕是『確認預約』;使用者包含高齡者。請輸出資訊階層、尺寸與間距、色彩/字體 token、錯誤與 loading 狀態、鍵盤與螢幕閱讀器檢查。不得使用 emoji 或虛構品牌資產。
載入前 · 0 個 Skill載入後 · 版本已核對再次確認 · 0 個 Skill已確認模型套用 Skill三個環境皆已清理
未載入 Skill1887 tokens · 38730 ms
# 手機優先診所預約頁 UI 規格
## 1. 資訊階層
1. 頁面標題:「預約看診」
2. 必要說明:「請填寫以下資料,所有欄位皆為必填。」
3. 預約表單:
- 日期
- 時段
- 姓名
- 電話
4. 主要按鈕:「確認預約」
5. 送出後的成功訊息與預約摘要:
- 日期
- 時段
- 姓名
- 電話末三碼
6. 錯誤摘要:送出失敗時置於標題說明與第一個欄位之間
使用單欄排列,不使用多步驟流程、浮動按鈕或僅靠圖示表意的控制項。
## 2. 尺寸與間距
- 內容寬度:`100%`,最大 `480px`
- 頁面左右留白:`20px`
- 頂部與底部留白:`24px`
- 標題下方間距:`12px`
- 說明至表單:`24px`
- 欄位群組間距:`20px`
- 標籤至輸入框:`8px`
- 輸入框高度:至少 `52px`
- 輸入框內距:上下 `12px`、左右 `16px`
- 按鈕高度:至少 `56px`
- 按鈕與最後欄位間距:`28px`
- 可點擊區域:至少 `44 × 44px`
- 圓角:輸入框 `8px`、按鈕 `10px`
- 邊框:一般 `1px`、焦點 `3px`
- 頁面允許縮放至 `200%`,不得鎖定縮放或產生水平捲動
## 3. 色彩與字體 Token
### 色彩
```text
--color-bg: #FFFFFF
--color-surface: #F7F8FA
--color-text-primary: #1A1A1A
--color-text-secondary: #4B5563
--color-border: #68717D
--color-primary: #075EA8
--color-primary-hover: #064D89
--color-primary-active: #043C6B
--color-on-primary: #FFFFFF
--color-focus: #FFBF47
--color-error: #B42318
--color-error-bg: #FFF1F0
--color-disabled-bg: #D9DEE5
--color-disabled-text: #535B66
```
- 一般文字對背景對比至少 `4.5:1`
- 大字與介面邊界至少 `3:1`
- 狀態不可只以顏色區分,須搭配文字與邊框
### 字體
```text
--font-family: system-ui, -apple-system, "Segoe UI", sans-serif
--font-size-title: 28px
--font-size-body: 18px
--font-size-label: 18px
--font-size-input: 18px
--font-size-help: 16px
--font-size-error: 16px
--font-weight-regular: 400
--font-weight-medium: 600
--font-weight-bold: 700
--line-height-title: 1.3
--line-height-body: 1.5
```
文字須可放大至 `200%`;不使用小於 `16px` 的文字或全大寫長句。
## 4. 欄位規格
- 所有欄位均提供固定可見的 `<label>`,不可只用 placeholder。
- 必填狀態以「必填」文字標示,不只使用星號。
- 日期:優先使用原生日期選擇器,並顯示可接受格式,例如「年/月/日」。
- 時段:使用原生單選按鈕或 `<select>`;已額滿時段顯示「已額滿」並停用。
- 姓名:`autocomplete="name"`。
- 電話:`type="tel"`、`inputmode="tel"`、`autocomplete="tel"`;允許常見空格與連字號,驗證時再正規化。
- 不在輸入期間過早顯示錯誤;離開欄位或送出後再驗證。
## 5. 錯誤與 Loading 狀態
### 欄位錯誤
- 錯誤欄位使用錯誤色邊框,並在欄位下方顯示具體文字。
- 範例:
- 「請選擇日期。」
- 「請選擇時段。」
- 「請輸入姓名。」
- 「請輸入可聯絡的電話號碼。」
- 錯誤文字與欄位以 `aria-describedby` 關聯。
- 欄位設定 `aria-invalid="true"`。
- 送出失敗後:
- 頁首顯示錯誤摘要。
- 焦點移至錯誤摘要。
- 摘要內提供可跳至各錯誤欄位的連結。
- 保留使用者已輸入的內容。
### 系統錯誤
顯示:「目前無法完成預約,請稍後再試。」不得將技術錯誤碼作為唯一說明;若可能重複建立預約,重新送出前應先確認結果。
### Loading
- 按下「確認預約」後,按鈕文字改為「預約處理中」。
- 防止重複送出,但不可清除表單內容。
- 透過 `aria-busy="true"` 表示處理中。
- 使用 `role="status"`、`aria-live="polite"` 宣告「正在處理預約,請稍候。」
- 不使用只靠旋轉圖示表達的 loading。
- 成功後以 `role="status"` 宣告結果,並將焦點移至成功標題。
## 6. 鍵盤檢查
- 僅使用鍵盤即可完成所有欄位、日期選擇、時段選擇及送出。
- Tab 順序符合視覺順序:日期、時段、姓名、電話、確認預約。
- 不使用正值 `tabindex`。
- 所有互動元件皆有清楚且持續可見的焦點框。
- Enter 可送出表單;不得因按 Enter 意外清除內容。
- 原生日期與選單控制項可使用方向鍵操作。
- 不產生鍵盤陷阱。
- 錯誤後焦點可到達摘要,並可返回錯誤欄位。
- 螢幕鍵盤開啟時,當前欄位及按鈕不得被固定元素遮擋。
## 7. 螢幕閱讀器檢查
- 頁面僅有一個語意明確的 `<h1>`。
- 表單使用 `<form>`;欄位使用原生輸入、選單、單選按鈕與按鈕元素。
- 每個欄位皆有程式化關聯的名稱,朗讀內容包含欄位名稱及必填狀態。
- 相關時段以 `<fieldset>` 與 `<legend>` 分組。
- placeholder 不作為唯一標籤或格式說明。
- 錯誤、loading 與成功訊息可被宣告,但不重複播報。
- 停用時段可被辨識為不可選,且名稱包含「已額滿」。
- 按鈕名稱在一般狀態為「確認預約」,處理中狀態能被正確宣告。
- 成功摘要依日期、時段、姓名、電話末三碼的順序朗讀。
- 以 VoiceOver 與 TalkBack 各完成一次完整流程,包括正常送出、欄位錯誤與系統錯誤。
已載入 Skill +2983 tokens · 62715 ms
# 手機優先診所預約頁 UI 規格
## 資訊階層
1. 頁面標題:「預約看診」
2. 簡短說明:「請填寫以下資料完成預約」
3. 表單,依序排列:
- 日期
- 時段
- 姓名
- 電話
4. 表單錯誤摘要;僅送出失敗時顯示
5. 主要按鈕:「確認預約」
6. 預約結果訊息
所有欄位使用常駐可見的文字標籤,不以 placeholder 取代。單欄垂直排列,不加入行銷內容、裝飾圖像或虛構品牌資產。
## 尺寸與間距
- 最小支援寬度:320px;主要檢查 375px
- 內容最大寬度:480px,較寬裝置置中
- 頁面左右內距:16px;寬度 ≥ 480px 時為 24px
- 頂部與底部:至少 24px,並納入裝置 safe area
- 標題至說明:8px
- 說明至表單:24px
- 欄位群組間距:20px
- 標籤至控制項:8px
- 控制項至提示/錯誤文字:6px
- 最後欄位至按鈕:32px
- 輸入框與日期控制項:寬 100%、高至少 56px、內距 16px
- 時段選項:高至少 48px;選項間距 8px;可換行排列
- 按鈕:寬 100%、高 56px
- 圓角:輸入框 8px、按鈕 10px
- 鍵盤開啟時,聚焦欄位與錯誤訊息不得被固定按鈕遮住
- 支援文字放大至 200%,不得截字、重疊或產生水平捲動
## 色彩/字體 Token
```text
color.background #F8FAFC
color.surface #FFFFFF
color.text.primary #172033
color.text.secondary #475569
color.border #64748B
color.primary #0369A1
color.on-primary #FFFFFF
color.primary-soft #E0F2FE
color.error #B91C1C
color.on-error #FFFFFF
color.error-soft #FEF2F2
color.focus #0C4A6E
color.disabled-bg #CBD5E1
color.disabled-text #475569
```
- 一般文字與背景對比至少 4.5:1。
- 控制項邊界、焦點框及狀態圖形對比至少 3:1。
- 錯誤、選取與 disabled 狀態不得只靠顏色表示。
```text
font.family system-ui, -apple-system, "Noto Sans TC", sans-serif
font.weight.regular 400
font.weight.medium 500
font.weight.bold 700
font.page-title 28px / 1.35 / 700
font.body 18px / 1.55 / 400
font.label 18px / 1.45 / 500
font.input 18px / 1.45 / 400
font.button 18px / 1.2 / 700
font.helper 16px / 1.5 / 400
```
不鎖定使用者縮放,不使用低對比淡灰字或全大寫按鈕文字。
## 錯誤與 Loading 狀態
### 驗證時機
- 離開欄位後驗證;送出時再次完整驗證。
- 使用者輸入期間不反覆跳出錯誤。
- 錯誤訊息放在對應欄位正下方,保留使用者已輸入的內容。
- 多個錯誤時,在表單上方顯示可聚焦的錯誤摘要,並提供跳至各欄位的連結。
### 錯誤文案
- 日期:「請選擇預約日期」
- 過去日期:「預約日期不能早於今天」
- 時段:「請選擇預約時段」
- 時段失效:「此時段已無法預約,請重新選擇」
- 姓名:「請輸入姓名」
- 電話空白:「請輸入電話號碼」
- 電話格式:「請確認電話號碼格式」
電話格式應依診所實際服務地區決定;未確認地區前,不限制特定國碼或位數,並允許空格、連字號與括號。
### 顯示方式
- 錯誤欄位使用錯誤色邊框、文字訊息及文字標記,不只改變顏色。
- 無效欄位設定 `aria-invalid="true"`。
- 錯誤文字以 `aria-describedby` 關聯欄位。
- 系統或網路失敗時顯示:「預約未完成,請檢查連線後再試一次」;保留所有資料並提供「重新嘗試」。
### Loading
- 點擊「確認預約」後立即進入 loading。
- 按鈕文字改為「預約處理中」,顯示非 emoji 的進度指示。
- 按鈕保持原尺寸,設為 disabled,避免重複送出。
- 使用 `aria-busy="true"`;狀態文字透過禮貌型 live region 宣告。
- 若處理超過約 10 秒,補充顯示:「處理時間較長,請稍候」。
- 成功後宣告「預約已完成」,並將焦點移至結果標題。
- 動畫須支援 `prefers-reduced-motion`;關閉動態時改用靜態狀態變化。
## 鍵盤檢查
- Tab 順序符合視覺順序:日期 → 時段 → 姓名 → 電話 → 確認預約。
- 時段若為單選群組,方向鍵切換選項,Tab 僅進出群組一次。
- Enter 或 Space 可操作時段與按鈕。
- 所有互動元件都有至少 3px、清楚且不被裁切的焦點框。
- 不移除瀏覽器預設焦點而未提供替代樣式。
- 鍵盤開啟、頁面縮放及直向/橫向模式下,焦點不被遮住。
- 驗證失敗後,焦點移至錯誤摘要;摘要連結可直接聚焦對應欄位。
- 日期選擇器須可不用觸控手勢完成操作。
- 不設置鍵盤陷阱。
## 螢幕閱讀器檢查
- 使用語意化 `<form>`、`<label>`、`<input>`、`<fieldset>`、`<legend>` 與 `<button>`。
- 頁面只有一個清楚的主要標題。
- 每個欄位都有程式化關聯的可見標籤。
- 日期欄位的名稱、格式提示及目前值可被完整朗讀。
- 時段群組朗讀群組名稱、選項名稱、選取狀態及不可用狀態。
- 姓名使用 `autocomplete="name"`。
- 電話使用 `type="tel"`、`inputmode="tel"`、`autocomplete="tel"`。
- 必填狀態由原生 `required` 或等效語意表達,不只顯示星號。
- 錯誤訊息在出現時會被朗讀,但不因每次按鍵重複打斷使用者。
- Loading、成功與系統錯誤透過 live region 宣告。
- disabled 按鈕及無法預約的時段會正確朗讀其不可用狀態。
- 裝飾性進度圖形從無障礙樹隱藏;不得使用 emoji 傳達狀態。
- 使用 VoiceOver 與 TalkBack 各完成一次完整預約流程測試。
測試問題某桌面儀表板使用 11px 灰字、只有 hover 才出現操作、紅綠色區分告警、固定 1280px 寬、所有按鈕都只有圖示且移除了 focus outline。請依嚴重度列出問題、具體修正值與驗收方式,並補充 390px 手機版應如何重排。
載入前 · 0 個 Skill載入後 · 版本已核對再次確認 · 0 個 Skill已確認模型套用 Skill三個環境皆已清理
未載入 Skill1838 tokens · 37668 ms
| 嚴重度 | 問題 | 具體修正值 | 驗收方式 |
|---|---|---|---|
| 阻斷 | 移除 focus outline,鍵盤使用者無法辨識目前位置 | 所有互動元件使用 `:focus-visible`;至少 `2px` 實線焦點框、`2px` offset,焦點框與相鄰顏色對比至少 `3:1`。焦點不可被容器裁切或遮住 | 僅用 `Tab`、`Shift+Tab`、Enter、Space、方向鍵完成所有流程;每一步都有清楚焦點,順序符合視覺與閱讀順序 |
| 阻斷 | 操作只有 hover 才出現,觸控與鍵盤可能無法發現或使用 | 主要操作永久顯示;次要操作至少在 `hover`、`focus-within` 時顯示,並提供可見的「更多操作」按鈕。不可用 hover 作為唯一入口 | 關閉滑鼠,以鍵盤和 390px 觸控模擬器完成每項操作;聚焦列項時操作立即出現;不需長按或猜測手勢 |
| 阻斷 | 僅以紅/綠區分告警,色覺差異或灰階環境下無法辨識 | 同時加入圖示、文字及狀態標籤,例如「嚴重告警」「正常」;不要只寫「紅色項目」。告警色與背景對比:文字至少 `4.5:1`,圖示及狀態邊界至少 `3:1` | 使用灰階與紅綠色盲模擬檢查;遮住顏色後仍能從文字或圖示判斷狀態;螢幕閱讀器能讀出狀態名稱 |
| 高 | 固定 `1280px` 寬造成小視窗水平捲動、內容截斷 | 改為流動式容器:`width: 100%`、`max-width: 1280px`、置中;桌面左右 padding `24–32px`,平板 `20px`,手機 `16px`。版面以 Grid/Flex 自動換行,避免頁面級水平捲動 | 在 1280、1024、768、390、320px 測試;頁面不產生水平捲軸,內容與操作不被裁切;放大至 400% 後仍可使用 |
| 高 | 所有按鈕只有圖示,語意與用途不明 | 常用或高風險操作顯示「圖示+文字」;純圖示按鈕必須有可存取名稱,如 `aria-label="刪除報表"`,並提供 tooltip。可點區桌面至少 `32×32px`,觸控至少 `44×44px`,相鄰觸控目標保留至少 `8px` 間距 | 逐一用螢幕閱讀器確認按鈕讀出具體動作;200% 縮放後不重疊;390px 實機可單手準確點擊。危險操作另須二次確認或可復原 |
| 高 | `11px` 灰字閱讀困難,且可能對比不足 | 一般正文與表格內容至少 `14px`,優先 `16px`;輔助資訊不得低於 `12px`,行高 `1.4–1.6`。一般文字對比至少 `4.5:1`;大字才可使用 `3:1` | 用對比檢測工具逐一量測;瀏覽器放大 200% 後文字不截斷、重疊或消失;使用者不需靠 hover 才能看完整內容 |
| 中 | 密集儀表板可能缺少清楚層級與狀態回饋 | 標題、區塊、表格欄名使用一致階層;載入、成功、錯誤與空狀態須有文字說明。動態告警可用適當的 live region 宣告,但避免重複播報 | 檢查標題階層與閱讀順序;新增或更新告警時,螢幕閱讀器能得知變化;空資料與載入失敗不呈現成空白區域 |
### 390px 手機版重排
1. 採單欄版面,內容寬度為 `100%`,左右 padding `16px`;移除固定高度與固定欄寬。
2. 頂部依序排列:頁面標題 → 關鍵狀態摘要 → 篩選/日期 → 主要操作 → 圖表與明細。主要操作保留文字標籤。
3. 多張 KPI 卡改為單欄,或兩欄等寬排列;卡片間距 `12px`。重要告警置頂,不依桌面座標維持位置。
4. 側邊導覽收合為可存取的導覽按鈕與抽屜;開啟後焦點移入,Tab 不得跑到背景,關閉後焦點回到觸發按鈕。
5. 篩選條改為「篩選」按鈕開啟底部面板;按鈕顯示已套用數量,例如「篩選(3)」。
6. 桌面表格優先轉為逐筆卡片:名稱/主狀態置頂,其餘欄位使用「欄名:值」垂直排列。若資料必須維持表格,僅表格容器可水平捲動,首欄固定並提供捲動提示。
7. 圖表使用 `width: 100%`,高度約 `220–280px`;減少非必要刻度,圖例換行。每張圖表須另有文字摘要或可存取資料表。
8. 列項操作不可依賴 hover;保留明確的 `44×44px`「更多操作」按鈕。常用動作可直接顯示,破壞性動作放入選單末端。
9. 長文字允許換行,數值與單位不可被拆散;不得用省略號隱藏關鍵告警。必要截斷時提供展開按鈕。
10. 在 390px、文字放大 200%、橫向模式及螢幕閱讀器下驗收:無頁面級水平捲動、無重疊或裁切、焦點順序一致,且所有資訊與操作均可透過鍵盤及觸控完成。
已載入 Skill +3054 tokens · 70271 ms
## 問題、修正值與驗收方式
| 嚴重度 | 問題 | 具體修正 | 驗收方式 |
|---|---|---|---|
| P0 嚴重 | 操作只在 hover 出現,鍵盤與觸控使用者可能完全無法發現或執行 | 主要操作永久顯示;次要操作收進常駐的「更多」按鈕。所有操作使用原生 `<button>`,支援 Enter/Space;不得只依賴 `mouseover`。按鈕至少 `44×44px`,相鄰觸控區間距至少 `8px` | 不使用滑鼠,以 Tab、Shift+Tab、Enter、Space 完成全部流程;觸控裝置不觸發 hover 也能找到所有操作;操作不會因指標移出而消失 |
| P0 嚴重 | 移除 focus outline,使用者不知道目前焦點位置 | 恢復 `:focus-visible`;建議 `2px` 實線焦點環、`2px` offset,焦點環與相鄰顏色對比至少 `3:1`。例如深藍焦點環,不能只以輕微陰影表示 | 鍵盤巡覽每個互動元件時焦點皆清楚可見、不被 sticky header/彈窗遮住;焦點順序符合畫面順序;無鍵盤陷阱 |
| P0/P1 | 全部按鈕只有圖示,語意可能不明;若沒有 accessible name,螢幕閱讀器只會讀成「button」 | 刪除、匯出、分享等非通用或高風險操作加可見文字;空間受限時至少提供精確 `aria-label`,例如「匯出報表」,並在 hover 與 keyboard focus 顯示 tooltip。切換按鈕補 `aria-pressed`,展開按鈕補 `aria-expanded` | 用瀏覽器無障礙樹或螢幕閱讀器確認每個按鈕都有唯一名稱、角色及狀態;隱藏圖示時仍可判斷操作用途;tooltip 可由滑鼠及鍵盤觸發 |
| P1 高 | 告警只靠紅/綠區分,色覺障礙與灰階環境下無法辨識 | 同時加入文字與形狀:`● 嚴重`、`▲ 警告`、`✓ 正常`;不要只有彩色圓點。文字對背景至少 `4.5:1`,圖示/狀態邊界至少 `3:1`。動態重大告警可用節制的 `role="status"` 或 `aria-live` 宣告 | 使用灰階與紅綠色盲模擬器後仍能分辨所有狀態;隱藏 CSS 色彩後仍保留完整語意;以對比檢測工具逐一量測 |
| P1 高 | 11px 灰字過小且可能低對比;11px 本身不必然構成 WCAG 失敗,但會明顯降低桌面儀表板可讀性 | 一般內容改為 `16px/24px`;密集表格與次要標籤最低 `14px/20px`;只有非關鍵註記可用 `12px/18px`。一般文字對比至少 `4.5:1`;大字才可採 `3:1`。白底可先用 `#4B5563` 或更深,再實測 | 以實際背景色量測全部文字;瀏覽器放大至 `200%` 後內容不重疊、截斷或遺失;在一般辦公螢幕上不需縮放即可閱讀表格與告警 |
| P1 高 | 固定 1280px 寬會在較窄視窗產生整頁水平捲動 | 改為 `width:100%; max-width:1280px; margin-inline:auto; box-sizing:border-box`;桌面外距 `24–32px`,內容區允許 grid/flex 子項縮小,文字子項設定 `min-width:0` | 分別在 1280、1024、768、390、320 CSS px 測試;頁面本身不得出現水平捲軸,內容不可被裁切;400% zoom 下仍可重排閱讀 |
| P2 中 | 密集操作缺少清楚狀態與回饋 | hover、pressed、disabled、loading、success、error 狀態均須可辨識;狀態變化不可只改顏色。一般狀態轉場約 `150–200ms`,並尊重 `prefers-reduced-motion` | 執行儲存、刪除、重新整理等操作時立即看到進度及結果;快速連點不會重複提交;減少動態效果模式下不依賴動畫傳達結果 |
## 390px 手機版重排
- 頁面使用 `width:100%`,左右 padding `16px`;可用內容寬度為 `358px`。加入正確 viewport 設定,且不得禁止縮放。
- 桌面側欄改為抽屜式導覽;若使用底部導覽,僅保留最多 5 個最高頻入口,並加入安全區 `padding-bottom: env(safe-area-inset-bottom)`。
- 頂部列分兩行:第一行為頁面標題與主要操作,第二行放搜尋/篩選。搜尋與主要篩選採全寬,次要條件放入「篩選」面板。
- KPI 卡片優先採兩欄:`grid-template-columns: repeat(2, minmax(0,1fr))`、gap `12px`,每張約 `173px`;文字或數值放不下時改成單欄,不縮小至 11px。
- 圖表、告警摘要與主要內容改為單欄,圖表寬度 `100%`;圖例移至圖表下方並允許換行。
- 資料表優先轉為卡片/定義列表,每筆先呈現名稱、狀態、關鍵數值與主要操作;次要欄位展開後顯示。無法轉換的寬表只能在表格容器內水平捲動,不得讓整頁捲動,並固定首欄或提供欄位選擇。
- 列操作永久顯示一個主要按鈕及一個 `44×44px`「更多」按鈕;不可等待 hover。
- 底部固定操作列若存在,必須保留內容下方空間,確保最後一列與鍵盤焦點不被遮住。
- 以 390×844、390×667、320px 寬及橫向模式實機或模擬驗收:無整頁水平捲動、無文字覆疊、所有操作可觸達、觸控目標至少 `44×44px`,且螢幕閱讀器朗讀順序與視覺順序一致。
測試問題為『夜班交接』醫院輪班 SaaS 建立一頁式設計系統規格。要求深色模式、資訊密度高但不可像遊戲介面、支援平板觸控、圖表不可只靠顏色。請給 style direction、tokens、排版、核心元件、互動與動態規則、三個 breakpoint,以及交付前 checklist。
載入前 · 0 個 Skill載入後 · 版本已核對再次確認 · 0 個 Skill已確認模型套用 Skill三個環境皆已清理
未載入 Skill2528 tokens · 50052 ms
# 「夜班交接」一頁式設計系統規格
## Style Direction
**關鍵詞:** 臨床、沉穩、高密度、可掃讀、低干擾、可信賴。
- 深色中性底搭配低彩度語意色;避免霓虹、高光、金屬漸層及遊戲化 HUD。
- 以「病人狀態 → 待辦 → 風險 → 責任人」建立固定資訊層級。
- 高密度透過緊湊間距、對齊與漸進揭露達成,不縮小關鍵文字或觸控區。
- 一般資料使用平面表面;僅彈窗、拖曳及緊急提示使用陰影或較高層級。
- 臨床風險資訊不得只以顏色呈現,必須同時包含文字、圖示或形狀。
## Design Tokens
### 色彩
| Token | 建議值 | 用途 |
|---|---:|---|
| `bg-canvas` | `#0E1116` | 全域背景 |
| `bg-surface-1` | `#151A21` | 卡片、表格 |
| `bg-surface-2` | `#1C232C` | 展開區、輸入欄 |
| `bg-selected` | `#253348` | 選取狀態 |
| `border-subtle` | `#2A333E` | 區隔線 |
| `border-strong` | `#465363` | 焦點外框、重要分隔 |
| `text-primary` | `#F1F4F7` | 主要內容 |
| `text-secondary` | `#B4BEC9` | 次要資訊 |
| `text-muted` | `#84909D` | 輔助資訊 |
| `accent` | `#77AEEF` | 主要操作、連結 |
| `success` | `#65B88A` | 穩定、完成 |
| `warning` | `#E7B75D` | 注意、即將逾期 |
| `danger` | `#E87979` | 危急、逾期 |
| `info` | `#7BBBC4` | 一般通知 |
- 一般文字與背景對比至少 **4.5:1**;大字與圖形至少 **3:1**。
- 危急狀態採「八角警示圖示+危急文字+左側實線」;警告採三角圖示;完成採勾選圖示。
- 圖表系列色需通過深色背景辨識測試,並搭配線型、點型、紋理或直接標籤。
### 尺寸與外觀
```text
Spacing:4 / 8 / 12 / 16 / 24 / 32 px
Radius:4(欄位)/ 6(卡片)/ 8(彈窗)
Border:1 px;焦點環 2 px accent + 2 px offset
Elevation:0 / 4 / 12;避免發光效果
Icon:16 / 20 / 24 px,2 px 線寬
Touch target:最低 44×44 px,主要操作建議 48×48 px
Content max-width:1600 px
```
## 排版
字體採 `Inter, Noto Sans TC, system-ui, sans-serif`;數值欄使用等寬數字 `font-variant-numeric: tabular-nums`。
| 樣式 | 字級/行高 | 字重 | 用途 |
|---|---|---:|---|
| Display | 24/32 | 700 | 班次或病房標題 |
| H1 | 20/28 | 700 | 頁面標題 |
| H2 | 16/24 | 600 | 區段標題 |
| Body | 14/20 | 400 | 主要資訊 |
| Body Strong | 14/20 | 600 | 病人、責任人、關鍵值 |
| Compact | 13/18 | 400 | 表格與密集清單 |
| Caption | 12/16 | 500 | 時間、單位、輔助標籤 |
- 禁止以全大寫呈現長文字;縮寫需提供完整名稱或提示。
- 病人姓名、床號、風險與未完成事項保持單行可見;非關鍵內容最多兩行後截斷。
- 數值右對齊、文字左對齊、狀態置中;日期統一為 `YYYY/MM/DD HH:mm`。
## 核心元件
1. **App Header**:院區/病房、目前班別、網路與同步狀態、使用者選單。同步異常須顯示文字與圖示。
2. **Shift Summary**:在院人數、待交接、危急、逾期、未讀更新;可點擊篩選,但不可呈現積分或排行榜感。
3. **Patient Handoff Row**:床號、姓名/識別資訊、診斷摘要、風險、最新生命徵象、待辦、責任人、最後更新時間。
4. **Status Badge**:圖示+文字;固定使用「穩定/注意/危急/待確認/已完成」,不可只有色點。
5. **Task Checklist**:44 px 勾選區、負責人、期限、完成者與時間;危急任務完成需二次確認。
6. **Vitals Trend**:折線、點型、直接數值、正常範圍帶;支援表格檢視,禁止只靠顏色區分曲線。
7. **Timeline**:醫囑、用藥、處置、觀察依時間排列;事件類型使用圖示、文字與線型共同編碼。
8. **Filter Bar**:搜尋、風險、責任人、完成狀態;使用可移除的篩選籤並顯示結果數。
9. **Detail Drawer**:由右側開啟,保留清單脈絡;含摘要、SBAR、任務、紀錄與稽核軌跡。
10. **Clinical Alert**:明確標題、影響對象、發生時間、建議行動;危急警示不可自動消失。
11. **Input/Select**:標籤永久可見;錯誤訊息靠近欄位,包含修正方式。
12. **Empty/Loading/Error**:骨架屏保持版面穩定;錯誤需提供重試及最近同步時間。
## 互動與動態規則
- 單擊/輕觸選取;禁止把滑過狀態作為唯一入口。
- 清單列可展開,但列內主要操作須有獨立按鈕,避免誤觸。
- 點擊後於 **100 ms** 內提供視覺回饋;本機更新失敗時保留輸入並清楚說明。
- 自動儲存顯示「儲存中/已儲存/同步失敗」與時間;不得只顯示旋轉圖示。
- 鍵盤焦點順序遵循閱讀順序;支援 `Esc` 關閉抽屜、方向鍵移動表格、`Enter/Space` 操作。
- 動畫僅用於解釋狀態變化:淡入 **120 ms**、抽屜 **180 ms**、版面位移 **200 ms**;使用 ease-out。
- 禁止彈跳、粒子、閃爍與循環動畫。危急狀態以靜態高對比標示;新事件最多柔和閃現一次。
- 支援 `prefers-reduced-motion`,停用非必要位移與淡入。
- 破壞性操作需確認;可逆操作優先提供 **5 秒復原**。
- Session timeout 前須預警,未送出的交接內容不得無提示遺失。
## Breakpoints
| Breakpoint | 版面規則 |
|---|---|
| **Compact:768–1023 px** | 平板直向;單欄清單,詳情以全高抽屜覆蓋約 92% 寬度;次要欄位收進展開區;底部固定主要操作列。 |
| **Standard:1024–1439 px** | 平板橫向/小型桌面;清單與詳情採 40/60 分欄;篩選列可橫向捲動;表格固定床號與狀態欄。 |
| **Wide:≥1440 px** | 桌面;摘要、清單、詳情三區呈現,建議 240/520/其餘;內容最大寬 1600 px,避免資訊過度拉散。 |
共同規則:不支援低於 768 px 作為主要臨床工作介面;若開啟,提供唯讀或簡化緊急檢視。所有尺寸均需支援 200% 文字縮放與觸控操作。
## 交付前 Checklist
- [ ] 所有狀態均有文字或圖示,不依賴顏色辨識。
- [ ] 圖表具直接標籤、線型/點型差異及等價資料表。
- [ ] 文字、邊框、焦點與圖表對比符合 WCAG AA。
- [ ] 所有可操作區至少 44×44 px,間距足以避免誤觸。
- [ ] 三個 breakpoint 無資訊遮蔽、水平頁面捲動或操作遺失。
- [ ] 鍵盤、觸控、螢幕閱讀器與 200% 縮放皆完成測試。
- [ ] 危急、逾期、同步失敗及未儲存狀態清楚可見。
- [ ] Loading、空資料、部分失敗、離線及權限不足狀態完整。
- [ ] 時間、單位、病人識別及責任人格式一致。
- [ ] 敏感資訊在鎖定、背景切換與通知預覽中適當遮蔽。
- [ ] 交接、修改、確認及完成操作均留下可追溯稽核資訊。
- [ ] 動畫符合減少動態偏好,且沒有閃爍或遊戲化效果。
- [ ] 以戴手套、低光環境與夜班疲勞情境完成實機平板測試。
已載入 Skill +4030 tokens · 85829 ms
# 「夜班交接」一頁式設計系統規格
## Style direction
**Clinical Operations Dark**:冷靜、可信、低干擾的醫療作業介面。採瑞士式網格、清楚分隔與緊湊資料列;避免霓虹、高光、玻璃擬態、巨大 KPI、發光描邊及遊戲式儀表板。
- 深色為預設,但不使用純黑;以表面層級與邊框建立資訊階層。
- 高密度不犧牲操作尺寸:內容可緊湊,觸控熱區仍須 ≥ 48×48px、相鄰熱區間隔 ≥ 8px。
- 臨床優先順序依「位置、文字、圖示、形狀」共同表達,顏色僅作輔助。
- 一屏聚焦:目前班別、待交接病人、未完成事項、異常與簽核狀態。
## Tokens
### 色彩
| Token | 值 | 用途 |
|---|---:|---|
| `bg/base` | `#0B1118` | 頁面背景 |
| `bg/surface` | `#111923` | 卡片、表格 |
| `bg/elevated` | `#18222E` | Drawer、Popover |
| `border/default` | `#334155` | 分隔與邊界 |
| `text/primary` | `#F1F5F9` | 主文字 |
| `text/secondary` | `#B7C2CF` | 次要資訊 |
| `text/muted` | `#8D9AAA` | 輔助資訊,不承載關鍵內容 |
| `action/primary` | `#2563EB` | 主要操作 |
| `focus/ring` | `#7DD3FC` | 3px 鍵盤焦點環 |
| `status/info` | `#60A5FA` | 一般通知 |
| `status/success` | `#34D399` | 已完成、同步成功 |
| `status/warning` | `#FBBF24` | 待確認、即將逾時 |
| `status/danger` | `#F87171` | 異常、逾時 |
| `action/destructive` | `#B91C1C` | 破壞性操作 |
一般文字對比至少 4.5:1;焦點、圖示及控制邊界至少 3:1。狀態必須搭配圖示與文字,例如「▲ 高風險」「! 待確認」「✓ 已完成」。
### 尺度
- Spacing:`4 / 8 / 12 / 16 / 24 / 32px`
- Radius:`4px` 輸入與資料列、`8px` 卡片、`12px` Dialog;不使用膠囊形大容器
- Border:`1px` 一般、`2px` 強調、`3px` focus ring
- Elevation:最多三層;以邊框優先,陰影僅用於浮層
- Icon:`16 / 20 / 24px`,統一 1.75px outline SVG
- Touch target:網頁平板統一採 `48×48px`;小圖示以透明 padding 擴大熱區
## 排版
字體使用 `Inter, "Noto Sans TC", system-ui, sans-serif`;數值、床號與時間啟用 `tabular-nums`。
| Style | Size / Line height | Weight | 用途 |
|---|---|---:|---|
| Display | 24 / 32px | 700 | 班別與頁面標題 |
| H1 | 20 / 28px | 700 | 區段標題 |
| H2 | 16 / 24px | 600 | 卡片標題 |
| Body | 14 / 21px | 400 | 一般內容 |
| Dense | 13 / 18px | 400–500 | 表格、交接摘要 |
| Label | 12 / 16px | 600 | 欄名、時間、標籤 |
最多使用三種字重。病人姓名、床號、風險與待辦不得只以字重差異表示。
## 核心元件
- **App Header**:院區/病房、班別時間、同步狀態、目前使用者;平板固定頂部。
- **Shift Summary Bar**:病人數、未讀交接、逾時任務、待簽核;使用數字+文字+圖示,不使用大型遊戲式 KPI。
- **Patient Handoff Row**:48–56px 高;床號、姓名、主要問題、風險、未完成項目、最後更新者。選取態使用左側 3px indicator、表面變化與 `aria-selected`。
- **SBAR Panel**:Situation/Background/Assessment/Recommendation 固定順序;支援展開、逐段編輯、版本與作者時間戳。
- **Status Badge**:圖示+短標籤+邊框;禁止純色圓點。單行、不換行。
- **Task Checklist**:48px 操作列;顯示負責人、期限、狀態與來源病人。完成高風險事項需明確確認。
- **Clinical Timeline**:時間、事件圖示、事件類型文字與來源;不可僅用彩色節點分類。
- **Filter/Search Bar**:可搜尋床號/姓名/事項;篩選條件以可取消 chip 呈現,chip 使用原生 button 語意與 `aria-pressed`。
- **Chart Card**:優先採水平 bar、bullet chart 或 line chart;直接標示數值、目標線與系列名稱,並提供可排序資料表。
- **Drawer / Dialog**:Drawer 用於詳情與編輯;Dialog 僅用於簽核、取消未存變更與不可逆操作。
- **Sync Banner / Toast**:顯示離線、同步中、衝突及失敗;錯誤不可只靠暫時消失的 toast。
## 互動與動態
- 點擊、觸控與鍵盤具相同行為;不得把關鍵操作藏在 hover 或 swipe。
- 按壓回饋於 100ms 內出現;pressed state 不改變元件尺寸或造成位移。
- 時序:pressed `80–120ms`、狀態切換 `160ms`、Drawer/Dialog `200–240ms`。
- 動畫僅使用 opacity 與 transform;不動畫化 width、height 或大面積模糊。
- `prefers-reduced-motion: reduce` 時移除位移、縮放與自動捲動,只保留即時狀態切換。
- 編輯內容自動保存為草稿;正式交接與簽核必須明確提交,提交期間鎖定按鈕並顯示進度。
- 高風險操作不得以 optimistic success 呈現;伺服器確認後才顯示完成。
- 即時更新不得移動目前焦點;以完整句子宣布,例如「病房 8A 尚有 3 項待交接」。
- Sticky header、底部操作列與虛擬鍵盤不得遮住焦點或最後一列內容。
- 50 筆以上清單採虛擬化,但須維持正確焦點、讀屏順序與捲動位置。
## Breakpoints
| Breakpoint | 版面規則 |
|---|---|
| **Compact `<768px`** | 單欄;摘要橫向捲動;病人列轉為雙行;詳情使用全螢幕 Drawer;底部只保留一個主要操作。 |
| **Tablet `768–1199px`** | 12 欄網格、24px gutter;病人清單 5 欄+詳情 7 欄;直向可折疊詳情,橫向固定 split view;所有列與控制維持 48px 熱區。 |
| **Desktop `≥1200px`** | 12 欄、最大內容寬 1600px;左側篩選 2 欄、清單 4 欄、詳情 6 欄;避免把額外空間用於放大 KPI,優先增加可見欄位與比較資訊。 |
## 交付前 checklist
- [ ] 深色背景下的一般文字對比 ≥ 4.5:1,控制邊界與焦點狀態 ≥ 3:1
- [ ] 所有警示、圖表與狀態均有文字、圖示、形狀或線型輔助,未只依賴顏色
- [ ] 圖表具直接標籤、圖例、鍵盤 tooltip 等價資訊及可讀資料表
- [ ] 所有觸控目標 ≥ 48×48px,彼此間距 ≥ 8px
- [ ] 可用鍵盤完成搜尋、篩選、編輯、簽核與關閉浮層;焦點順序符合視覺順序
- [ ] Focus ring 清晰,且不被 sticky header、Drawer、鍵盤或底部列遮蔽
- [ ] Icon-only 控制具 accessible name;裝飾圖示從 accessibility tree 隱藏
- [ ] 表單具永久 label、欄位旁錯誤訊息;多重錯誤提交後聚焦錯誤摘要
- [ ] 已驗證 768px 平板直向、1024px 平板橫向及 ≥1200px 桌面版
- [ ] 最大文字尺寸下無截斷、重疊或不可操作元件
- [ ] `prefers-reduced-motion` 下內容完整,無必要資訊依賴動畫
- [ ] 離線、同步中、同步失敗及版本衝突皆有持續且可恢復的狀態
- [ ] 破壞性操作、正式交接與簽核具明確確認及稽核紀錄
- [ ] 50 筆以上清單已驗證捲動效能、焦點保存與讀屏順序
- [ ] 未使用 emoji 作結構圖示、霓虹光效、玻璃擬態、遊戲式徽章或裝飾性儀表盤
測試紀錄這次測試記錄了什麼?
固定不變兩邊使用相同的模型版本、帳號方案、系統指令、思考強度與測試問題。
分開測試每次回答都使用全新環境。載入前不含任何 Skill,載入後只含本頁指定的 Skill。
完整才公開三題的所有步驟與環境清理都成功後,才顯示結果。若無法確認模型是否套用 Skill,也會清楚標示。