---
title: "證據分類審閱頁 UI 收斂 — 討論稿 (FR-122.6-D)"
brand: "Guidant AI · **FR-122** 證據分類審閱頁 UI"
eyebrow: "FR-122.6-D · CM-2334 · 討論稿 · 2026-09-29"
h1: "審閱頁只該回答一件事：還剩幾份要我處理，這份要做什麼"
lede: "第③步審閱頁現在把同一件事講四次、卻沒有給使用者一個可以按的動作。本稿比較三個版面方案，**決策者裁定採方案 B「一條待辦線」**：把統計卡、黃區、兩種篩選收成一條「要你處理 6 ｜ 已完成 59」的切換，右側每份檔最上面直接告訴你下一步。"
chips: [
  {text: "已裁：方案 B", kind: ok},
  {text: "已裁：確認寫進資料", kind: ok},
  {text: "已裁：高把握度的檔不列入待處理", kind: ok},
  {text: "只動 FE，不改待人審契約", kind: plain}
]
footer: "FR-122.6-D 審閱頁 UI 討論稿 · 盤點來源：EvidenceClassificationReview.vue、ClassificationReviewQueue／FileList／FileDetail／FilterBar／StatsRow／PlacementTable、jedi-evidence-classification gateway_classifier.py 與 evidence_batch_service.save_state"
---

## 先看 mockup {#mockup nav="mockup"}

**[開啟互動 mockup：現況＋三個方案切換比較](mockups/review-page-ui.html)**（深色主題、配色照 FE design tokens；紅圈數字對應下面五個亂點）

## 現況的五個亂點 {#problems nav="亂點"}

使用者一進頁面，要讀完「五張統計卡 → 黃色待人審區 → 篩選列（兩種篩選鈕＋狀態下拉＋把握度滑桿）→ 左清單 → 右明細」七塊，才拼得出「我現在該做什麼」。

| # | 亂點 | 實際畫面 |
|---|---|---|
| ① | **同一件事講四次** | 「待人審」同時出現在黃區、左清單紅徽章、右明細紅徽章＋原因一行、狀態下拉的一個選項 |
| ② | **沒有處理動作** | 徽章看起來像要解鎖的狀態，決策者第一反應是找「放行」鈕，找不到。頁面沒講「AI 沒判，請你自己分」 |
| ③ | **AI 勾的和人勾的分不出來** | 檢查點表的「狀態」欄只有「已配對／新加入」；「新加入」存檔後就消失，之後誰勾的完全看不出 |
| ④ | **黃區佔版面** | 黃區逐份列出檔名按鈕，份數一多就把清單推到畫面下方 |
| ⑤ | **把握度門檻與待人審互動不直觀** | 預設只顯示「把握度 ≥ 0.80」的檔，但待人審的檔沒分數也照樣出現（程式寫了例外），使用者看不出規則 |

另外還有兩處跟亂點同源、方案要一起處理的：「只看未分類」鈕與統計卡的「未分類」是同一個動作的兩個入口；清單每列最多疊三個徽章（待人審／AI 建議／未分類）。

## 三個方案 {#options nav="方案"}

::: grid2
::: {.card .warn}
#### 方案 A：就地減法

版面不動，只拿掉重複：黃區改成篩選列一顆「只看待人審 4」鈕；清單徽章縮成小驚嘆號；明細提示改寫成「該做什麼」；檢查點表加「來源」欄。

**解**：①③④ 全解；② 只補說明沒有動作；⑤ 只把例外寫進提示。

**代價**：最小，約 1 張 FE 卡。但統計卡、兩顆切換鈕、狀態下拉、滑桿都還在，使用者仍要自己拼出先做什麼；待人審的檔處理完仍永遠掛著驚嘆號。
:::

::: {.card .ok}
#### 方案 B：一條待辦線（建議）

頁頭收成一條分段切換「要你處理 6 ｜ 已完成 59 ｜ 非證據 2 ｜ 全部 67」＋進度條，預設停在「要你處理」。右側明細最上面一張「下一步」卡，附「確認這樣分類，下一份」「標為非證據」兩顆鈕。

**解**：①～⑤ 全解。

**代價**：約 2 張 FE 卡。要在每份檔記一個「已人工確認（誰、何時）」註記。
:::
:::

