建議 model:sonnet/effort:medium — 純前端改造,資料形狀已由 T-3.3 定死;但 aoLookup 的 key 改動是全頁生死線。

本卡屬 FR-107(母卡 CM-1843)第 .3 棒(子需求卡 CM-1846),子任務 T-3.4:把既有的審閱頁改成讀新的分類結果,並做一個批次列表頁。

這張卡做什麼(白話)

系統已經有一個「審閱頁」——AI 分類完之後,人工在上面看每份檔對到哪些檢查點,可以加、可以減、可以標「不適用」,然後儲存。這張卡把這個頁面留著畫面、換資料來源。

🔴 最關鍵的改動:頁面現在用 aoLookup.js:15 硬組出 ${ctrl.id}[${ao.letter}] 當作檢查點的 key(例如 AC.L1-3.1.1[a])。後端已經改成用 part_id(AC.L1-3.1.1_obj.2)。這行不改,整頁會對不到任何東西(design.md 風險 6)。字母仍由後端帶 ao_letter 過來給畫面顯示。

另外新增一個批次列表頁:某個稽核輪次底下有哪些批次、各是什麼狀態、可以進去審閱。分類中的狀態靠輪詢批次狀態(取代舊的 job 輪詢)。

動哪些檔

前端 repo ~/Projects/Billows/Audit-Manager/compliance-manager-fe/(branch feature/review)
src/views/evidence-classification/EvidenceClassificationReview.vue  ← 改資料來源
src/composables/  useEvidenceClassification.js                      ← 改吃 run_uid
src/.../aoLookup.js:15
    🔴 現在:`${ctrl.id}[${ao.letter}]` 硬組 key
       改成:以 part_id 為 key,ao_letter 只用於顯示
src/views/evidence-classification/EvidenceBatchList.vue             ← 新頁
src/router/index.js:919
    現在以 :runFolderId 定址 ← 🔴 舊路徑保留(舊 run 要打得開)
    新增 /project/projects/:id/evidence-batches/:batchUid/review/:runUid
src/config/api/api.js:495-504  既有十支常數 ← 保留;新增 run_uid 版的常數
i18n 語系檔

要接的 API(T-3.3 已做好)

GET  /api/1.0/classification-run/<run_uid>/state                     讀審閱結果
PUT  /api/1.0/classification-run/<run_uid>/state                     存審閱結果
GET  /api/1.0/classification-run/<run_uid>/file/<file_uid>/preview   預覽檔案
GET  /api/1.0/evidence-batches?round_uid=&status=                    批次列表(分頁)
GET  /api/1.0/evidence-batches/<batch_uid>                           批次詳情(含 run)
POST /api/1.0/evidence-batches/<batch_uid>/classify                  開始分類

state 的資料形狀(🔴 與舊的不同)
  檔案 key:file_uid(原本是 Drive file id)
  AO key: part_id,形如 AC.L1-3.1.1_obj.2(原本是 AC.L1-3.1.1[a])
  每筆有 ao_letter 欄位 → 畫面顯示用它,但配對一律用 part_id

怎麼做(逐步)

驗收條件(決策者親手可做)