本卡屬 FR-166(母卡 CM-3109)收尾補齊(決策者 2026-10-27:沒有下期,不太大的支線這期一起做)。批 10。repo:jedi-packages,只改 jedi-source-scan。
這張卡做什麼(白話)
Agent 主控台手動跑第三方元件掃描(sbom-scan),結果現在只留在 Agent,但手冊寫「結果回到主系統第三方元件風險頁,來源標 Agent 手動」。本卡在套件提供收件:主系統派的 sbom 掃描已經有一條落 source_scans 的路,手動結果走同一條,只多一個來源欄。
改哪些檔
repo:~/Projects/Jedicogy/module/jedi-python-package(.worktrees/CM-3109 的 ws 分支)
改:jedi-source-scan/jedi_source_scan/infra/source_scan/model/source_scan_models.py(來源欄)
改:jedi-source-scan 的 domain/app service(收件方法)、套件 migration
改:jedi-source-scan/tests/
怎麼做
- 先 grep 主系統派工的 sbom 結果怎麼落進 source_scans(task_result → source scan 的那條),手動結果 reuse 同一支寫入,不另寫一套解析。
- source_scans 加來源欄(例如 origin:cloud/agent_manual,舊列預設 cloud),走套件 migration;新欄要照 RLS/GRANT 規範。
- 提供一個 app service 方法讓宿主接線:入參 agent_id、tenant_id、Agent 本機 local_uid、報告/結果參照;以 (agent_id, local_uid) 去重(重送不重複落)。HTTP 端點掛在主系統(P5-3 做),本卡只做套件能力與 route class(若套件慣例是套件帶 route,照慣例帶,掛載由宿主)。
- 風險頁讀取帶出來源欄,前端可以標「Agent 手動」。
驗收
- 套件 pytest 綠;去重、來源欄預設值、跨租戶看不到各有測試,去重有突變。
- 回寫寫明給 P5-3(BE 接線)與 P5-5(Agent 送件)的契約:端點路徑、body 形狀、回應。
紀律
- 先 git status;先 git merge ws-CM-3109 把前面批次併進來;顯式 git add 檔名,禁 -am;不切 branch;push 等令;不自派 subagent;只動 DEV。
- 不重複造輪子:先按行為 grep 既有實作,reuse → extend → 確認沒有才新增;不開 V2、不複製改兩行。檔案註解只寫為什麼與陷阱。超標檔只准拆不准塞。
- 資安規範讀 BE .claude/rules/security/ 八支;動到授權/密碼學要寫測試含突變。
- 做完 commit+卡上回寫(commit hash、改了哪些檔、reuse/extend/new、測試與突變、手測清單),狀態改「修正待驗證」。
建議模型與思考強度(首腦判斷)
Stage 10/Model opus/Effort medium/Repo jedi-packages。動資料模型與去重。