建議 model:opus/effort:medium — 改的是 AI 判斷品質的直接輸入,且要同時動套件與容器。

本卡屬 FR-107(母卡 CM-1843)第 .5 棒(子需求卡 CM-1848),子任務 T-5.3:把送給 AI 的指令改成從設定組出來,容器程式裡不再出現 CMMC 這個字。

這張卡做什麼(白話)

容器程式現在有一段寫死的 AI 指令(container_entrypoint.py:504 build_system_block()),開頭就是「你是 CMMC 2.0 Level 1 評估專家」。這張卡把它改成從外面組好、寫成一個檔案掛進去。

組裝分三段(design.md §6.5):

段          來源                                    缺省(沒設定時)
① persona   classification_profiles.persona         內建:「You are a compliance assessment
   角色                                              expert. Classify each evidence file
                                                     against the assessment objectives
                                                     listed below.」🔴 不含任何框架名
② guidance  classification_profiles.guidance         內建通用判準三句(證據要能直接證明該
   判斷指引                                           檢查點;一檔可對多項;不確定就低信心)
③ 動態       catalog.json(T-5.2 的輸出)             無 hints 就只列檢查點清單
   檢查點     + evidence_hints 對應到清單內
   清單         part_id/group_id 的提示併入各項

組好的東西寫成 /job/prompt.json 掛給容器,容器只負責讀它拼接。同時把整條線的檢查點代號從字母格式改成 part_id,容器回傳前還要驗「這個 part_id 真的在清單裡」。

組裝結果也存一份進分類結果表的 prompt_snapshot,之後除錯與稽核時看得到當時實際送了什麼。

動哪些檔

套件(走 path dependency 開發)
~/Projects/Jedicogy/module/jedi-python-package/jedi-evidence-classification/
  .../app/service/evidence_classification_service.py
      run_batch(...)  ← T-3.2 做的最小版 prompt.json,這裡改成真的三段組裝
                        並把結果存進 run 的 prompt_snapshot
  .../docker/container_entrypoint.py    ← T-2.3 搬過來的
      :504 build_system_block()  ← 🔴 改成純讀 /job/prompt.json 拼接
                                    不再有任何字串常數提到 CMMC
      :109 ao_id = f"{ctrl['id']}[{ao['letter']}]"  ← 🔴 改成用 part_id
      ← 回傳前驗 part_id ∈ catalog

prompt.json 的格式(design.md §6.4)

/job/prompt.json
{
  "persona":  "……",
  "guidance": "……",
  "hints_by_part_id": {
      "AC.L1-3.1.1_obj.2": ["帳號清單", "AD 截圖"],
      ...
  }
}

容器 build_system_block() 改成:
  讀 prompt.json → persona + guidance + 從 catalog.json 列出檢查點
  (每個檢查點若在 hints_by_part_id 有提示就併進該項)
  🔴 函式內不得有任何硬編碼的框架名稱或檢查點內容

容器回傳的結果 JSON,matches 的 key 一律是 part_id:
{"files":[{"file_uid":"...","matches":[{"part_id":"AC.L1-3.1.1_obj.2","confidence":0.82}],
           "primary":"...","error":null}], "usage":{...}, "estimated_cost_usd":...}

怎麼做(逐步)

驗收條件