---
title: FR-163 專案總覽證據視角——收口 SUMMARY
date: 2026-10-25
---

# FR-163 專案總覽證據視角——收口 SUMMARY（2026-10-25）

## 一句話

專案總覽頁左側導航標題列多一組「控制項視角｜證據視角」；切到證據視角，左樹展到評估目標、右邊一張平的證據表，不用再點四層才看到檔名。從決策者口述到收口同一天完成。

## 為何做

決策者 2026-10-25 口述：「我要一層一層點到 AO 才看得到檔案」。要盤「這個控制項證據齊不齊」「哪些評估目標一份都沒有」只能一條條點。

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

- **入口**：左欄「控制項導航」標題列右側的 segmented 切換；選擇依專案記在瀏覽器 localStorage。
- **左樹**：同款標題列＋搜尋；群組→控制項→評估目標，排法對齊控制項視角（代號與份數一行、名稱另起一行最多兩行）；評估目標列 `obj.N` 編號＋完整名稱（換行不截斷）；每節點去重後的證據份數，0 份紅字。點任一層只縮右表範圍。
- **右表**：四欄——型別、證據（檔名＋大小；第二行來源 Tag · 上傳者 · 日期）、位置（第一行「N 個控制項 · N 個評估目標」，下面最多兩行 `obj.N`＋名稱，超過收「還有 N 個…」tooltip；評估目標範圍隱藏）、操作（檔案預覽／下載／開任務，連結開啟／開任務）。型別 chip 全部｜檔案｜連結；分段 不分段｜依控制項｜依評估目標，分段列浮在卡片上（控制項段淡主色、評估目標段浮層色；2026-10-26 隨 FR-164 追修，FE `a1e8bb43`），無證據的評估目標列「尚無證據」。
- **資料**：全部來自既有 `GET /ssp/{sspUid}/control-tree`，不另開端點。同一個檔掛多個評估目標以 `file_uid` 去重（連結以 `reference_url`）。切換時先畫讀取狀態再攤平；不分段時 DataTable 虛擬捲動。
- **只看不改**：加檔／改連結回任務抽屜。沒有採納／退回狀態欄（系統無此概念）。

## Commits

**BE `feature/FR-139`**（合回 `16ca9cb1d`，工作坊 17）

| hash | 內容 |
|---|---|
| `7ed7de2bf` | design／D2 雛形／開卡 CM-3083～3085／登記表 |
| `b39d4c70a` | 開卡腳本改 Repo 欄已存在；Notion 加「Repo」select、workshop.toml 加 `[repos]`（走 agent-workshop API） |
| `8ded42389` | **FR-163.1**：control-tree 每筆證據補 `uid`／`description`／`file_uid`／`file_size`／`created_user`／`created_at`＋`created_user_name` enrich（3 檔 13+/3−） |
| `c05983323` | 追加卡 CM-3087～3089 開卡腳本 |
| `abf35224b` | 追加卡 CM-3090 開卡腳本 |

**FE `feature/FR-139`**（合回 `a68ae07f` 工作坊 17、`781cb090` 工作坊 19）

| hash | 內容 |
|---|---|
| `d0d48634`＋`41d73941` | **FR-163.2**：證據視角本體——`evidence-view/` 七支新檔，總覽頁 +10 行掛載；截圖 |
| `4b998d0b` | **FR-163.3**：切換鈕從頁首動作列搬到 master-detail 區上方 |
| `cb8d9f1c` | **FR-163.4**：攤平延後一格先畫讀取狀態；不分段時虛擬捲動（分段 rowGroupMode 不能並用） |
| `a3835c52` | **FR-163.5**：八欄縮四欄、證據格兩行、位置欄數量優先、任務移進操作欄 |
| `8b6e2594` | **FR-163.6**（首腦直改）：切換鈕併進左欄標題列，證據視角補同款標題列，`v-model:view-mode` 透傳；左 Splitter 24%→27% |
| `f2561b64` | 直改：左樹箭頭點了沒反應——模板 `toggle(expandedControls, …)` 被 Vue 自動拆 ref 成 Set |
| `100974a9` | 直改：評估目標列補 `obj.N` 編號 |
| `080b1cc9` | 直改：評估目標名稱完整換行 |
| `9380b670` | 直改：導航排法對齊控制項視角（名稱另起一行、字級一致） |
| `189017cd` | 直改：分段列底色改 `--bg-base`＋細線；colspan 用 `:pt` 給實際欄數（PrimeVue 寫死欄數−1） |

**未 push**（兩 repo 都在 `feature/FR-139`；BE ahead 17、FE ahead 23，含其他 FR 的 commit）。

## 卡片

母卡 CM-3083 Done；子卡 CM-3084～3085、3087～3090 全 Done（工作坊 17、19 各 `finish` 合回並結案；3090 首腦直改後由決策者實看核可）。

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

