UX Spec

Site Management

Amy TangJul 1 2026
Open Spec Changes
site-management-for-portal
site-management-hierarchy-update
Prototype
prototype.html(LUMIXIS 實驗原型)
Figma

Visual basis: vortex-1.0 — verify behavior / copy / structure, not pixel style.

User Story 01

建立一個 Site

流程 Happy Path

  1. 在空狀態點「Create site」,或側欄樹的「+」。
us1-01-empty
  1. 開啟對話框:左側 Name / Location 表單,右側 Google 地圖。
  2. 輸入 Name(Location 選填),地圖隨輸入的地址定位。
us1-02-dialog
  1. 送出「Create site」→ 進入剛建立的 Site(尚無樓層圖與設備)。
us1-03-created

狀態與邊界

狀態 觸發 畫面 / 文案
Name 未填 開啟對話框 「Create site」維持 disabled
地圖載入失敗 Google Map API 失敗 顯示地址文字輸入 fallback +「map unavailable」
名稱重複 送出時他人已建同名 顯示衝突錯誤並建議替代名稱

驗收條件 QA · Given-When-Then

  • Given 在對話框只填 Name 並送出,Then 建立一個無 Location 的 Site。
  • Given Name 為空,Then「Create site」為 disabled。
  • Given 在地圖搜尋欄輸入地址,Then 地圖 geocode 並置中到該位置。

完整行為情境(網路/伺服器錯誤、地圖 quota、座標驗證等)以 OpenSpec 為準,不在此重列。

元件與 Token 決策

  • 對話框:分割式 1116 × 612px(左表單 558 / 右地圖 558)。
  • 元件:InputButton/primary(Create site)、Google Map。

TODO / 未解問題

  • Name 長度上限與允許字元,待與 PM 確認(OpenSpec 標為 validation error,但未定義上限)。
User Story 02

Add Area(在 Site 或 Area 下新增)

沿用 Create Site 對話框,差異只有一個:Area 沒有 Location 與地圖(只有第一層 Site 有 Location)。本頁不重畫,引用 Create Site 的畫面並標出差異;行為規則見 OpenSpec。

術語(已確認): 正式採用「Add Area」(與 Add Floor plan / Add Device 一致)。OpenSpec 的「Create Area」僅為需求命名,UI 一律用 Add。

流程 Happy Path

  1. 選一個 Site 或 Area,點「+ Add」→「Add Area」。
  2. 開啟對話框:只有 Name 欄位(無 Location、無地圖)。
us2-add-area
沿用 Create Site 版面(此為 Create Site 截圖);Add Area 移除 Location 與地圖,僅保留 Name
  1. 輸入 Area 名稱 → 送出 → 新 Area 巢狀出現在所選父層下。

狀態與邊界

狀態 觸發 畫面 / 文案
與 Site 的差異 開啟 Add Area 不顯示 Location 欄位與 Google Map
Name 未填 開啟對話框 送出按鈕維持 disabled
已達層級上限 在第 4 層 Area 下新增 依 OpenSpec 階層規則限制(最多 L4 Area)

驗收條件 QA · Given-When-Then

  • Given 開啟 Add Area 對話框,Then 不顯示 Location 欄位或 Google Map。
  • Given 選一個 Site 並送出 Area 名稱,Then 在該 Site 下建立 Layer-1 Area。
  • Given Area 名稱為空,Then 送出被拒並提示需輸入名稱。

各層級(L1–L4)建立規則與錯誤情境以 OpenSpec 為準:site-configuration · Create Area

元件與 Token 決策

  • 沿用 Create Site 對話框,移除 Location 欄位與地圖(版面收合為單欄表單)。
  • 元件:InputButton/primary
User Story 03

瀏覽與選取 Site

流程 Happy Path

  1. 從導覽列點 Site icon 進入 Site 頁:左側為 Site List(樹狀),右側為 Device Display Area。初始未選取任何 Site,右側顯示「No Site Selected」。
us3-01-no-selection
未選取狀態:右側「No Site Selected」(對應 VORTEX key-screen 02;與 US10 的「完全無 Site」空狀態不同)
  1. 在左側樹點選一個 Site。右側只顯示該 Site 直屬的樓層圖與設備(不含其 Area 底下的設備 —— 要看 Area 的設備須點選該 Area);若該 Site 無直屬設備,顯示「No Devices Added」。
us3-02-empty-site
  1. 點選有設備的 Site,右側列出設備(Name、Model、Device type、Status)。可用搜尋框過濾、展開/收合樹節點。
us3-03-with-devices

