FR-080 決策者驗收清單(八棒做完,2026-09-10)

給決策者親手驗。每項寫「怎麼做、預期看到什麼、壞了會長怎樣」。失敗的直接在 Notion 母卡 CM-1619 最下面回寫,首腦併成修正卡。 環境:worktree compliance-manager-be-fr080 的 BE 起在 8010(起之前 lsof -i :8010 確認是這個資料夾的),DB 是 DEV。

§1

A. 自動化(首腦已跑,你可以重跑一次確認)

cd /Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be-fr080
unset VIRTUAL_ENV VIRTUAL_ENV_PROMPT
.venv/bin/python -m pytest test/test_module_boundaries.py -q        # 86 過(含五層守衛)
.venv/bin/python scripts/deliverables/plugin_metrics.py            # 105 / 6 / 8,677 / 17

套件測試各支:cd /Users/chouraymond/Projects/Jedicogy/module/jedi-python-package-fr080/<套件> && <上面那個 python> -m pytest tests -q --ignore=tests/architecture。全綠的:asset、system-core(5 失敗是既有)、log、task-platform(15 skip 是殼不在)、bulletin(4 失敗 11 錯是既有)、detection、license-runtime、compliance-audit、evidence-classification、ai-dashboard、iam、file-upload、common。survey 48 失敗 42 錯是既有基線。

§2

B. 不靠主專案起得來(三行指令,你親跑)

資產:

cd /Users/chouraymond/Projects/Jedicogy/module/jedi-python-package-fr080/jedi-asset
docker compose -f harness/docker-compose.yml up -d
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be-fr080/.venv/bin/python harness/dev_app.py --migrate
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be-fr080/.venv/bin/python harness/dev_app.py --smoke
docker compose -f harness/docker-compose.yml down -v

預期:印出「缺 X-Auth → 401」「devices/menu → 200」「information-systems/menu → 200」「全部斷言通過」。壞了會長怎樣:500 或 assert 失敗。沒先 --migrate 直接 --smoke 會 500,那是順序不是缺陷。

系統核心:同上,目錄換 jedi-system-core,多一行「管理端點缺 X-Platform-Admin → 403」。

§3

怎麼開畫面測(C、D、E 都用這個)

後端:worktree 的 BE 起在 8010(現在跑的就是,程式是最新的)。要重起:

cd /Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be-fr080
unset VIRTUAL_ENV VIRTUAL_ENV_PROMPT
PORT=8010 poetry run python main.py

前端:FE repo 已有 .env.development.local 指向 http://localhost:8010,直接起 dev server:

cd /Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-fe
npm run dev          # 開 http://localhost:5180

FE 在 feature/FR-075 分支沒關係,本 arc 沒改 FE 程式(只有兩條錯誤碼文案的 patch 還沒套,遇到那兩個錯誤會顯示代碼而不是文案,不影響測試)。

帳號:用 DEV 既有的 blsadmin(租戶 102 管理員)測 C;D 的「切換租戶」「選單管理」「操作日誌」要平台管理員(root 租戶帳號)。

§4

C. 主專案功能回歸(DEV 8010,每頁列表/新增/修改/刪除各一次)

