# FR-074 檢測工具整合教學影片系列（Act 04）— 設計文件

> 狀態：**✅ 全案收口（2026-09-04）**——成品六章 28 段 75:42 交付，見 [handoff/2026-09-04-FR-074-SUMMARY.md](handoff/2026-09-04-FR-074-SUMMARY.md)｜建立日期：2026-09-03｜無前作｜無獨立討論稿——設計討論在對話中完成，決策者已拍板

## 變更紀錄

| 日期 | 變更 | 對應 |
|------|------|------|
| 2026-09-04 | **全案收口**：成品六章 75:42（00 1:51／01 17:26／02 8:04／03 20:36／04 26:12／05 1:33）、28 段分段 mp4，交付 test repo `reports/training-videos/GuidantAI-檢測工具整合教學-v1.19/`。實作偏離設計八項（七支工具全示範、04-04 A 段改 PM 發動／C 段改規劃頁、OpenSCAP 目標 60.162、Nmap 60.168、ZAP 靶站 60.165、Seg-H 多組分派排程等）與坑／follow-up 見 [SUMMARY](handoff/2026-09-04-FR-074-SUMMARY.md)；§5 章節表以 test repo `training/chapters/04-detection-tools/README.md` 為準，本檔不再回改 | 母卡 CM-1535、CM-1542 |
| 2026-09-03 | 七支可用工具全部示範（user 拍板，目的是證明每支都做得到、都能 work；Nessus coming_soon 只在總覽提一句）：04-03 4→8 段（A OpenSCAP／B GCB／C CINC／D Nmap／E OpenVAS／F ZAP／G SonarQube／H 總覽，每支獨立 scenario 可單獨重錄）；04-04 3→7 段（A1 SSH 型四支發動／A2 API 型三支發動【切點：七個全成功】／B1 OpenSCAP＋GCB／B2 CINC＋Nmap／B3 OpenVAS＋ZAP／B4 SonarQube／C 重跑總結，每支結果都點開報告預覽＋執行詳情統計）。六章 14→22 段、~34→~49 min。OpenVAS／SonarQube／ZAP 一律派 guidant-server | §3 D2、§5、§6、§7 |
| 2026-09-03 | SonarQube 原始碼掃描入戲（user 拍板）：04-03 加 `@phase-c-sonarqube-task`（上傳壓縮包模式＋寫入警告字卡）、原總覽段順延 `@phase-d-review`；04-04 Seg-A 上傳 `soybean-ui-main.zip` 再執行、Seg-B 帶看 SonarQube 報告；04-01 Seg-B 尾段順手設定 SonarQube（171:9000）。六章 13 段→14 段 | §3 D2、§5、§6 |
| 2026-09-03 | 50 網段 Agent／掃描目標改 192.168.50.190（user 指示），OpenVAS 伺服器維持 123:9390 | §3 D4、§4 |
| 2026-09-03 | 初版設計定案，D1–D5 全數拍板（190 亮色錄製、Act 04 六章 13 段、分段錄製、敏感值三層、7 子卡拆棒） | FR-074 母案（Notion 卡待開） |

---

## 1. 需求背景與目標

- 產品「檢測工具整合平台」（FR-056 / FR-057 / FR-059）已上線：稽核任務可設為「檢測工具執行」類型，系統派工給客戶內網的檢測 Agent，由 Agent 調度 OpenVAS / OpenSCAP / GCB / CINC / Nmap / SonarQube / ZAP 掃描，報告自動變成任務證據＋發現統計，Email 通知負責人，任務依完成模式自動或人工結案。
- 既有教育訓練影片（Act 01～03、99 系統管理）**完全沒有**這條線——客戶拿到功能不知道從哪裡開始：工具怎麼接、設定檔庫是什麼、任務怎麼設、掃完結果在哪。
- 目標：用既有 test repo `training/` 錄影管線（Cucumber + Playwright + overlay 字卡）產出 **Act 04「檢測工具整合」六章教學影片**（約 30 分鐘、13 支分段 mp4、每章一支合併片、最後一支總片），讓 admin / PM / 執行者三種角色各自看得懂自己那段。
- 來源設計文件：`docs/features/FR-056-2607-detection-tool-integration/`（design.md、user-manual.html）、`FR-057-2607-openscap-ssh-connector/design.md`、`FR-059-2608-detection-profile-library/design.md`。
- 影片管線 canonical 在 test repo：`training/guides/training-style-guide.md`（用語／字幕風格）、`training/sop/markup-language.md`（outline 標記語言）、`training/steps/_visual/overlay.steps.js`（可用字卡 step）、分段先例 `training/features/showcase/training/99-system-admin-04-remote-agent-storage.feature`。