狀態與邊界

狀態 觸發 畫面 / 文案
未選取 Site 進入頁面 右側顯示「No Site Selected」+「Select a site from the side menu to view its resources.」
Site 無設備 選取尚無設備的 Site 顯示「No Devices Added」空狀態
選 Site 或 Area 點選任一節點 右側只顯示該節點直屬的樓層圖與設備,不含子層(Site 不含其 Area 的設備;Area 不含其子 Area 的設備)
IP Speaker / PoE Switch 設備列表初始 Status 與 Model 初始顯示「-」

驗收條件 QA · Given-When-Then

  • Given 選取一個 Site,Then 右側只顯示該 Site 直屬的設備(不含其 Area 底下的設備)。
  • Given 選取一個 Area,Then 只顯示該 Area 直屬的設備(不含其子 Area 的設備)。
  • Given 在 Site 搜尋框輸入關鍵字,Then 樹只顯示名稱含關鍵字的 Site / Area。

「組織尚無 Site → 顯示首次建立提示、設備操作 disabled」由 US10(首次使用:尚未建立任何 Site)涵蓋,本頁不重列。

載入錯誤、搜尋無結果、被他人刪除等情境以 OpenSpec 為準(site-page-layout Error Handling)。

元件與 Token 決策

  • 兩欄版面:左 Site List panel + 右 Device Display Area。
  • 元件:Tree View(Site / Area 樹,英數遞增排序)、device 列表表格。
  • 顯示模式:List view/List view with thumbnails(Camera 顯示快照、其餘顯示產品圖)。
User Story 04

批次移動設備到別的 Site

流程 Happy Path

  1. 在設備列表勾選一或多台設備,搜尋/篩選列位置改顯示選取動作列:「N Devices selected」、「Move to」、「Delete」。
us4-01-selected
  1. 點「Move to」開啟對話框:「Select a destination for N devices.」下方為目標 Site / Area 樹(radio 單選)。目前所在場域標「Current」且不可選。
us4-02-modal
  1. 可在搜尋框輸入關鍵字即時過濾目標(命中以 highlight)。選定目標後點「Move N devices」→ 移動完成、設備列表更新。
us4-03-search

狀態與邊界

狀態 觸發 畫面 / 文案
未勾選設備 進入設備列表 不顯示選取動作列
整頁全選 勾表頭全選且有跨頁設備 提示「Select all devices」可全域選取所有頁
目前所在場域 Move 對話框 標「Current」、radio 不可選
未選目標 尚未選取目標 「Move N devices」維持 disabled
搜尋無結果 目標搜尋無命中 顯示 empty state「No Matches Found」

驗收條件 QA · Given-When-Then

  • Given 選取設備並點「Move to」、選目標 Site,Then 設備移到目標 Site。
  • Given 選目標 Area,Then 設備移到該 Area。
  • Given 設備位於 Area、目標選母 Site,Then 設備直屬到母 Site。
  • Given 整頁全選且有跨頁設備,Then 提示「Select all devices」可全域選取。
  • Given 在 Move 對話框,Then 目前所在場域標「Current」且不可選。

各裝置類型適用性、批次/全域選取、錯誤情境以 OpenSpec 為準(site-device-operations)。

元件與 Token 決策

  • Selected Action Bar:選取時取代搜尋/篩選列(Move to / Delete / 已選數量 / Select all)。
  • Site Picker:階層 radio 選單,含搜尋與關鍵字 highlight、「Current」標記。
User Story 05

批次刪除設備

流程 Happy Path

  1. 在選取動作列(見 US4 批次移動設備)點「Delete」。
us5-01-selected
  1. 開啟「Delete devices」對話框:「Delete N devices? All associated data will be permanently erased.」下方為「Type DELETE to confirm」輸入框與紅色 WARNING。輸入正確「DELETE」前,「Delete N devices」維持 disabled。
us5-02-delete-dialog
  1. 在輸入框打「DELETE」→ 按「Delete N devices」→ 刪除完成、設備列表更新。

狀態與邊界

狀態 觸發 畫面 / 文案
輸入非 DELETE 確認框輸入錯誤文字 「Delete N devices」維持 disabled
資料抹除警示 開啟對話框 紅色「WARNING! All associated data—including SD card and cloud recordings—will be permanently erased. Linked configurations and dependent devices will also be removed.」
NVR / VSS 管理的 Camera 選取要刪除 不可獨立刪除,提示須透過母 NVR / VSS 管理;混選時列出不可刪者、其餘可繼續