頁面 特別看 壞了會長怎樣
設備管理(左側選單 系統管理 → 設備管理,/device/device-manage) 建立者顯示暱稱不是帳號;刪除前確認框顯示引用數 暱稱空白=查暱稱接口沒接;引用數恆 0=引用計數接口沒接
資訊系統管理(系統管理 → 資訊系統管理,/information-system/manage) 新增帶系統負責人 → 詳細頁顯示負責人姓名 負責人空白
系統設定 SMTP(系統設定 → SMTP 設定,/system/smtp-config-manage) 存一筆不改密碼 → 重開密碼還在;把 SMTP 列全刪 → 顯示空列表不是跳錯 跳錯=I2 沒修好
選單管理(系統管理 → 選單管理,/system/system-menu-manage,要平台管理員) 新增/修改/刪除
任一有下拉的頁面(例如設備管理的「設備類型」下拉) 設備類型選項正常出現 選項空=選單 API 斷
操作日誌(系統設定 → 操作日誌,/log/user-log,要平台管理員) 列表載入、匯出下載
log 轉發設定(系統設定 → Log 轉發設定,/system/log-forwarding) 頁面載入、存一次「最後修改者」顯示暱稱、按「發送測試 log」有回應
公告(溝通與互動 → 公告管理,/bulletin/bulletin-manage;一般使用者看 /bulletin/bulletin-list) 指定兩個部門 → 詳細頁兩個部門名稱;用該部門帳號看得到、其他看不到;下架時間填早於上架 → 顯示「公告下架時間必須晚於上架時間」;刪除成功不是 409 部門名空白=名冊接口沒接;錯誤碼顯示代碼不是文案=字串值變了
專案參與者、任務指派(專案與任務 → 專案列表 /project/projects → 進一個專案 → 設定頁加參與者;任務設置頁派人;被派的人看「待辦任務」/project/task-manage) 專案設 manager → 建任務 → 派給人 → 被派的人「我的任務」看得到 → 通知寄出
任務問卷(待辦任務 /project/task-manage → 點一個問卷型任務 → 右側「任務執行抽屜」) ① 抽屜的「指派人員」顯示名字(例如 Billows Admin)不是帳號或空白。② 問卷區列出這個任務的問卷,「開啟問卷」進得去。③ 用兩個被派了不同任務的帳號各登入,待辦任務列表各自只出現自己的、數量對。(設備名、任務 uid 那些欄位畫面沒畫,要看的話 F12 → Network → task-survey 請求的 Response,runner 已驗過可跳) ① 空白=名冊接線壞了。③ A 看到 B 的=篩選被丟掉,第 6 棒抓到修掉的資料外洩地雷回來了
問卷填答(待辦任務 → 點一份問卷 → 進填答頁 /survey/fill) 填答頁上方或填答人資訊區的部門欄有名稱 空白=第 4 棒修的接線缺陷回來了
檢測工具(合規與稽核 → 工具外掛管理 /plugin/tool-plugin-manage;派工在專案的任務設置頁綁工具) 綁工具 → 派工(DEV agent 若離線,派到「無可用 agent」即可)→ 執行紀錄列表報告檔可下載
稽核(專案與任務 → 我的稽核管理 /project/audit-manage;進專案 → 稽核輪次 → 任務設置樹、審閱) 我的稽核清單、任務設置樹、審閱 這 5 條 API 沒動,確認不受影響
AI 儀表板(AI 與分析 → AI 儀表板 /dashboard/ai-dashboard) health 回 200;產生儀表板在 DEV 會回「金鑰未設定」(DEV 三把 AI 金鑰本來就空),改前改後一樣
檔案上傳(任一任務的佐證上傳,或專案的 SSP 匯入頁) 上傳一個檔 → 建立者暱稱正常
§5

D. 多租戶與授權(第 7 棒動地基、第 6 棒動授權)

項目 怎麼做 預期
切換租戶(右上角租戶切換,要平台管理員) 平台管理員切到另一個租戶 資料切換正確
使用者清單(租戶與組織 → 使用者管理 /auth/user-manage)、部門樹(→ 部門管理 /department/department-manage) 各開一次 與改前一樣
跨租戶隔離(用租戶 A 的帳號登入,設備管理/公告/專案列表都不該出現租戶 B 的資料) 租戶 A 帳號看不到租戶 B 的設備/公告/專案 看得到=RLS 壞了(jedi-common 地基改動)
授權狀態(授權管理 → 我的授權狀態 /license/status,用子租戶帳號登入看) 子租戶帳號打授權狀態頁 解析到頂層持照租戶
子租戶額度(租戶與組織 → 租戶管理 /tenant/tenant-manage 開新子租戶,到授權上限第 N+1 個要被擋) 開子租戶到上限 第 N+1 個被擋
BE 啟動 log(終端機 tail -50 compliance-manager-be-fr080/log/app.log) tail -50 log/app.log 沒有 localhost:4317 連線錯誤
§6

E. 拔掉測試(證明真的是插件)

core/app_factory.py 找到 register_asset 那行註解掉 → 重啟 BE → 設備與資訊系統的 9 條 API 全 404、其他頁面正常 → 還原。system-core、bulletin、task-platform 同理各做一次(register_system_core、register_bulletin、register_participant)。

§7

F. 收口待辦(不是驗收項,是你要裁的)

  1. 五支新套件發版推 Nexus(asset、system-core、log、task-platform、bulletin),發版後主專案 pyproject 改回正式 pin。
  2. M3:六條外鍵 migration 與 FR-069 以來七支 envs=dev 一起審,放行前要查客戶環境孤兒數。
  3. FE error-code patch 套上(handoff/CM-1626-fe-error-code.patch)。
  4. test repo 一支假綠 e2e(my-tasks-detection.steps.js:323)改斷言。
  5. feature/FR-080 合回,與資安掃描 arc 協調時機;合完 git worktree remove 兩個 worktree。
  6. 另案候選:稽核套件死 route 底下的 service/repo 刪除;survey 作答核心對任務指派 service 的耦合;compliance-audit 去留;②層命名。