---

## 2. 分工概述（30 秒版）

整件事分三段：**S0 先把「檢測工具四個頁面」的 Page Object 與業務 step 蓋好 → 五棒 runner 各拿一章 outline 轉 feature 出片 → 首腦合總片、過敏感清單、收口**。

| 階段 | 做什麼（白話） | 產出 | 完成怎麼判定（決策者檢查法） |
|------|--------------|------|---------------------------|
| **S0 地基（.0）** | 四個新頁面（檢測工具管理／掃描設定檔管理／規劃頁檢測任務面板／我的任務檢測抽屜）的 Page Object＋業務 step；私鑰欄位遮罩 step；`.env.e2e` 加檢測連線變數；BASE_URL 切 190＋重產 7 角色 auth-state；Act README 錄影指令；一支 smoke feature 跑綠 | `training/pages/detection-tools/`＋`training/steps/detection-tools/`＋smoke feature | smoke 全綠（`SKIP_OVERLAYS=true`）；step 名稱清單回寫卡片，後續五棒照用 |
| **五章出片（.1～.5）** | 每棒拿一章 outline（已寫到不需裁量的細度）轉 feature，先 `SKIP_OVERLAYS` 驗業務 step 綠、再上 overlay 正式錄，分段 mp4 合併成該章一支 | 14 支分段 mp4＋6 支章節合併片 | 逐支打開 mp4 從頭看到尾：字卡看得懂、操作跟得上、**畫面沒有任何密碼／私鑰／token**（對照 §3 D4 檢查表） |
| **收口（.6）** | 六章合總片、逐支抽幀過敏感清單、chapters `03-status.md`、Act README 索引、母卡回寫 | `04-detection-tools-full.mp4` | 總片可播、章節順序正確；敏感清單每支打勾 |

順序 **S0 → .1～.5（可平行）→ .6**。.4／.5 依賴 user 事前準備 190（§4.4）。

---

## 3. 決策定案（D1–D5）

| # | 決策 | 定案 |
|---|------|------|
| **D1** | 錄影環境與主題 | **190（`BASE_URL=https://192.168.50.190`，安裝版 stack）＋亮色模式**。指令前綴 `UI_THEME=light`（test repo `training/support/world.js` 已支援，啟動前寫 localStorage `cm_color_scheme`），一律 headless。理由：190 是乾淨安裝版、最接近客戶拿到的樣子；亮色是客戶端投影／文件截圖的預設觀感，既有 Act 01～03 深色片不重錄、新 Act 起採亮色。auth-state 是 origin-scoped，換環境必先 `npm run auth:save` 重產。 |
| **D2** | 章節結構 | **Act 04「檢測工具整合」六章 22 段**（2026-09-03 七支工具全部示範後）：04-00 總開場（1 段純字卡）／04-01 檢測工具管理（4 段）／04-02 掃描設定檔管理（3 段）／04-03 任務設為檢測工具執行（8 段：七支工具各一段＋總覽）／04-04 執行與結果回收（7 段：兩段發動＋四段結果回收＋一段重跑總結）／04-05 總結（1 段純字卡）。每主章節自帶 intro 與 summary 字卡，00／05 是總開場／總結。角色分工：admin（01／02）→ PM Bob（03）→ 執行者 Alex Wang 再回 PM（04）。詳表見 §5。 |
| **D3** | 分段錄製與合併 | 每段一個 `@phase-*` scenario、自帶認證與預設頁、可單獨重錄（先例 99-04）；章內分段用 `training/scripts/merge-phase-videos.sh` 模式合併；最後 04-00～04-05 合成 `04-detection-tools-full.mp4`。**必要切點**：04-04 Seg-A 按下「開始執行」看到執行中即停錄，等 user 確認掃描完成再錄 Seg-B／C（掃描時間不入鏡）。 |
| **D4** | 敏感值三層防線 | ① **錄影時 CSS 遮罩**：OpenSCAP 私鑰貼入 textarea 前，由頁面級 step 對該欄位套 `-webkit-text-security: disc`＋blur 覆蓋（**不動 `training-helper.js`**）；密碼欄位本來就是 Password 元件（點點）。② **後製馬賽克保險**：收口抽幀若仍見敏感值，ffmpeg 區域打碼。③ **feature 與卡片禁真值**：帳密／私鑰一律走 `.env.e2e` 環境變數（`DETECTION_OPENVAS_*` / `DETECTION_SSH_*`）注入，feature 檔、outline、Notion 卡只寫「由環境變數注入，不入鏡」。可入鏡的只有主機 IP／port／帳號名（OpenVAS 伺服器 `192.168.50.123`、掃描目標 `192.168.50.190`／`192.168.60.168`、`audit-scan`）。 |
| **D5** | 拆棒與 model | **7 子卡（FR-074.0～.6）**：.0 S0 地基用 Opus（要蓋 Page Object、決 selector、處理遮罩，有裁量）；.1～.5 五章用 Sonnet 5（outline 已寫到不需裁量，純轉 feature＋錄）；.6 收口首腦親做。**劇本與製片同一棒**（memory `feedback_training_video_script_and_production_same_runner`）：outline 已由本案定稿，runner 只做「轉 feature → 錄 → 合併」，停手線＝改動外溢到 `training-helper.js` / `hooks.js` / `world.js` / `overlay.steps.js` / 他章 feature 即停下回報。 |