驗收條件 QA · Given-When-Then

  • Given 選取設備並點「Delete」,Then 開啟確認對話框並顯示資料抹除警示。
  • Given 在確認框輸入「DELETE」並送出,Then 刪除所選設備、其相關資料永久抹除。
  • Given 在刪除設備確認框輸入非「DELETE」,Then 刪除被拒、「Delete N devices」維持 disabled。
  • Given 選取的是 NVR / VSS 管理的 Camera,Then 提示不可獨立刪除。

批次/全域刪除、混選管理相機等完整情境以 OpenSpec 為準(site-device-operations)。

元件與 Token 決策

  • Delete 確認對話框:「Type DELETE to confirm」輸入框 + WARNING alert(error)。
  • 進入點:選取動作列的「Delete」按鈕(元件定義見 US4)。
User Story 06

編輯 Site / Area(改名與位置)

流程 Happy Path

  1. 選一個 Site 或 Area,在右側標題列點「Edit」(pencil 圖示)。
  2. 開啟「Edit site」對話框:top-level Site 為分割版面(左 Name / Location 表單,右 Google 地圖,預帶現有定位 marker)。
  3. 改 Name(必填)/調整 Location(選填,可清空)→ 按「Save changes」。
us6-01-edit-site
Edit site:top-level Site 分割版面(左 Name / Location,右地圖),送出鈕「Save changes」
  1. 對 Area 點「Edit」時,沿用同一對話框但移除 Location 與地圖(單欄、只有 Name)——只有第一層 Site 有 Location。VORTEX key-screen 目前只有 Edit site 一張,Edit Area 畫面以此差異描述為準。

狀態與邊界

狀態 觸發 畫面 / 文案
Name 清空 編輯後清空名稱 拒絕儲存並要求輸入名稱(拒絕空字串)
Area 無 Location 編輯 Area 不顯示 Location 欄位與 Google Map
清空 Site Location top-level Site 清空地址 移除該 Site 的 Location

驗收條件 QA · Given-When-Then

  • Given 編輯 Site 名稱並按「Save changes」,Then 系統更新為新名稱。
  • Given 編輯 Area 名稱並儲存,Then 系統更新該 Area 名稱。
  • Given 名稱清空並送出,Then 拒絕並要求輸入名稱。(同 US1 建立一個 Site / US2 Add Area 的 Name 必填規則)
  • Given 編輯 Area,Then 不顯示 Location 欄位或 Google Map。(同 US2 Add Area 規則:只有第一層 Site 有 Location)
  • Given top-level Site 已有 Location 並清空,Then 移除該 Site 的 Location。

完整行為情境以 OpenSpec 為準:site-configuration · Rename Site or Area / Edit Site Location

元件與 Token 決策

  • 進入點:Site 標題列「Edit」按鈕(pencil 圖示)。
  • Edit site 對話框:沿用 Create site 的分割版面(左表單 / 右地圖),欄位預帶現有值;送出鈕「Save changes」。
  • Edit Area:同一對話框移除 Location 與地圖,收合為單欄表單。
  • 元件:InputButton/primary(Save changes)、Google Map(僅 top-level Site)。

TODO / 未解問題

  • Edit Area 無 VORTEX key-screen:目前以「Edit site 減去 Location / 地圖」描述,待補 Figma 畫面。
  • 是否允許在 Edit 內變更父層(Move)?移動規則以 OpenSpec 為準(site-configuration · Area movement restriction:Area 一旦建立即不可移動)。
User Story 07

刪除 Site / Area

流程 Happy Path

  1. 選一個 Site 或 Area,在標題列點「Delete」(trash 圖示,danger)。
  2. 若該 Site / Area 仍有子 Area、樓層圖或設備 → 開啟「Cannot Delete Site」警示:「"{名稱}" cannot be deleted.」+「Remove all areas, floor plans, and devices before deleting this site.」,只有「Cancel」。
us7-02-cannot-delete
Cannot Delete Site 警示:仍有 areas / floor plans / devices 時不可刪除
  1. 若已清空(無子 Area、無設備)→ 開啟「Delete site」確認框:「Delete "{名稱}" ? This cannot be undone.」+「Type DELETE to confirm」輸入框。輸入正確「DELETE」前,「Delete site」維持 disabled。
us7-01-delete-confirm
Delete site 確認框:Type DELETE to confirm(輸入 DELETE 前「Delete site」disabled)
  1. 在輸入框打「DELETE」→ 按「Delete site」→ 刪除完成、導回父層。

狀態與邊界