| 決策 | 結果 |
|---|---|
| D 版「右邊依控制項分段卡片再依評估目標分段卡片」 | **推翻**——決策者實看「很難看、不友善」；查業界（Drata／Vanta 證據庫平鋪＋歸屬欄位；表格 UX 巢狀上限兩層）改 D2「永遠一張表＋位置欄」 |
| 雛形假資料「退回原因：缺 9 月資料」 | **刪除**——決策者問「這哪來的」；查證 `job_evidences` 無審核欄、FR-142「採用」在稽核結果側，畫面不設狀態欄 |
| 分隔線雛形用純 JS | 產品一律 PrimeVue `Splitter`（決策者「有現成的就不要自己硬用」） |
| 去重鍵用 `uid`（卡上寫的） | **runner 抓到卡片寫錯**：DEV 4,194 筆 uid 對 380 個實際檔案，改 `file_uid` |
| 切換鈕放頁首動作列（.3 放 master-detail 上方） | 決策者兩度退回：「放到下面」→「跟導航合併，放那邊突兀」→ 併進標題列（.6） |
| 「可以有讀取畫面嗎」 | 單加 spinner 沒用（同步攤平佔住主執行緒），改延後一格＋虛擬捲動 |
| 「時間跟上傳者合併」 | 不只合併——右半四欄每列相同卻各佔固定寬，整列重排成四欄 |
| 7 棵手刻導航樹收斂成共用元件 | **決策者裁「之後再做，現在改風險太大，不是主軸」**（見 follow-up） |

## 驗收後五筆直改的根因（給下次開卡）

1. **箭頭展不開**：`@click.stop="toggle(expandedControls, id)"`——`<script setup>` 模板把頂層 ref 自動拆開，函式收到的是 Set 不是 ref，寫不回去。點「那一列」會展開（選取連帶展開），驗收截圖都點列所以漏掉。群組箭頭同病。
2. **缺 AO 編號、名稱截斷、字太小、導航排法**：第 7 棵手刻的樹沒帶前 6 棵修過的東西。根因是「每做一頁再刻一棵」，見 follow-up。
3. **分段列看不出來**：`--bg-elevated` 與卡片只差一點；且 PrimeVue subheader colspan 寫死 `columnsLength − 1`（預設分組欄要佔一格），本表沒那欄，宣告 hidden 欄無效（hidden 會被扣掉），要用 `:pt` 給實際欄數。

## 規範文件

| 文件 | 狀態 |
|---|---|
| 頁面 SPEC `spec-site/current/project-management/project-overview.md` | ✓ 變更紀錄＋§1.1 9a＋§7 檔案地圖＋§12 坑 19 |
| 使用手冊 `user-manual/lifecycle-and-use-cases.md` | ✓ 新段「一次看完每條評估目標交了哪些證據」 |
| `docs/features/README.md` 登記表 | ✓ 🟡→✅ |
| FR README | ✓ 七張卡 Done、指向本 SUMMARY |
| memory | ✓ `feedback_playwright_run_code_file_echoes_credentials`、`feedback_fe_nav_tree_rewritten_per_page_reuse_first`（同步進 `docs/claude/memory/`） |
| analysis | 不另寫——決策軌跡全在本檔與 design.md D1～D10 |

## Follow-up

1. **🔴 FE 7 棵各自手刻的「群組→控制項→評估目標」導航樹**（`ProjectAuditorOverview.vue` 內嵌、`ProjectPlanningView.vue` 內嵌、`EvidenceNavTree`、`ApObjectiveTree`、`ArObjectiveTree`、`PoamObjectiveTree`、`MfControlTree`）。建議：以 `ApObjectiveTree` 為底抽共用 `ControlObjectiveTree`，先換證據視角，再逐支換 Ap／Ar／Poam／Mf，兩支超大檔最後。決策者 2026-10-25 裁延後。
2. **DEV `blsadmin` 密碼進了本 session 對話紀錄**（Playwright MCP 回顯登入腳本）。歸檔 `docs/conversation-history/` 時遮掉；建議輪換密碼並同步 test repo `.env.e2e`。
3. 死掉的 i18n 鍵 `nav_groups_suffix`／`nav_controls_suffix`：總覽頁已無引用，本次收口一併刪。
4. FE 截圖資料夾名 `docs/features/FR-163-round-evidence-view/` 少了 `2610`（runner 自取），與 BE 資料夾不一致；不影響功能，下次動到再改。
5. 問卷型證據（SURVEY）第一版不列（design D10）；匯出證據清單 Excel 未做。
6. `nav_groups_suffix` 那串「N 群組 · N 控制項」只剩搜尋結果列有，標題列拿掉（給切換鈕讓位）。