---

## 4. 現況盤點

### 4.1 190 現況（2026-09-03 實查）

| 項目 | 現況 |
|------|------|
| 帳號 | 只有 `admin` / `blsadmin` |
| 專案 | 0 |
| 檢測工具設定 | 0（8 支工具目錄在，全未設定） |
| Agent | 1 台（guidant-server，capabilities 含 `detection_scan`） |
| 公版 profile | 10 支（8 支 TWGCB gcb＋2 支 dev-sec inspec） |

### 4.2 可入鏡頁面與 FE 對照

| 頁面 | 路由 | FE 源碼 | 用在 |
|------|------|---------|------|
| 檢測工具管理 | `/plugin/tool-plugin-manage` | `src/views/plugin/ToolPluginManage.vue`（卡片「設定」「測試連線」「⋮」；⋮ 選單：部署前提說明／啟用／停用／重置金鑰；設定表單欄位由 `DetectionConfigField` 依 `config_field_schema` 動態渲染，id `dtf-<key>`） | 04-01 |
| 掃描設定檔管理 | `/plugin/detection-profile-manage` | `src/views/detection-profile/DetectionProfileManageView.vue`＋`components/`（ProfileFormDialog `dpf-*`、ProfileVersionTable 展開列、ProfileCopyDialog `dpc-*`、ProfileNewVersionDialog `dpv-*`） | 04-02 |
| 設定檔控制項清單 | `/plugin/detection-profile-manage/versions/:versionUid/controls` | `DetectionProfileControlsView.vue`＋`ControlExtractionSummary.vue` | 04-02 Seg-C |
| 專案規劃頁 → 控制項實作 Tab → 任務面板 | `/project/projects/:uid/round/:rid/planning` | `src/views/project/ProjectPlanningView.vue`（`.pp-task-panel`、`.pp-type-select`、`#pp-task-tool-<id>`、`.agent-assign-row__detail`、完成模式 SelectButton） | 04-03 |
| 我的任務 → 檢測任務抽屜 | `/project/task-manage` | `src/views/project/MyTasksView.vue`＋`src/components/grc/JobExecutionDrawer.vue`（檢測設定唯讀區、開始執行、執行紀錄、報告、完成任務） | 04-04 |

i18n：`task-setup.json`（`job_type_detection`、`detection_tool_label`、`agent_assignment_none_online_hint`、`completion_mode_*`）、`my-tasks.json`（`drawer_detection_config`、`drawer_detection_config_readonly_hint`、`execution_content_mismatch*`、`btn_start_execution`、`btn_rerun_assignment`、`btn_cancel_execution`）、`pages.json` `plugin_manage.*`、`detection-profile-manage.json`。

### 4.3 test repo 既有能力