狀態 觸發 畫面 / 文案
仍有子層或設備 點 Delete 顯示「Cannot Delete Site」警示,須先移除 areas / floor plans / devices
輸入非 DELETE 確認框輸入錯誤文字 「Delete site」維持 disabled
取消 關閉對話框未確認 取消刪除操作
刪除其中一個 Area 確認刪除 父 Site 與同層其他 Area 不受影響

驗收條件 QA · Given-When-Then

  • Given Site / Area 仍有子 Area 或設備並點 Delete,Then 顯示不可刪除警示。
  • Given Site / Area 已清空並在確認框輸入「DELETE」送出,Then 刪除該 Site / Area 並導回父層。
  • Given 在刪除 Site / Area 確認框輸入非「DELETE」,Then 刪除被拒、「Delete site」維持 disabled。
  • Given 關閉對話框未確認,Then 取消刪除。
  • Given 刪除某個 Area,Then 父 Site 與同層其他 Area 維持不變。

各層級刪除前置條件(devices / Areas / child Areas 必須先移除或刪除)與隔離規則以 OpenSpec 為準:site-configuration · Delete Site/Area prerequisitesDelete Area isolation

元件與 Token 決策

  • 進入點:標題列「Delete」按鈕(trash 圖示,danger)。
  • Cannot Delete 警示:標題「Cannot Delete Site」+說明,單一「Cancel」。
  • Delete 確認框:「Type DELETE to confirm」輸入框 + danger「Delete site」按鈕(輸入正確 DELETE 才 enable)。

TODO / 未解問題

  • VORTEX key-screen 標題為「Cannot Delete Site / Delete site」;Area 變體(標題對應 Area)尚無獨立畫面,行為相同、文案待設計確認。
  • 不可刪除判斷的文案目前合併為單一句(areas / floor plans / devices);OpenSpec 另將「仍有 Areas / child Areas」與「仍有 devices」分列不同警示,是否細分待 PM 確認。行為以 OpenSpec 為準。
User Story 08

樓層圖區(瀏覽與卡片)

流程 Happy Path

  1. 選一個 Site 或 Area,「Floor plans」區位於 Site 資訊列與設備表之間,只顯示屬於該層的樓層圖。
us8-01-floorplans
Floor Plans 區:標題計數 + 水平卡片列(縮圖/名稱/N Devices/⋯ 選單)
  1. 標題列為 map 圖示 +「Floor plans (N/10)」計數。每張卡片:上方地圖縮圖、下方樓層圖名稱 +「N Devices」+ 右側「⋯」選單鈕;卡片以單列水平捲動排列。
  2. 點卡片「⋯」→ 開啟選單:「Go to floor plan」「Basic settings」「Delete」(Delete 為 danger)。〔此展開選單在 VORTEX key-screen 無對應畫面,僅文字描述。〕
  3. 該層無樓層圖時,區內置中顯示空狀態:「No Floor Plans Added」+「Add floor plans to this site to view and manage them here.」
us8-02-floorplan-empty
空狀態:No Floor Plans Added(此 key-screen 同時呈現設備空狀態)

狀態與邊界

狀態 觸發 畫面 / 文案
切換選取 選不同 Site / Area 樓層圖區內容換成新選取層的樓層圖
計數 3 張、上限 10 標題顯示「Floor plans (3/10)」;0 張顯示「Floor plans (0/10)」
卡片超出寬度 樓層圖多於可視寬 可水平捲動檢視其餘卡片
無樓層圖 該層 0 張 置中空狀態「No Floor Plans Added」+說明

驗收條件 QA · Given-When-Then

  • Given 選取 Site / Area,Then 樓層圖區只顯示屬於該層的樓層圖。
  • Given Site 有 3 張、上限 10,Then 標題顯示「Floor plans (3/10)」。
  • Given 切換到另一個 Site / Area,Then 樓層圖區換成新選取層的樓層圖。
  • Given 點卡片的「⋯」選單鈕,Then 顯示樓層圖動作下拉選單。
  • Given 該層 0 張樓層圖,Then 置中顯示「No Floor Plans Added」與說明文字。

各情境完整行為以 OpenSpec 為準:floor-plan-display

元件與 Token 決策

  • Floor Plans 區:標題(map 圖示 +「Floor plans (N/10)」)+ 水平捲動卡片列。
  • 樓層圖卡片:上方縮圖、下方名稱 +「N Devices」+「⋯」context menu(Go to floor plan / Basic settings / Delete,Delete 為 danger)。
  • 空狀態:置中標題 + 說明文字。

