# FR-134 第三方元件風險（原始碼弱點掃描／SBOM）— 功能完成 SUMMARY（2026-10-11，未進版）

> 材料來自 `FR-134-LOG.md` 四個 block 與母卡 CM-2625 卡尾。現況看 `FR-134-STATE.md`，未完成清單在其 §3。

## 做了什麼（白話）
顧問把客戶原始碼壓縮檔或 SBOM 檔上傳，系統在既有沙箱用 Syft 產 SBOM（CycloneDX 1.6＋SPDX 2.3）、Trivy＋Grype 雙掃弱點，正規化後給結果頁、單一完整版報表（HTML／PDF／Word）、歷次比較與回訪報告。同一核心兩個入口：側選單「第三方元件風險」、檢測工具清單「第三方元件弱點掃描」（伺服器端執行、不派 Agent、結果回填任務當證據）。弱點資料走獨立更新包：裝機自動、設定頁分塊上傳、連網檢查更新與每日排程，全部走同一支驗章寫入，留更新紀錄。

## 範圍（40 張卡，Done 36）
A 沙箱擴充 4／B 弱點資料 4／C 後端 6／D 畫面 3＋追加 D4～D11 共 8／E 報表 3／F 歷次比較 1／H 檢測工具入口 5／V0 DEV 真實掃描環境 1／R1 整體風險評級 1／G 收尾：G3 待驗、G1／G2／G4 等進版。

## 決策者在畫面驗收期間追加並已落地的裁示
- 顯示名「原始碼掃描」→「第三方元件風險」；畫面用語改專業表單用詞；CVE 一律可點 NVD；報表「公告」→「來源頁」。
- 嚴重度上色（推翻 D2）；弱點明細依嚴重度排序、依套件分組。
- 結果頁三分頁：風險總覽／弱點明細／元件清單（元件清單＝線上攤看原始 SBOM 檔，可切格式、搜尋、帶弱點數；原始檔下載併入）。「SBOM 元件」加工清單拿掉。
- 任務發起的掃描在清單可見（B 案頁籤）；所屬任務已刪的不列；失敗列一行；舊掃描不顯示空徽章。
- 報表只留完整技術版，不隱藏內部備註；任務回填同一份。
- 可刪除：受評系統勾選批次刪（連歷次掃描）；掃描紀錄只刪失敗的；任務發起的不從模組刪。列操作統一專案風格純圖示，重新掃描併入操作欄。
- 伺服器端工具畫面：任務抽屜不顯示 Agent 字樣、工具卡只剩徽章。
- **整體風險評級（R1）結果頁卡先藏**：四級疊法是自家組合、非業界標準，待 PM 討論。
- 不再做無謂的突變測試。

## 推翻了什麼
D6「不做總評」→ R1 評級 → 結果頁卡再藏待 PM；D2「不上色」→ 上色；D7「孤兒顯示任務已移除」→ 不列；三種報表樣式 → 一種；D7 卡上「反查走 task_assignees」→ runner 改 canonical `JobProjectOwnershipQuery`（首腦開卡錯）。

## 關鍵 commit（首腦層；各卡 commit 見子卡回寫）
BE：`06d6b07ce` D7 裁示、`f74af5d51` 三分頁＋D8、`4c2d0d003` 功能卡到站、`bb9bc486f` route_guards 重產、`ac56ce8ab` G3。FE：`7d3a3fd4` 藏評級卡、`1e6bab41` 刪除錯誤明細、`5f5934a3` 三顆寫入鈕 v-can。

## 環境與出貨面（未做，列上線前檢查）
主線 migration 9 支只套 DEV、出貨基線待重產；弱點包正式鑰簽章與 188 產包、189 LC 部署、容器內 zstd／volume 擁有者實測、PDF 字型、沙箱 image 過弱點閘——全部在母卡卡尾「上線前檢查」。DEV 掃描測資已於 2026-10-11 清空。

## 規範文件
- ✓ STATE／LOG 雙檔、FR 登記表、能力索引、規則 paths、超標檔清單、route_guards 與權限矩陣
- ✗ SPEC 三頁（G1）、使用手冊與安裝文件（G2）——決策者裁示等進版前；analysis 文件未另寫（決策推理全在 LOG 與討論稿）
- ✓ 記憶：`feedback_card_check_capability_index_before_prescribing_path`、`feedback_ruling_scope_literal_not_expanded`

## 教訓（濃縮自 LOG）
開卡前要查程式＋能力索引；給 prompt ≠ 已派；裁示照字面做不自行放大；補充給跑中 runner 只能靠決策者在該 session 貼話；共用工作樹有半成品時驗收在 detached worktree 跑並以前後 commit 對照排除環境紅；重產 route_guards 要等畫面卡全收。
