狀態:✅ 全案收口(2026-09-04)——成品六章 28 段 75:42 交付,見 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;§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 卡待開) |
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。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。整件事分三段: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)。
| # | 決策 | 定案 |
|---|---|---|
| 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 即停下回報。 |
| 項目 | 現況 |
|---|---|
| 帳號 | 只有 admin / blsadmin |
| 專案 | 0 |
| 檢測工具設定 | 0(8 支工具目錄在,全未設定) |
| Agent | 1 台(guidant-server,capabilities 含 detection_scan) |
| 公版 profile | 10 支(8 支 TWGCB gcb+2 支 dev-sec inspec) |
| 頁面 | 路由 | 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。
training/pages/ 與 training/steps/ 都沒有 detection-tools/;規劃頁任務面板只有一般/問卷型 step(我設定任務類型為一般/問卷),沒有「檢測工具執行」型;我的任務只有一般/問卷抽屜 step。→ 全部由 S0 蓋。顯示流程卡…模式「flow」、旅程地圖 顯示旅程地圖…)、我前往剛建立專案的專案規劃頁面/我展開到第一個檢查項目/我點擊第一筆任務展開設定/我填入任務名稱「」/我儲存任務、我在待辦任務頁面。99-system-admin-04-remote-agent-storage.feature(四段 @phase-*,每段 Given 我進入 <path>)。錄影前由 user 備妥,S0 只驗不建:
blsit(PM,暱稱 Bob)、blsshino(Shino Lin)、blspan(Pan)、blsemp1(執行者 Alex Wang);密碼比照 .env.e2e TEST_PASSWORD。in_progress 專案(PM=Bob,Alex Wang 為參與人員),控制項樹至少兩個評估項目各有一筆任務可設定。192.168.50.190(50 網段,與主站同機)、192.168.60.168(60 網段)。192.168.50.123:9390 可達;OpenSCAP 目標主機(audit-scan 帳號、私鑰、sudo、port 22)可達;OpenVAS 帳密與 SSH 私鑰在錄影當天交給 runner 填進本機 .env.e2e(不入版控)。UI_THEME=light 頁面配色驗過一次(亮色模式下字卡對比可讀)。| 章 | 名稱 | 角色/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。
| 卡 | 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、不收尾;停手線=改動外溢共用層即停下回報。
04-detection-tools-full.mp4 約 49 分鐘、六章順序 00→05;test repo 六章 03-status.md 更新、Act README 索引補上 mp4 路徑;Notion 母卡回寫。