- **檢測工具四頁面的 Page Object 與業務 step：零**。`training/pages/` 與 `training/steps/` 都沒有 `detection-tools/`；規劃頁任務面板只有一般／問卷型 step（`我設定任務類型為一般／問卷`），沒有「檢測工具執行」型；我的任務只有一般／問卷抽屜 step。→ 全部由 S0 蓋。
- 可直接沿用：overlay 字卡 step（含流程卡 `顯示流程卡…模式「flow」`、旅程地圖 `顯示旅程地圖…`）、`我前往剛建立專案的專案規劃頁面`／`我展開到第一個檢查項目`／`我點擊第一筆任務展開設定`／`我填入任務名稱「」`／`我儲存任務`、`我在待辦任務頁面`。
- 分段先例：`99-system-admin-04-remote-agent-storage.feature`（四段 `@phase-*`，每段 `Given 我進入 <path>`）。

### 4.4 user 事前準備清單（190）

錄影前由 user 備妥，S0 只驗不建：

1. 帳號：`blsit`（PM，暱稱 Bob）、`blsshino`（Shino Lin）、`blspan`（Pan）、`blsemp1`（執行者 Alex Wang）；密碼比照 `.env.e2e` `TEST_PASSWORD`。
2. 一個 `in_progress` 專案（PM＝Bob，Alex Wang 為參與人員），控制項樹至少兩個評估項目各有一筆任務可設定。
3. 兩台檢測 Agent 註冊且在線：`192.168.50.190`（50 網段，與主站同機）、`192.168.60.168`（60 網段）。
4. OpenVAS `192.168.50.123:9390` 可達；OpenSCAP 目標主機（`audit-scan` 帳號、私鑰、sudo、port 22）可達；OpenVAS 帳密與 SSH 私鑰在錄影當天交給 runner 填進本機 `.env.e2e`（不入版控）。
5. 190 上 `UI_THEME=light` 頁面配色驗過一次（亮色模式下字卡對比可讀）。

---

## 5. 章節詳細（六章分段表）

