---
title: FR-164 專案總覽控制項視角重設計——收口 SUMMARY
date: 2026-10-26
---

# FR-164 專案總覽控制項視角重設計——收口 SUMMARY（2026-10-26）

## 一句話

專案總覽頁的控制項視角整個重排：左樹三層都能點（與證據視角共用同一棵），右欄固定「參考資料（只讀）」＋「任務（唯一可操作、永遠一張平表）」上下兩塊，可拖可收。使用者看得出哪裡能點、點得到評估目標、同一件事的資料不再散三層。順手做了「專案只有一輪且未走完時直接進總覽」。

## 為何做

決策者 2026-10-25 口述：「使用者反應看不出哪些是可以操作的；左邊導航點不到 AO；東一塊西一塊。」實查舊版：左樹只到控制項；右欄控制項卡→現況說明摺疊→評估目標卡→任務列，三層手風琴。

## 做出來的行為（終局）

- **左樹**：`EvidenceNavTree mode="control"`——群組／控制項／評估目標三層可點；列尾進度％（群組、控制項）或 k/n（評估目標）；⚡待執行、✎現況未填（規劃期）、✓已審閱三種徽章；搜尋、全部展開／收合、「我的待辦」（左樹與右表同步過濾）；底部圖例。進度條軌道加 1px 框，兩個主題 0% 都看得出空軌。
- **右上參考資料**（只讀，無按鈕除收起）：群組＝描述＋統計；控制項＝條文、現況說明（狀態 Tag／描述／備註／程序書）；評估目標＝條文、評估目標現況、控制項現況說明。**全部上下疊**。高度預設跟著內容（上限佔右欄七成），拖上下分隔線後固定並記住，標題列「恢復自動」清掉；可收起只留標題列。
- **右下任務**：永遠一張平表、一列一個任務、表內無展開收合。篩選 全部｜待我執行｜未完成｜已完成；分群預設跟選取層走（群組→依控制項、控制項→依評估目標、評估目標→不分群，改過記住）。欄：任務名、位置（控制項代號＋`[a]`＋條文完整換行；依評估目標分群或選評估目標時隱藏）、負責人、證據數＋AI 徽章、狀態、「⚡執行／開啟›」。分群小標列浮在卡片上（控制項淡主色、評估目標浮層色、圓角），群間留空白帶；審閱鈕在小標列（不分群時在任務標題列右側）。表格離卡片四邊 1rem，列距 0.75rem。
- **移除**：舊右側面板整段（總覽頁 2,140→1,155 行）；專案資訊的「受評範圍→前往系統安全計畫編輯」提示列。
- **專案入口**：只有一輪且 `is_finished=false` 時，稽核計畫列表 `router.replace` 進該輪總覽。
- **不動 BE**。

## Commits

**FE `feature/FR-139`**（工作坊 20 三卡合回 `f587398b`；其後首腦直改）

| hash | 內容 |
|---|---|
| `3caed67c` | FR-164.1 左樹加 control 模式（CM-3092） |
| `705d176f` | FR-164.2 右側兩塊子元件＋composable＋單測（CM-3095） |
| `4c552922`、`0bed488f` | FR-164.3 接線、刪舊面板、1280 寬修正（CM-3096） |
| `f587398b` | 合回 ws-CM-3091 → feature/FR-139 |
| `f19a4641` | CM-3099：參考資料上下疊、拔 SSP 提示列、任務表版面重訂、小標列底色與 sticky 修正 |
| `bc84cb78` | 參考資料自適應高度（第一版，純自適應） |
| `a4b8ea79` | 參考資料「預設自適應、拖過固定、可恢復自動」；左樹進度條軌道加框 |
| `1861a89f` | 專案只有一輪且未走完直接進總覽 |
| `a1e8bb43` | 證據視角分段列同步改成浮在卡片上（決策者收口後追加） |

**BE `feature/FR-139`**（文件）：`6a7fecf57`→`e932aa79e`→`eb0da3fb8`→`9eab58107`→`566f1aff9`（雛形五版）、`dcfc7bde4`（design＋開卡）、`88c89b950`、`cf1c6b4df`、`3be2c8d18`、`c52ff73d4`、`4eddf16c7`、`959d56e65`、`6905b9c8c`、本收口 commit。

## 卡片

母卡 CM-3091；子卡 CM-3092（批 1）、CM-3095（批 1）、CM-3096（批 2）、CM-3099（批 3，首腦直改）。CM-3093／3094 為建卡腳本重跑誤建，已刪。

## 決策軌跡（含被推翻的）

| 回合 | 提案 | 結果 |
|---|---|---|
| 雛形 v1 | 上下兩塊、群組層全攤平、表內「只看這條」跳左樹 | 上下定案；拿掉「只看這條」；群組層「預設只列分段列」 |
| 雛形 v2 | 把「只列分段列」做成控制項卡→評估目標→任務三層收合 | **退回**：「跟原本一樣」 |
| 雛形 v3 | 徹底平表＋位置欄＋分群選配 | 核可；再加：位置欄不截斷、分群預設跟層走、「分段」改名「分群」 |
| 複測 1 | 參考資料條文與現況說明兩欄 | **退回**：「永遠不要左右」（design.md 寫錯，runner 照做） |
| 複測 2 | 任務表列距、底色、貼邊 | 三度點名後改成整套版面重訂 |
| 複測 3 | 參考資料固定高（上下 Splitter） | 退回→純自適應→退回→「預設自適應、拖過固定、恢復自動」 |

## 驗收與直改的根因（給下次開卡）

- **design.md 寫「兩欄」就會做出兩欄**：版面方向要在 design 明寫「上下疊」，不能靠 runner 猜。已立 memory `feedback_ui_never_side_by_side_columns_stack_vertically`。
- **「預設只列分段列」被首腦自己理解成收合**：決策者的詞要回到「平表」這個已核可的前提下解讀。
- **PrimeVue 分群列 sticky**：scrollable DataTable 的 `rowgroup-header` 預設 sticky，換透明底一定露餡。
- **工作坊同一張卡派了兩個 session**（CM-3092、CM-3095 都有）：兩邊 runner 自行協調停手，但要查工作坊為何重派。
- **建卡腳本炸在第 N 張會留下前幾張**：spec 先驗 block 型別（`rules()` 的 extra 要字串）再建。

## 規範文件

- SPEC：`docs/spec-site/current/project-management/project-overview.md`（變更紀錄＋§1.1 第 3／9／9b／10／11 列＋§7＋§12 坑 20）、`project-ap-list.md`（變更紀錄＋§1.1 第 5 列）。
- design：`design.md` D1～D10（D8 已改為自適應＋可拖）。
- 使用手冊：`docs/user-manual/lifecycle-and-use-cases.md`「所有參與者：在專案總覽找到自己要做的任務」（三塊怎麼用、專案入口直接進總覽）。
- 對話歸檔：`docs/conversation-history/2026-10-25/fr164-control-view-redesign/`（10-25～10-26 同一個 session，原始 dump，已掃 secret 命中 0）。
- memory：`feedback_ui_never_side_by_side_columns_stack_vertically`（新）；`feedback_fe_nav_tree_rewritten_per_page_reuse_first`（本案沿用左樹，第一個沒再刻的案例）。

## Follow-up

- `AOPickerDialog`（FR-162）徽章整面紅棕太重，決策者看過後裁「先不要動」。
- 7 棵手刻導航樹的收斂仍待另開 FR（本案是第一個沿用而非重刻的）。
- 1280 寬且左欄拉很寬時，任務表在框內橫捲（頁面不橫捲）。