TODO / 未解問題

  • 樓層圖 context menu 展開狀態無 VORTEX key-screen,目前僅文字描述選單項目,待補 Figma 畫面。
  • 樓層圖動作(Go to / Basic settings / Delete)與「Add Floor plan」實際流程,待實作後補成獨立 US。
User Story 09

進入設備設定(Device Settings 導頁)

無獨立 VORTEX key-screen:設備列的動作入口已呈現在 US8 的「Site Selected (With Devices)」畫面中(hover 某一列時右側出現的動作圖示),本頁以該畫面與 OpenSpec 描述行為,不另截圖。

流程 Happy Path

  1. 在設備列表,hover 某一列時右側出現動作圖示:設定(齒輪)= Device Settings 入口、前往(external-link)、刪除(trash)。
  2. 點該列的設定齒輪 → 直接導向該設備的 Device Settings 頁。

狀態與邊界

狀態 觸發 畫面 / 文案
每列都有入口 設備顯示於列表 hover 該列時右側顯示連到 Device Settings 的設定圖示
有檢視權限 使用者可檢視該設備 設定圖示可點擊、可運作
權限受限 Member 等角色 入口顯示 / 可用與否依權限(見 OpenSpec site-permissions

驗收條件 QA · Given-When-Then

  • Given 設備顯示於列表,Then 每列都有可進入 Device Settings 的入口(hover 顯示設定圖示)。
  • Given 點某列的設定圖示,Then 直接導向該設備的 Device Settings 頁。
  • Given 使用者有檢視該設備的權限,Then 入口可點擊且可運作。

導頁目的地(Device Settings 頁)與角色權限規則以 OpenSpec 為準:site-device-operations / site-permissions

元件與 Token 決策

  • 設備列 hover 動作組:設定(齒輪,Device Settings 入口)/前往(external-link)/刪除(trash)。
  • 參考畫面:US8「Site Selected (With Devices)」設備列(key-screen 04)。

TODO / 未解問題

  • 設備列動作圖示的 hover / tooltip 與實際導頁目的地路由,待設計與實作確認;目前無獨立 VORTEX 截圖。
User Story 10

首次使用:尚未建立任何 Site

另一個空狀態(「有 Site 但沒選」)已由 US3 涵蓋(us3-01-no-selection 對應 key-screen 02「No Site Selected」),本頁僅描述「Organization 完全沒有 Site」的首次使用空狀態。

流程 Happy Path

  1. 使用者進入 Site 頁,Organization 尚未建立任何 Site。
  2. 主區域中央顯示空狀態:地點圖示 +「Let's create your first Site」+ 主要按鈕「Create site」(藍色,含「+」圖示)。
  3. 側欄 Site list 區為空(只保留標題「Sites」、「+」、Search sites 搜尋框,沒有任何 Site / Area 列)。
us10-01-no-site
首次使用空狀態:「Let's create your first Site」+「Create site」CTA;側欄 Site list 為空
  1. 點「Create site」→ 進入 Create site 對話框(見 US1)。

狀態與邊界

狀態 觸發 畫面 / 文案
Organization 無 Site 進入 Site 頁 主區中央顯示「Let's create your first Site」+「Create site」CTA
Site list 區 同上 僅保留標題列、「+」與搜尋框,無 Site / Area 列
設備相關操作 仍處於空狀態時 全部 disabled,直到至少建立一個 Site
側欄「+」 同上 也可從這裡開啟 Create site(與主區 CTA 等效)

驗收條件 QA · Given-When-Then

  • Given Organization 無 Site 並進入 Site 頁,Then 主區顯眼處顯示引導使用者建立第一個 Site 的訊息。
  • Given 空狀態顯示時,Then 訊息提供明確的建立 Site CTA 按鈕「Create site」。
  • Given 處於空狀態時,Then 所有與設備相關的操作維持 disabled,直到至少建立一個 Site。
  • Given 點主區「Create site」或側欄「+」,Then 進入 Create site 對話框(行為見 US1)。

完整行為情境以 OpenSpec 為準:site-page-layout · Empty state prompt

元件與 Token 決策

  • 空狀態 illustration:地點圖示(與 US3 us3-01-no-selection 同元件,不同文案)。
  • 標題:「Let's create your first Site」。
  • CTA:Button/primary「Create site」+「+」圖示。
  • 側欄保留「Sites」標題列、「+」與 Search sites(行為對應 Create site)。

TODO / 未解問題

  • 「device-related operations SHALL be disabled until a Site is created」具體 disable 範圍(全站導覽列其他頁面?或僅 Site 頁本身相關 UI?)待與 PM 確認。