本卡屬 FR-107(母卡 CM-1843),第 .3 棒:分類跑在批次上。這是子需求卡,實際工作在底下的子任務卡。
現在按「自動分類」是對一個 AP(稽核計畫)的 Google Drive 資料夾下手;這一棒改成對批次下手。分類結果掛在批次上,一個批次可以重跑好幾次(換模型、換信心門檻)。
批次狀態機落地:批次會在「上傳中/就緒/分類中/審閱/已歸檔/失敗」之間走,規則寫死在一張轉換表裡——例如分類中再上傳檔就回 409 擋掉(批次已封口)。
心跳機制(D4 最小版):分類在背景執行緒跑,如果 BE 中途被砍掉重啟,前端會永遠看到「分類中」。改成執行緒每 60 秒在批次上蓋一個時間戳(心跳),BE 啟動時把「狀態是分類中、但心跳超過 30 分鐘沒更新」的批次自動標成失敗、可重跑。
前端審閱頁沿用既有畫面,但資料來源要換(改吃 run 的 uid 而不是 Drive 資料夾編號;檢查點的代號從 AC.L1-3.1.1[a] 這種字母格式改成 AC.L1-3.1.1_obj.2 這種系統內的 part_id)。
這一棒是流程的主幹——把「上傳好的批次」接到「AI 跑完有結果」。狀態機與心跳必須跟觸發改造同一棒做,否則會出現「批次已經在分類但沒人擋加檔」「BE 重啟後批次卡死」這種半成品狀態。
evidence_classification_runs 表改動(掛批次、加目標集快照、定址改 uid)上傳一批 → 按分類 → 分類中再上傳被擋(有訊息)→ 分完在審閱頁看到每檔對到的檢查點,能加減、標不適用、儲存;分類中把 BE 砍掉重啟,心跳逾時後批次自動變「失敗」可重跑。
前置:FR-107.2 完成。可與 .5 平行(兩線動的檔不重疊)。下游:.4 吃審閱後的結果。
docs/features/FR-107-2609-evidence-classification-v2/design.md(HTML 版 design.html)discussion.md