| 章 | 名稱 | 角色／auth | 分段 scenario（`@phase-*`） | 預估 |
|---|---|---|---|---|
| 04-00 | 總開場：為什麼要自動化檢測 | admin | `@phase-intro`：純字卡——端到端四步流程卡（工具掃描→報告變證據→通知信→任務完成，flow 模式）＋旅程地圖四站（工具管理→設定檔庫→任務設定→執行回收）＋角色分工（admin／PM／執行者） | ~2 min |
| 04-01 | 檢測工具管理（FR-056/057） | admin | A `@phase-a-catalog` 概念（平台工具目錄 DB 驅動、8 支工具、API 型 vs SSH 型）＋頁面導覽 ／ B `@phase-b-openvas` 設定 OpenVAS（API 型：base_url／port／帳密）＋儲存＋測試連線成功（測試路徑：雲端→Agent→工具，需在線 Agent）＋尾段順手設定 SonarQube（base_url `http://192.168.50.171:9000/` 入鏡、User Token 環境變數注入）＋測試連線 ／ C `@phase-c-openscap` 設定 OpenSCAP（SSH 型：稽核帳號／認證方式／私鑰[遮罩]／port／sudo）＋部署前提說明（⋮→顯示準備腳本、複製腳本）＋測試連線輸入多台目標主機並發結果 ／ D `@phase-d-govern` ⋮ 選單：停用軟提醒（引用任務數）、重置金鑰、憑證加密說明（••••已設定留空不變）＋章節總結 | ~9 min |
| 04-02 | 掃描設定檔管理（FR-059） | admin | A `@phase-a-concept` 概念（profile 是掃描依據；公用版 SYSTEM 平台維護全租戶可見、租戶自有可上傳；工具隔離 gcb／inspec 分池）＋列表導覽（公版唯讀） ／ B `@phase-b-upload` 上傳租戶自有 profile（zip，四格式 50MB，驗 inspec.yml）＋版更（版本表現行版） ／ C `@phase-c-controls` 控制項清單頁（ControlExtractionSummary 三格統計）＋複製到另一工具＋章節總結 | ~6 min |
| 04-03 | 任務設為檢測工具執行 | PM（blsit／Bob） | 任務 N＝第 N 個評估項目（1～7），每支工具獨立 scenario 可單獨重錄。A `@phase-a-openscap-task` 概念（任務類型三種）→規劃頁→任務 1「主機作業系統組態基準檢查」→OpenSCAP→目標 190、基準下拉 CIS Level 1 Server（S0 實查：純 select 不可手打）、進階 SCAP 路徑預設→Agent guidant-server→人工 ／ B `@phase-b-gcb-task` 任務 2「Ubuntu 主機政府組態基準檢查」→GCB→連線方式 SSH→設定檔庫 TWGCB-01-014 Ubuntu 22.04→目標 60.168→Agent 60-ubuntu-2604-lab-03→自動 ／ C `@phase-c-cinc-task` 任務 3「Linux 主機安全基線檢查」→CINC Auditor→SSH→設定檔庫 dev-sec Linux 基準（字卡：自寫基準接 04-02）→190→guidant-server→人工 ／ D `@phase-d-nmap-task` 任務 4「內網開放服務盤點」→Nmap→執行主機 190、掃描目標 192.168.50.0/24、TCP 連線掃描、埠 1-1024（全螢幕字卡：三種掃描方式差別＋只能掃有授權網段）→guidant-server→人工 ／ E `@phase-e-openvas-task` 任務 5「主機弱點掃描」→OpenVAS→目標 190、進階 UUID 三欄留空（字卡：弱點嚴重度分級）→guidant-server→人工 ／ F `@phase-f-zap-task` 任務 6「網站應用程式安全檢測」→ZAP→目標網址 https://192.168.50.190、掃描模式被動（全螢幕字卡：被動／主動／登入後主動三模式，主動會送攻擊流量只能掃自己有授權的站）→guidant-server→人工 ／ G `@phase-g-sonarqube-task` 任務 7「原始碼安全掃描」→SonarQube→執行模式上傳原始碼壓縮包→寫入警告入鏡（字卡解釋三模式與為何寫入貴公司 SonarQube）→後綴 `billows-portal`（實際 `Guidant-AI-billows-portal`）→guidant-server→人工；壓縮包執行時才上傳 ／ H `@phase-h-review` 七個任務標籤總覽、無在線 Agent 提示說明、七支工具一表總結（Nessus 敬請期待提一句） | ~15 min |
| 04-04 | 執行與結果回收 | 執行者 Alex Wang→PM | A1 `@phase-a1-start-ssh` 我的任務→OpenSCAP 任務檢測設定唯讀抽屜逐區導覽（掃描設定由 PM 設定、要改請留言）→開始執行→執行中→GCB／CINC／Nmap 三筆精簡發動 ／ A2 `@phase-a2-start-api` OpenVAS（字卡：最慢 20-40 分）／ZAP 發動→SonarQube 上傳 `soybean-ui-main.zip`→開始執行→**切點（停錄等七個掃描全部成功，任一失敗先修好重跑）** ／ B1 `@phase-b1-result-os` OpenSCAP 完整回收：執行紀錄成功→通知信說明→證據區報告點開預覽捲動→執行詳情統計（pass／fail／notapplicable）→人工完成；GCB 自動完成對照＋報告預覽＋統計 ／ B2 `@phase-b2-result-cinc-nmap` CINC 報告＋統計（字卡：三支組態類統計同一套）；Nmap 報告＋統計（全螢幕字卡：在線主機／開放埠／服務種類怎麼讀，發現＝開放埠不是漏洞） ／ B3 `@phase-b3-result-vuln-web` OpenVAS 報告＋統計（全螢幕字卡：嚴重／高／中／低／log 分級處理）；ZAP 報告＋統計（全螢幕字卡：被動掃 0 發現不代表安全） ／ B4 `@phase-b4-result-sonar` SonarQube 報告＋統計（品質門檻、寫入貴公司 SonarQube） ／ C `@phase-c-rerun`（PM）重跑與取消、「檢測基準與系統版本不符」提示解釋、自動模式對照＋章節總結（統計依工具不同一句總結） | ~18 min |
| 04-05 | 總結 | — | `@phase-summary`：純字卡——四章回顧、學了什麼、常見問題三條（測試連線失敗先查 Agent 在線與 capabilities；OpenSCAP 目標主機要先準備；profile id 對不上 SSG 版本） | ~1.5 min |

合計 ~49 min、22 支分段 mp4（2026-09-03 七支工具全部示範後；原 13→14→22）；每章 merge 成一支，最後合總片 `04-detection-tools-full.mp4`。每段完整腳本（字卡全文、操作 selector、暫停秒數、切點）見 test repo `training/chapters/04-detection-tools/<章>/02-outline.md`。

---