::: {.card .crit}
#### 方案 C：逐份審閱模式

保留現有頁面當「總覽」，另開一個全畫面、一次只看一份的審閱模式，做完自動下一份。

**解**：審閱模式內全解；但總覽頁的五個亂點原封不動。

**代價**：最大，約 2～3 張卡，兩套畫面要一起維護。一批只有 4～6 份要人看時用不到這麼重。
:::

### 方案對照

| | A 就地減法 | **B 一條待辦線** | C 逐份審閱模式 |
|---|---|---|---|
| ① 講四次 | ✅ | ✅ | 審閱模式內 ✅ |
| ② 沒有動作 | 🟡 只有說明 | ✅ 確認鈕 | ✅ 確認鈕 |
| ③ AI／人工分不出 | ✅ | ✅ | ✅ |
| ④ 黃區佔版面 | ✅ | ✅ | 審閱模式內 ✅ |
| ⑤ 門檻例外 | 🟡 寫進提示 | ✅ 門檻不再篩檔 | 審閱模式內 ✅ |
| 實作卡數 | 1 張 FE | 2 張 FE | 2～3 張 FE |
| 碰後端 | 不碰 | 不改資料表、不改待人審欄位（見下） | 同 B |

## 建議方案 B 的細節 {#plan-b nav="方案 B"}

### 頁頭：一條切換取代五張卡＋黃區＋兩種篩選

| 分頁 | 裡面是哪些檔 |
|---|---|
| **要你處理**（預設） | 待人審的檔 ＋ 未分類的檔（AI 沒判、或判了但把握度不到門檻沒有自動配對），且還沒被人確認過 |
| 已完成 | AI 已自動配對的檔 ＋ 人確認過的檔 |
| 非證據 | 標為非證據的檔 |
| 全部 | 所有檔，這裡才出現搜尋與領域篩選 |

**統計的顯示方式改了，但數字一個都沒少**：五張統計卡收成一條進度條「已處理 59 / 65 份 · 涵蓋 88 / 110 個檢查點」，旁邊一個「統計 ▾」展開後列出原本五張卡的全部數字（處理檔案、已分類與百分比、未分類、配對總數與每檔平均、檢查點涵蓋）。原本點「未分類」卡會切到只看未分類，這個動作由「要你處理」分頁取代。

### 兩個「把握度」要分清楚

頁面上現在有兩個數字都叫把握度，意思不同，這是亂點⑤的根源：

| | 在哪設 | 作用 | 會不會改變分類結果 |
|---|---|---|---|
| **信心門檻**（本批 0.70） | 第②步「分類設定」，預設 0.70，可調 0.50～1.00 | AI 給的分數 ≥ 門檻 → **自動配對**（算分類成功）；低於門檻 → 不配對，只列為候選留給人選 | **會**，這才是「幾分以上算歸類成功」 |
| **AI 把握度 ≥**（第③步滑桿，預設 0.80） | 第③步篩選列 | 只是**畫面篩選**：把最高分低於這個數的檔從清單藏起來 | 不會，只影響看得到哪些檔 |

現況有一個實際問題：第③步滑桿寫死預設 0.80，但第②步門檻預設 0.70，所以**分數 0.70～0.79、已經自動配對好的檔，一進審閱頁就被藏起來**，使用者不會知道。

B 的處理：

- **門檻在第③步也能調，而且會改變結果**：頁頭「自動配對門檻 0.70」點開有滑桿（0.40～1.00），按「套用」後用這次分類已經存好的 AI 分數重挑自動配對，**不重跑 AI、不花錢**。調高 → 較沒把握的配對拿掉、那些檔回到「要你處理」；調低 → 更多檔自動配好變成已完成
- 重挑只動 AI 自動配的配對；人手動加的、已確認的檔、非證據都不碰，否則拉一下滑桿就洗掉人的判斷
- 下限 0.40：AI 分類時只回報這個分數以上的配對，再低也配不出東西
- 審閱時調的門檻另存 `review_threshold`，不覆寫第②步的 `confidence_threshold`——驗證報表拿後者當「AI 原始判斷」的基準線，覆寫會讓報表的 AI 準確率算錯。頁頭調過會顯示「（原本 0.70）」
- 篩選用的分數滑桿改名「只顯示 AI 分數 ≥」、搬到「全部」分頁、**預設 0**，說明寫明不改配對
- 明細候選清單的「只看分數 ≥ 本批門檻 ／ 看全部」小切換，取代原本拿同一支滑桿藏低分候選的作用
- 「要你處理」不吃任何分數篩選，所以不會有「沒分數的檔為什麼出現」的疑問

