建議 model:opus/effort:medium — 跨主專案與套件、要刪既有靜態檔並確保舊資料的報表不會壞。

本卡屬 FR-107(母卡 CM-1843)第 .5 棒(子需求卡 CM-1848),子任務 T-5.2:讓檢查點清單帶上系統內的正式代號與領域資訊,並把套件裡寫死 CMMC 的靜態檔刪掉。

這張卡做什麼(白話)

系統送給 AI 的「檢查點清單」(目標集)現在用字母當代號:AC.L1-3.1.1[a]。但系統內部的任務用的是另一種代號 AC.L1-3.1.1_obj.2(叫 part_id)。兩邊對不起來,所以分類完沒辦法自動找到對應的任務。

這張卡讓檢查點清單同時帶上 part_id(配對用)與 ao_letter(顯示用),並多帶 group_id/group_title(領域資訊,現在是靠切控制項編號的第一段硬猜出來的)。

同時把套件裡兩支寫死 CMMC 的靜態檔刪掉:cmmc_l1_aos.json(檢查點清單)與 cmmc_l1_canon.json(正解答案)。報表改成:

⚠️ 舊的分類結果沒有快照,報表要回明確錯誤訊息「此 run 無目標集快照」,不是 500。

動哪些檔

主專案
app/oscal/service/ssp_control_implementation_service.py:237
    build_classifier_catalog_by_ssp_id(ssp_id)   ← 已經是動態的,但輸出要補欄位
      每個 AO 多帶:part_id(AC.L1-3.1.1_obj.2)
                    ao_letter(原本的字母,改成只給顯示用)
      每個控制項多帶:group_id、group_title

套件(走 path dependency 開發)
~/Projects/Jedicogy/module/jedi-python-package/jedi-evidence-classification/
  .../report/report_common.py
      :60  load_catalog  ← 改讀 run 的 catalog_snapshot
      :193 load_canon    ← 改只讀正解表 evidence_classification_ground_truth
  .../catalog_builder.py:15 build_catalog(只認 'cmmc-l1',:17)  ← 🔴 整支刪除
  .../resources/cmmc_l1_aos.json      ← 🔴 刪除
  .../resources/cmmc_l1_canon.json    ← 🔴 刪除
  .../app/service/evidence_classification_service.py
      :733 put_state / :875 archive_run 內巢狀 ensure_ao_folder 的 [a] 解析
      ← 🔴 只留在舊 route 的路徑上(Drive 資料夾命名要用),新線不走

怎麼做(逐步)

驗收條件