## 6. 拆分表（7 子卡，FR-074.0～.6）

| 卡 | Notion 卡號 | 做什麼 | model | 產出／驗收 |
|---|---|---|---|---|
| .0 S0 地基 | 待開卡 | 新目錄 `training/pages/detection-tools/`（ToolPluginManagePage / DetectionProfileManagePage / DetectionTaskSetupPage / DetectionTaskExecPage）＋`training/steps/detection-tools/*.steps.js` 業務 step；私鑰欄位遮罩 step；`.env.e2e` 加 `DETECTION_OPENVAS_*`／`DETECTION_SSH_*`（值留空、範例檔同步）；BASE_URL 切 190＋`npm run auth:save` 重產 7 角色 auth-state；Act README 錄影指令核對；一支 smoke feature（`SKIP_OVERLAYS`）跑綠證明 step 可用，不出片；outline 中「⚠ selector 待 S0 確認」逐項確認回寫。**停手線**：不得改 training-helper.js / hooks.js / world.js / overlay.steps.js / 他章 feature | Opus | smoke 全綠＋step 名稱清單回寫卡片 |
| .1 04-00＋04-05 | 待開卡 | 兩支純字卡 feature（總開場／總結），用流程卡＋旅程地圖 step | Sonnet 5 | 2 支 mp4 |
| .2 04-01 | 待開卡 | 檢測工具管理 4 段 | Sonnet 5 | 4 段 mp4＋merge |
| .3 04-02 | 待開卡 | 掃描設定檔管理 3 段（需準備示範 profile zip 放 `training/fixtures/detection-tools/`） | Sonnet 5 | 3 段 mp4＋merge |
| .4 04-03 | 待開卡 | 任務設定 8 段（七支工具各一段＋總覽；前提：190 有 in_progress 專案、第一個控制項底下七個評估項目各一筆任務、兩台 Agent 在線、七支工具已於 04-01 啟用、設定檔庫有 TWGCB 與 dev-sec 公版；outline「⚠ 缺 step」表：`我填入任務描述「」`，派工前首腦補） | Sonnet 5 | 8 段 mp4＋merge |
| .5 04-04 | 待開卡 | 執行回收 7 段（A1／A2 錄完停、等 user 確認七個掃描全部成功再錄 B1～B4／C；SonarQube 任務用 fixtures `soybean-ui-main.zip`；每支結果都點開報告預覽；outline「⚠ 缺 step」表：`我展開證據區`（視 page object）、`我填寫完成留言「」並確認完成任務`，派工前首腦補） | Sonnet 5 | 7 段 mp4＋merge |
| .6 收口 | 待開卡 | 合總片、抽幀過敏感清單、chapters 03-status.md、Act README 索引、母卡回寫 | 首腦 | 總 mp4 |

每張 runner 卡共同紀律：一律 headless、`UI_THEME=light`；先 `record:fast`＋`SKIP_OVERLAYS=true` 驗業務 step 綠，再上 overlay 錄正式；驗證批次不逐項；顯式 `git add` 禁 `-am`；影片不入版控；做完 commit＋Notion 回寫（白話補充＋commit hash＋mp4 路徑）＋狀態「修正待驗證」；不 push、不收尾；停手線＝改動外溢共用層即停下回報。

---

## 7. 端到端驗收

1. S0 smoke feature 在 190 亮色 headless 跑綠；四個 Page Object 的 selector 對得上 190 實際頁面（outline 內「待 S0 確認」項全部消除）。
2. 22 支分段 mp4 逐支獨立出片可播放；每章合併片章節順序正確、段與段之間無錯誤畫面（無紅 toast、無 undefined step 殘影）。
3. 敏感內容檢查：每支影片抽幀確認**沒有密碼、私鑰內容、token**；OpenSCAP 私鑰欄位入鏡時為點點／模糊；設定表單重開時憑證欄顯示「••••（已設定，留空不變更）」。
4. 04-04 B1～B4 七支工具的報告證據與發現統計來自真實掃描（非假資料），每支都實際點開報告預覽；C 的「檢測基準與系統版本不符」提示以字卡解釋為主，若 190 當次無此狀況不強求實際觸發。
5. 總片 `04-detection-tools-full.mp4` 約 49 分鐘、六章順序 00→05；test repo 六章 `03-status.md` 更新、Act README 索引補上 mp4 路徑；Notion 母卡回寫。
