建議 model:opus/effort:medium — 跨 test repo 寫 e2e+寫四頁 SPEC+收口交付文件,量大且要判斷寫什麼。
本卡屬 FR-107(母卡 CM-1843)第 .6 棒(子需求卡 CM-1849),子任務 T-6.3:在測試專案補一條走完全流程的自動化測試,並更新功能說明文件。
整案功能做完之後,補一條端到端自動化測試:模擬使用者上傳一批檔 → 按分類 → 審閱確認 → 歸檔 → 到任務證據頁看到那份檔。這條測試以後每次發版都會跑,確保不會有人改壞。
分類那一步會真的呼叫 AI(很慢、要花錢、結果不穩定),所以用一個 stub image(假的容器,回固定的結果 JSON)取代真的分類容器。測的是流程串得起來,不是 AI 判得準不準。
然後更新功能說明文件(SPEC):專案總覽、審閱頁、框架版本管理、我的任務證據頁這四頁,各加一段說明與檔頭一行變更紀錄。最後寫 FR-107 的 FINAL-SPEC(收口交付文件,寫最後長成什麼樣,不寫演進過程)。
測試 repo ~/Projects/Billows/Audit-Manager/compliance-manager-test/(branch feature/review)
site-regression/ ← 🔴 正式回歸套件(唯一發版 gate)
features/ 新增 feature 檔:上傳→分類→確認→歸檔→任務看到證據
steps/ 對應 step 實作
pages/ page object
fixtures/ stub image 的固定回應 JSON
🔴 site-regression 與 training 兩套件已分家,只在 site-regression 加
主專案(SPEC,走 writing-feature-specs skill)
docs/spec-site/current/ ← 🔴 canonical,唯一持續更新的工作副本
專案總覽頁 spec ← 加「上傳證據批次」段 + 檔頭變更紀錄一行
審閱頁 spec ← 改資料來源與新的檢查點代號 + 一行
框架版本管理頁 spec ← 加「AI 分類設定」分頁 + 一行
我的任務證據頁 spec ← 加「AI 分類」標籤 + 一行
🔴 舊站 docs/specs/current/ 已退役唯讀,不要往那裡寫
docs/features/FR-107-2609-evidence-classification-v2/FINAL-SPEC.md ← 新增
1. manager 登入,進有 living SSP 且輪次已建任務的專案
2. 開新批次、上傳 N 份測試檔
3. 按「完成上傳」→ 狀態「就緒」
4. 按「開始分類」→ stub image 回固定結果 → 狀態「審閱」
5. 審閱頁:確認每檔對到的檢查點,加一個、標一個不適用、儲存
6. 按「歸檔進任務」→ 看到摘要
7. 到「我的任務」對應任務的證據頁 → 看到那份檔,帶「AI 分類」標籤
8. 清理剩餘檔 → 批次狀態「已歸檔」
stub image:
回固定的 _report-original.json,matches 用測試專案裡真實存在的 part_id
🔴 part_id 要對得上該輪次真的有任務的檢查點,否則第 7 步永遠看不到東西
--headed 只在人要看的時候用)。part_id 要真的存在:先查測試環境那個輪次實際有哪些任務、ao_part_id 是什麼,stub 就回那些。憑空編的代號會讓第 7 步永遠空白,而且不會報錯。writing-feature-specs skill,四頁各加檔頭變更紀錄一行。只寫 docs/spec-site/current/,舊站 docs/specs/current/ 已退役唯讀。CM-1[0-9]\|原本\|改判\|第 [0-9] 棒\|收斂前\|整理後\|這次整理\|當初,命中就退回。doc-site-build skill 的四類文件分法,寫完跑 render_index.py 出 HTML。docs/spec-site/current/(不是舊站)。