### 被安全檢查攔下的檔要一眼分得出來

「要你處理」裡混著兩種檔：被安全檢查攔下的（檔案可能有問題，要先確認內容），和 AI 沒把握的（只是要人挑檢查點）。兩者處理方式不同，不能長得一樣：

- 清單列紅底＋左側紅條＋盾牌圖示＋「已攔截」標籤，固定排在最前面
- 「要你處理」分頁旁加紅色小計，一眼看出其中幾份是被攔下的
- 明細「下一步」卡改紅框，標題寫「安全檢查攔下：<原因>」

### 左清單：每列一個狀態點＋一行原因

不再疊三個徽章。紅點＝安全檢查攔下（小字寫「疑似藏字 · 沒送 AI」「疑似注入指令 · AI 結果僅供參考」），橙點＝AI 沒把握（小字寫「最高 0.41」或「AI 沒找到對應檢查點」）。「AI 建議」徽章拿掉——它只是「這份有送 AI」，在「來源」欄已表達。

### 右明細：最上面固定一張「下一步」卡

- 說明原因，並**用一句話講清楚要你做什麼**：「為了安全沒有交給 AI 判讀，請先預覽確認內容，再挑檢查點；不是證據就標為非證據。」
- 三顆鈕：挑檢查點／**確認這樣分類，下一份**／標為非證據
- 按「確認」：這份移到「已完成」、自動跳下一份；在該檔記下誰、何時確認
- **待人審標記保留**（決策者已裁「維持標記、人接手，不直接擋」）：確認後徽章轉灰留在「已完成」的列上，事後仍查得到這份曾被攔下

### 把證據改掛到其他控制項：放在已配對表的標題右邊

現有的「加入其他評估項目配對」對話框（`AOPickerDialog`，列出這次分類的全部控制項與檢查點，打勾＝掛上、取消打勾＝拿掉，AI 評過分的旁邊顯示分數）**保留不動**，只改兩件事：

- **按鈕改名「調整檢查點」，放在「已配對的檢查點」標題右邊**——在哪張表就在哪改，不另開一條動作列。「下一步」卡不再放重複的挑選鈕，只用文字指向它
- **待處理、已完成的檔都有**：AI 判好的檔也能加掛到 AI 沒想到的控制項、拿掉勾錯的

「標為非證據」「從證據池刪除」這兩個會把檔移走、不常按的動作，收進檔名右邊的 ⋮ 選單，不跟調整鈕擠在一起；待處理的檔在「下一步」卡另有「標為非證據」。

**已確認過的檔被改了配對，確認註記要清掉、回到「要你處理」**——否則畫面會顯示「王小明確認過」，但他確認的是改之前的版本。

### 檢查點表：加「來源」欄（其他欄位與動作不變）

「AI」紫色標籤附把握度／「人工」灰色標籤。資料本來就有記：每筆配對的 `source` 欄在 AI 自動配對時是 `ai`、在頁面手動加入時是 `manual`，存檔時整包照存（`evidence_batch_service.save_state` 只補檢查點字母、不動其他欄），所以**不用改後端就能在存檔後照樣分辨**。原本的「已配對／新加入」狀態欄收成一個小圓點，只在尚未存檔時顯示。

### 「已人工確認」要存在哪

建議記在每份檔的分類結果裡多兩欄 `reviewed_by`、`reviewed_at`（和 `needs_review` 並排，但**不改 `needs_review`／`review_reason` 的值與意義**）。這包資料存檔時整包寫回，現況看不出會被擋；實作卡開工時要實測一次存檔後重新整理這兩欄還在，並確認歸檔與報表不受多出來的欄位影響。

## 原有功能逐項對照（B 不能讓任何一項消失） {#keep nav="功能對照"}

讀 `EvidenceClassificationReview.vue` 與七支子元件列出的全部現有功能，每一項在 B 的落點：

| 現有功能 | B 裡在哪 |
|---|---|
| 五張統計卡 | 進度條＋「統計 ▾」展開，數字全保留 |
| 點「未分類」卡／「只看未分類」鈕 | 「要你處理」分頁 |
| 待人審黃區（依原因分組、點檔名跳過去） | 「要你處理」清單，每列小字寫原因；依原因排在前面 |
| 搜尋檔名、領域篩選、重設 | 「全部」分頁 |
| 狀態下拉：未分類／待人審／非證據 | 分頁「要你處理」「非證據」 |
| 狀態下拉：單一／多個（≥2）／很多（≥5）配對 | 「全部」分頁的「配對數」下拉 |
| AI 把握度滑桿 | 「全部」分頁，預設改 0（見上一節） |
| 清單三欄排序（檔名／分數／配對數）、可拖拉寬度、顯示幾份／共幾份 | 保留 |
| 每列預覽檔案 👁、副檔名與評估數小字、分數條 | 保留 |
| 鍵盤 ↑↓／j k 換檔、明細的上一份／下一份與 n / m | 保留，「確認，下一份」另外自動跳 |
| 明細：檔案代號、評估幾項、配對幾項 | 保留 |
| 未分類說明（最高分低於門檻、評估了幾個候選） | 併進「下一步」卡 |
| 已配對表：展開看 AI 判斷理由、移除、復原移除、未存檔前標「新加入」 | 保留，再加「來源」欄 |
| AI 候選表與一鍵加入、沒有候選時的提示 | 保留，加「只看 ≥ 門檻／看全部」切換 |
| 加入其他配對（全部控制項對話框） | 「調整檢查點」，在已配對表標題右邊，每份檔都有 |
| 標為非證據（含確認框）、非證據還原 | 檔名旁 ⋮ 選單；待處理的檔在下一步卡也有；「非證據」分頁內可還原 |
| 從證據池刪除（含確認框） | 檔名旁 ⋮ 選單 |
| 儲存變更（n）、捨棄變更 | 移到頁頭，隨時看得到 |
| 歸檔進任務／重新歸檔（未存檔時停用、稽核員不顯示） | 頁頭，規則不變 |
| 重新分類鈕（獨立開啟本頁時） | 保留 |
| AI 用量與費用列（僅開發模式） | 保留 |

**唯一拿掉的是重複的呈現**：黃區、清單上的「AI 建議」徽章（改由來源欄表達）、明細標題旁的重複徽章。實作卡驗收要逐列勾這張表。

## 決策 {#decisions nav="決策"}

::: {.callout .decided}
**已裁：採方案 B**

A 省一張卡，但沒有解「找不到該按什麼」；C 太重，而且原頁面的亂還在。
:::

::: {.callout .decided}
**已裁：「確認」寫進資料**

記誰、何時，存在每份檔的分類結果裡，不動待人審欄位、不改資料表。只做在畫面上的話，一重整「要你處理」又回到原數。
:::

::: {.callout .decided}
**已裁：AI 高把握度自動配對的檔不列入「要你處理」**

直接算已完成，一批 67 份不必按 67 次。「來源」欄讓 AI 判的與人判的事後分得清楚，要抽查切到「已完成」看。
:::

## 實作拆法 {#next nav="拆卡"}

| 卡 | 範圍 |
|---|---|
| CM-2336 | 頁頭分段切換＋進度條取代統計卡／黃區／「只看未分類」／狀態下拉；左清單改狀態點＋原因一行；把握度滑桿移進明細候選清單 |
| CM-2337 | 明細「下一步」卡與確認動作（含 `reviewed_by`／`reviewed_at` 寫入與存檔後重整驗證；改配對時清掉確認）；「調整檢查點」放在已配對表標題右邊、非證據與刪除收進 ⋮ 選單；檢查點表加「來源」欄 |

`ClassificationReviewQueue.vue` 在方案 B 下整支不再需要；`ClassificationStatsRow.vue` 與 `ClassificationFilterBar.vue` 大幅縮減。各檔目前都在 800 行以下，不觸發體積上限。
