現況(2026-10-01):本文是 2026-09-26 的分類快照。文中「未修/待裁」的項目後來已全數處理——FR-114 第 8 批 12 組(CM-2211~2220 等)已修並隨 1.21.0 出貨;1.21.1 再修授權讀取(CM-2369)等。最終狀態以 docs/security-report/SUMMARY.md 問題總表為準(已修 206、拆除退場 15、裁定不修 12、SaaS 前必做 1)。以下內文保留當時的分類過程。
FR-120 登記員工作單(首腦驗收結論定稿,2026-09-25 22:30)
登記範圍:U2/U4/U5/U6/U7/U8/U9/U10/U11/U12/U13a 共 11 棒(U1/U3 已登 adc11be5c,U13b 尚未派)。 報告都在 docs/features/FR-120-2609-host-residual-security-scan/scan-U*.md,先讀全文再登。 總表 security-scan-consolidated/README.md 現值:219 項(§3.1 184、§3.2 33、§3.3 2)、128 輪、§7 待裁 42 項(最後第 50 項)、未開卡 217。 新項次從 §3.1 第 185 項起、§3.2 第 39 項起、§1 第 129 輪起、§7 第 51 項起連號。 runner 引用「總表第 N 項」一律核對 §3.1 真的是那一項;U11 報告把「容器紀錄沒遮罩」寫成第 173 項是錯的(173 是 Word 卡死),那條是 U2-2 本次新登。
§1
各棒結論(照登,不改判)
U2 啟動與中介層(CM-2154,scan-U2.md,run wf_2ac3d75c-1b1)
- stamp verified,5 候選 15 票,4 成立(3:0×3、2:1)1 否決 0:3;研究員 2/2。
- 工具 4 條全舊帳不另計:F1=SUMMARY #12(資料庫密碼寫進版控)、F2=CM-1631(Drive 憑證外洩)、F3=M13 第 17 條 CM-2056(停權後通行證仍可用)、F4=SUMMARY #10/#11。
- 第 12 項尾註:runner 確認 docs/claude/memory/ 兩檔(project_ssp_doc_parser_progress.md、project_drive_sync_test_data.md)含現行 DB/Redis 密碼,FR-114 清殘留範圍要加這目錄。
- CM-2056 尾註:修正只在修正線 3a96260b,出貨釘住的 jedi-iam 1.3.0 wheel 無
_is_account_disabled(首腦 unzip 核過);發版時要記得。
- 淨新增 §3.1:
- 第 185 項【中】使用者上傳目錄整個公開在 /static/ 不必登入(core/app_factory.py:94-98 static_folder 指向上傳區;出貨 nginx 只轉 /api/1.0 與 /socket.io 所以正式版打不到,開 8000 埠排錯或換代理就整包公開;問卷答案 Excel、意見回饋附件、OSCAL 匯出檔)。開卡素材 ✅。
- 第 186 項【中】即時通訊服務 logger=True/engineio_logger=True(core/app_factory.py:184,186)逐筆記錄封包,登入權杖明文進容器紀錄;診斷包收容器紀錄 host_collector.py:136-156 沒過 mask_log_lines,原樣帶走(runner 實測)。U11 補:出貨主機預蒐路徑 staged_collector.py:128-153 同樣沒遮,修時兩支一起。開卡素材 ✅。與第 162 項同組(診斷包遮罩)。
- 第 187 項【中低→登低】授權到期唯讀閘門兩個縫:/agents/ 前綴豁免太寬讓代理程式註冊碼仍可產生(license_readonly_mw.py:76);問卷填答走即時通訊通道不經閘門(jedi_survey fill_survey_socketio_handler.py:164)。開卡素材 ✅。
- §3.4:U2 排除四件(權杖解不開一律 401/403、唯讀閘門驗身分前比對網址 8KB 實測 0.055ms、請求上限只看標頭、diag 子命令只在 CLI)。
U4 雲端硬碟設定/授權/金鑰(CM-2159,scan-U4.md,run wf_a828ae6e-597)
- stamp verified,5 候選 15 票零漏投,4 成立 3:0、1 否決 0:3。
- 淨新增 §3.1:
- 第 188 項【高】Google 授權回呼頁反射型 XSS:api/cloud_integration/routes/google_drive_integration_route.py:115-140
_callback_html 把 request.args 的 error 用 json.dumps 塞進 inline script,json.dumps 不轉義 < >,</script><script> 截斷後執行;6 月 99055ab00 C12 修法不成立、註解仍寫「防 Reflected XSS」。落地版 FE 與 API 同網址、token 在 localStorage,受害者登入狀態點連結即被盜憑證,攻擊者不需帳號。首腦本機 HTML parser 重現切成兩個 script。修:error 改固定錯誤碼白名單、:110 的 str(e) 不回頁面、加 CSP。開卡素材 ✅。建議不等 FR-120 全收先轉 FR-114。
- 第 189 項【低,非資安→登 §3.2 第 39 項】加密金鑰換掉後 token_manager.py:60,:66 只接 InvalidGrantError 不接 InvalidToken,狀態維持 CONNECTED、同步靜默失敗、錯誤訊息空白。
- 第 190 項【低】授權網址 state 沒綁發起者瀏覽器(google_drive_integration_service.py:90-94 產生、:107-116 回呼只看 state),可轉寄他人代按讓對方硬碟接進攻擊者公司;未實測。開卡素材 ✅。
- 第 191 項【低】驗證憑證端點只 require_platform_admin 不查 storage-config 能力點(drive_app_credential_verify_service.py:71),與註解自述不符;總部任一登入帳號可試任意憑證對錯。開卡素材 ✅。
- 工具 F3=U5-1、F4=U5-2、F2=CM-1631 重現不另計。
- §3.4:U4 排除五件(權杖更新不會寫錯公司、Drive 應用程式設定只讀 ROOT 列+兩道守門、手動重試同步跨不了公司 RLS 擋、get_project_folders 無問題、旗標 DRIVE_APP_CONFIG_PLATFORM_ADMIN_ONLY 改 False 客戶自填也不生效因 resolver 只讀 ROOT,功能落差非洞)。
U5 雲端硬碟回呼+同步排程主幹(CM-2156,scan-U5.md,run wf_32b5fcb9-978)
- stamp verified,6 候選 18 票零漏投,F1-F4 3:0、F5/F6 2:1;研究員 2/2。
- 淨新增 §3.1(與 U6 合併登):
- 第 192 項【高,採 U6 評級】init-folders 入口不核專案歸屬+背景系統身分讀:api/cloud_integration/routes/google_drive_sync_route.py:101-122 只掛 jwt+license;drive_sync_admin_service.py:108-131 註解自承「FE 已擋按鈕、後端不查」;project_tree_loader.py:86-91 用 SYSTEM_USER_ID/SYSTEM_IS_ADMIN 載專案;init_project_folders_handler.py:365-407 寫對應表唯一鍵 (tenant_id,scope_type,scope_uid) 擋不住跨租戶。A 客戶任一登入帳號知 B 專案編號→把 B 整棵專案結構建進 A 硬碟、往裡丟檔變 B 任務的證據。U6 runner DEV 實測(回滾):131 身分載出 102 專案、131 身分把證據寫進 102 任務 14795;首腦重查零殘留。「建跨公司對應」那步未實跑(要真 Google)。決策者 09-25 裁:要修。修:trigger_init_project_folders 排入前用 common.authz 專案軸驗歸屬+管理者;ProjectTreeLoader.load 帶 tenant 過濾。開卡素材 ✅。
- 第 193 項【中,設計選擇,決策者 09-25 裁改】所有雲端資料夾含根資料夾設 anyone/writer(google_drive_api_client.py:285-301;init_project_folders_handler.py:448、create_folder_handler.py:59、archive_drive_file_handler.py:157),FR-016 design.md:52 刻意選;GET /integrations/google-drive 只掛 jwt+license 回 root_folder_id(google_drive_integration_route.py:36-49、serializers:13)。公司內任一登入帳號拿根資料夾連結可看改刪全公司證據;改寫的檔下輪同步被匯成證據。裁定兩段:①root_folder_id 不回給無讀取權限者、②分享改 type=domain(客戶 Workspace 網域)或專案成員;既有資料夾要一支一次性工作撤 anyone 授權。開卡素材 ✅。
- 第 194 項【中】背景處理器查對應表與證據不帶公司(U6-3):drive_folder_mapping_repo_impl.py:67-75 get_by_drive_folder_id、:77-83 get_by_uid;job_evidence_repo_impl.py:136-166 三支;呼叫端 process_drive_changes_handler.py:256-262、import_drive_file_handler.py:91/:142、soft_delete_evidence_handler.py:34-37。排程 system_context 繞 RLS、job_evidences 無 tenant 欄無 RLS(首腦 DEV 重查 relrowsecurity=f)。U6 runner 實測(回滾):131 名義處理變更排出指向 102 任務的匯入、軟刪把 102 唯一雲端證據標已刪。自然觸發情境:兩家接同一 Google 帳號(tenant_drive_integrations 只 UNIQUE(tenant_id),首腦 DEV 核過)。決策者 09-25 裁:接硬碟時拒絕已被別家接過的 Google 帳號(唯一約束 google_account_email+錯誤訊息)。開卡素材 ✅。
- 第 195 項【低】webhook 註解宣稱去重但無實作(google_drive_webhook_service.py:118)。
- 第 196 項【低】webhook token 比對非常數時間(:93-96)。
- 第 197 項【低】find_child_by_name 只跳脫單引號不跳脫反斜線(google_drive_api_client.py:121),與第 110 項同型,未實測。
- U5 F1/F2/F5/F6=CM-1607/1629/1631 重現不另計。
- §3.4:U5 排除三件(回呼入口 256 位元憑證+找不到頻道回應一致不洩露、使用者不能塞指定別家的工作列、憑證產生夠隨機)。
U6 雲端硬碟八支處理器(CM-2157,scan-U6.md,run wf_6fa5dc78-d4f)
- stamp verified,1 候選 3:0(=第 193 項 U5-2 同一項,不另計);U6-1=第 192 項、U6-3=第 194 項,上面已併。
- §3.4:U6 排除(匯入檔名路徑跳脫測過
../ 跳不出、09-17 新增兩個證據查詢有限定任務、封存處理器用工作公司找資料夾實際擋得住)。
- 連帶:runner 回報本機 BE 起不來——修正線 jedi-task-platform 加抽象方法 resolve_project_id_for_job,主線 BE FlowControlJobRepoImpl 未實作(首腦核:修正線 BE 有實作、主線無);屬 .venv 指向修正線套件的不對版,非 bug,提醒修正線發版主線 BE 要一起合。U5 也撞到。
- 教訓(LOG 用):U6 報告寫一半 session 斷掉,之後 prompt 加「先 commit 初版再補細節」。
U7 任務入口與批次(CM-2158,scan-U7.md,run wf_14dcf3f9-ca2)
- stamp verified,9 候選 27 票零漏投,8 條 3:0、1 條 0:3。
- 決策者點名「批次完成預設把呼叫者當管理員」(decision-draft 第 50 項):不成立——job_batch_complete_service.py:50-56 is_manager=True 只在守門零件沒接或無 project_uid 時生效,兩零件 di 有接(flow_control_containers.py:579-585)、網址必帶專案;第 59 項「待核對」結案。寫法「零件沒接就放行」建議改沒接就擋。
- 淨新增 §3.1:
- 第 198 項【中】匯入任務 Excel「上傳驗證」零守門且 job_import_service.py:203 load_workbook 無 read_only 整份進記憶體(首腦核過),runner 實測 9.8MB 檔 22 秒 1.46GB;第 130 項壓縮炸彈第五個入口(總表 130 項未列 job_import,首腦 grep 核過)。併 2-F 那組。開卡素材 ✅。
- 第 199 項【低,面板 3:0】匯出任務 Excel 不過濾公式(job_import_service.py:158-167)。
- 第 200 項【低,面板 3:0】批次完成通知信把操作者暱稱原樣塞 HTML(job_batch_complete_service.py:168-174;同型 workflow_execution_service.py:1219、project_service.py:776)。
- U7-4【併第 59 項不另計】批次完成用網址專案角色跳過逐筆核對、不核任務屬網址專案(:58-62);runner DEV 實測 user 17 在 323 管理員/642 viewer,網址填 323 勾 642 任務逐筆核對未被呼叫;目前分支等同第 59 項、修正線 CM-2147 內層會擋。第 59 項驗收項加「A 管理員+B viewer 網址填 A 勾 B 要被擋」。
- 工具 6 中=第 45/155/156/157 項重現不另計。
U8 流程背景作業(CM-2160,scan-U8.md,run wf_fc0b9dcb-c09)
- stamp verified,1 候選 3:0。
- 決策者點名覆核輪承襲來源與目的同源:不成立(launch_reverify 用母輪自己 project_id 驗角色、新輪 project_id 抄母輪、配對編號全程式推出)。9 支排程全具名系統身分掃全庫無逐租戶切換(與 U5/U6 同設計)。
- 淨新增 §3.1:
- 第 201 項【低,面板 3:0,當時待裁(後已裁並修,CM-2208):與 FR-112 design.md:307 決策者 09-20 裁定衝突】流程圖編輯器存檔刪方塊=硬刪任務不問專案管理人(workflow_xml_sync_service.py:91;守門只有 module-frame.update 能力點+RLS);同公司有改範本權限者知範本編號可刪別專案任務連證據。首腦建議:維持裁定但補「查得到專案就問管理人、查不到才放行」。→ §7 第 51 項(已裁並修,CM-2208)。
- 第 202 項【低】證據蒐集執行進度只驗登入(套件 jedi_task_platform task_execution_service.py:139,同檔 :69 有 _check_manager)。
- 第 203 項【低/陷阱】孤兒清理 job_binding_orphan_query.py:121 NOT EXISTS 判定,排程無身分時 RLS 讓它看不到任務→全部綁定判孤兒整批刪;今日排程有帶 system_context 不會觸發;runner DEV 資料庫層回滾實測。第 46 項尾補一句:對 NOT EXISTS 型判定方向相反,沒身分=全部判中。
- §3.4:U8 排除四件;盤點檔 scan-inventory.md §6「task_assignees 無 RLS」已過期(首腦 DEV 重查 relrowsecurity=t、4 條規則)。
U9 摘要報告+關聯表+帳號角色殘段(CM-2161,scan-U9.md,run wf_e920735d-3bb)
- stamp verified,5 候選 15 票零漏投,3 條 3:0、1 條 0:3、1 條 1:2。
- 第 65 項主線未修(runner DEV 實測 131 非成員身分撈到 321 專案摘要全文);修正線 CM-2037 已修未合回,F2 不另計。第 150 項 F3 不另計(修正線 CM-2189 已修)。
- 淨新增 §3.1:
- 第 204 項【中,面板 3:0】摘要報告 PDF 匯出白名單 data:image/* 含 svg+xml(project_summary_report_route.py:42-50
_summary_img_attr_filter),SVG 可指內網網址或 file://,WeasyPrint 69.0 預設 fetcher 照抓;首腦本機重現:白名單放行 svg、假伺服器收到請求。CM-892 防線被繞。修:白名單排除 svg 或 :166 write_pdf 給拒絕一切的 url_fetcher。開卡素材 ✅。
- 第 205 項【中,首腦推翻面板 0:3 否決】還原歷史版本不核版本歸屬:project_summary_report_history_service.py:50 取歷史後直接寫入,只驗報告所屬專案成員;首腦開修正線檔核:CM-2037 只給讀取加守門,revert 方法未動;面板否決理由「歷史本來就能直接讀」只在第 65 項未修時成立,修正線合回後還原成唯一讀取路。與第 94 項同型同修法(比對 history.report_id == report.id)。併第 65 項同卡。開卡素材 ✅。
- C4(原廠帳號保護沒擋改到期日)1:2 否決,首腦同意不立項;建議修 root admin 保護時順手加到期日。
- §3.4:U9 排除(角色帳號包裝層無繞過、root_admin_reader 只回布林、三支關聯表無對外路由)。
U10 診斷包下載入口與組裝(CM-2162,scan-U10.md,run wf_c03e5bb6-44b)
- stamp verified,1 候選 0:3 否決(間接提示注入,程式碼不送 AI;首腦同意否決,原廠內部貼包進 AI 時要當不可信資料,屬作業規範)。
- 下載入口只兩條都守得住,排除。
- 淨新增:
- 併第 162 項改寫(不另立項):診斷遮罩認得的密碼寫法太少且四條路徑強度不一——首腦實測:mask_log_lines 只遮 Bearer、漏 password=值/連線字串帳密/export KEY=值/DB_PASSWORD=值;mask_env_text 遮 KEY=值 但漏 Bearer 與連線字串;db_reader.py:237 與 diag_slice_domain_service.py:245 走最弱 mask_json_like。組裝入口 diag_bundle_app_service.py:115-120 無統一最後一道遮罩;manifest 遮罩清單只列遮到的會誤導。runner 真包實測三個假密碼原樣留在 env/guidant.env.masked。第 162 項修法改寫為:①資料庫紀錄與最近錯誤改走日誌遮罩;②四支規則補認 名稱=值/名稱='值'/Bearer/URL 帳密/export;③打包前統一過一道。
- §3.2 第 40 項【非資安】稽核只記匯出意圖沒記成敗,docstring 指向不存在的
_audit_export(diag_bundle_export_service.py:30、:90-99;首腦 grep 全 repo 僅該處提及)。
- 第 206 項【低】since 帶時區 until 沒帶時比較當掉回 500(diag_bundle_export_service.py:120-122)。
- 資訊(§3.4 記):畫面版產包同步佔工作程序、日誌切片記憶體 1.3 倍。
- 更正:首腦派工誤寫「第 173 項是診斷包遮罩」,實為第 162 項。
U11 診斷包資料收集器(CM-2163,scan-U11.md,run wf_408b5225-5ee)
- stamp verified,2 候選 6 票皆 3:0;研究員 2/2(第一位 90 分鐘被中斷自動重派一次,failed 0)。
- 淨新增 §3.1:
- 第 207 項【中,面板 3:0】寄信失敗時 jedi_notification smtp_mail_adapter.py:52/:57
logger.error(f"... smtp info: {self.config}") 把整組寄信設定含密碼以 password='值' 寫進日誌;遮罩 diag_masking.py:164-169 不認此寫法(首腦實測 mask_log_lines 與 mask_json_like 都漏)。併第 162 項那組但單獨立項(有真實來源)。開卡素材 ✅。
- 第 208 項【中,面板 3:0】指令版 sudo guidant diag 在容器使用者可寫的 home 掛載點下用 PID 猜得到的名字建暫存資料夾、不檢查符號連結(scripts/installer/guidant:700-708);容器內一般權限者預放捷徑讓主機 root 寫到別處;runner 本機重現。修:mktemp -d 建在只 root 可寫處或檢查不存在且非捷徑。開卡素材 ✅。
- 第 209 項【中】畫面版設定快照跨多行值只遮第一行(container_collector.py:94 串成 KEY=值 文字再遮);首腦實測多行 JSON 第二行密碼留下;出貨 DB_SECRET 單行故今日落地版未中。開卡素材 ✅。
- 第 210 項【低】預蒐模式讀檔照索引檔路徑不限制在 staging_dir 內(staged_collector.py:90、:140 服務名未驗可出現 ../);前提同第 208 項。
- 第 211 項【低】api_logs 的 url 欄不在 MASKED_API_LOG_COLUMNS(diag_bundle.py:30),網址帶權杖參數原樣進包;產品不用網址傳權杖,DEV 1 筆測試資料。
- 容器紀錄無遮罩=第 186 項(U2-2),U11 補預蒐路徑 staged_collector.py:128-153 同洞,已寫進第 186 項。
- §3.4:U11 排除(docker 指令寫死、DB 讀取器只看兩張紀錄表全租戶屬設計、打包檔名與大小有上限)。
U12 零散殘段+系統設定守門+人員對帳(CM-2164,scan-U12.md,run wf_a2018933-ffc)
- stamp verified,3 候選 9 票零漏投,F1/F2 3:0 皆舊帳(第 74/72 項,主線都未修),C3 0:3 否決。
- 系統設定守門:AI 金鑰、Drive 應用程式兩組「能力點+平台管理員」兩道都在;其他群組只一道能力點屬刻意。第 74 項三組(登入規則/LDAP/寄信)主線仍只一道,子公司管理員仍寫得進全站列(DEV 核 smtp-config.update 等 is_platform=f)。
- 淨新增 §3.1:
- 第 212 項【高,待產品決策,§7 第 52 項】修正線 CM-2054 補的「總部層級」守門(common/authz/tenant_hq.py 判準「最短可見路徑深度==2」)擋得住子公司、擋不住另一家客戶的總部(首腦開修正線檔核判準屬實;runner 實測 /1/102/ 能、/1/102/152/ 擋、/1/131/ 能);寄信/LDAP 共用列全站只一列(首腦 DEV 核 LDAP 在 tenant 1)。客戶 B 總部管理員仍能改掉客戶 A 與平台在用的寄信伺服器。根源:方向④「只給客戶第一層改」預設每家一份,但資料模型全站一份。二選一:①全站一份→寫入只給 require_platform_admin(首腦建議,理由:落地版一台機器寄信伺服器本來就一台,改守門一行);②每家一份→改資料模型與讀取端。轉 FR-114 重開 CM-2054。
- 第 213 項【低】即時通知 namespace 完全不驗身分、join 任意房間、reload 原樣廣播(notification_socketio_handler.py:19/:34/:43);今日空房間——前端唯一使用元件 ProcessDiscussBox.vue 零引用(首腦 grep 核過)、伺服器不往此頻道送資料。面板 0:3 否決有理,記錄不開卡;元件接回畫面時變成不用帳號偷聽討論串。
- 第 214 項【低】人員對帳 person_reconciler.py 四處查詢收 tenant_id 但零使用(首腦 grep 核 0 處),organization_reconciler 有用;平台管理員身分下橫跨所有客戶比對,配對結果只寫附註欄不給權限。修:四處比照組織比對加 tenant_id。
- 第 215 項【低】解析工作單兩表 INSERT 政策 WITH CHECK (true)(02-schema.sql:24970、:25004),程式一律從登入身分取 tenant 目前無路。
- 第 216 項【低】防竄改旁證 IP 讀 X-Forwarded-For 可偽造(common/integrity/adapters.py:269-273),修正線已改 remote_addr。
- 第 161 項尾註:tenant_storage_config_seeder 把原廠 AI 金鑰抄給新客戶,修正線 CM-2192 已修主線未合。
U13a DI 專掃 core/plugins(CM-2166,scan-U13a.md,run wf_5b4ba820-2db)
- stamp verified,4 候選 12 票零漏投,3 條 3:0(全舊帳:第 34/37/40、第 11、第 36 項)、1 條 0:3 否決。
- 三問答案:九支七支問對;套件拿 None 時登入/能力點/授權一律拒絕掛載;di_modules.py 載入順序無問題(守門被呼叫那刻才找容器)。
- 淨新增 §3.1:
- 第 217 項【中】原廠共用檔(storage_scope='system',DEV 18 支)任一公司登入者可刪實體檔:套件 minio_adapter.py:130-140 先 remove_object 再 delete_by_uid(首腦開 wheel 核順序屬實);upload_files DELETE 政策只給 super_admin 或同租戶(首腦 DEV 核),第二步被 RLS 靜默擋、第一步已刪、API 回成功→紀錄在檔案沒了、全體客戶壞。第 34/47 項的資料庫牆只擋紀錄。修:delete_file 對 system 檔非平台管理員先拒絕;刪除順序改先刪紀錄成功才刪實體。併第 37 項同卡,驗收加「一般帳號刪原廠檔要失敗且實體檔還在」。runner 未實刪,修正線名冊擋不擋未驗。開卡素材 ✅。
- 第 218 項【低】AI 儀表板生成端點只掛 @require_license 不查 ai-dashboard.read(套件 ai_dashboard_route.py:99;core/plugins/ai_dashboard.py:52-61 只交 auth_required 與 license_guard,首腦核過);DEV 102 的「稽核人員」「IT執行人員」無此能力點(首腦 DEV 核),選單看不到但直打網址能用、每用一次付兩次 AI 費。runner 實測。搬進套件前主專案端點也沒有。修:AiDashboardAdapters 加 capability_required,併 CM-2038 後續。開卡素材 ✅。
- §7 第 53 項(已結案,CM-2111 修正):當時待裁——C4=CM-1605(FR-078 N2 F1 當時面板 HIGH、已開卡 Not started)本次面板 0:3 否決,理由「能打的人本來就能改 SMTP 設定,沒給新能力」;runner 沒追「存設定」是否沿用舊密碼;兩次面板相反,請決策者裁維持或降級。
- §3.4:U13a 排除(公告拿不到部門時看全部=第 1 項舊帳;修正線檔案套件拿不到名冊只警告照掛但主專案修正線已接上)。
§2
已裁定(登 §7「已裁記帳」或對應項尾註)
- 第 192 項(U6-1)要修;第 193 項分享改 domain+root_folder_id 不外露;第 194 項連帶「同一 Google 帳號不接兩家」要擋——決策者 09-25 裁,並確認落地版租戶模型是多頂層租戶各自獨立公司,跨頂層即真洞,不因「通常只裝一家」降級。
- 第 182 項(U1 授權總開關)決策者 09-25 改判要修:落地版拿掉 LICENSE_ENFORCEMENT_ENABLED/LICENSE_READONLY_GATE_ENABLED 兩個開關(config.py:295-298、license.py:177-184、installer 1420-1421、diag 回報段、.env 範本、部署文件),放行需求走補發測試照。§7 第 50 項標已裁。嚴重度低→中。
- CM-2198 營運待辦已開(FR-110):申請正式 Google OAuth app+送同意畫面審查+落地機回呼網址登記 SOP;與 CM-1631 換發同一組憑證。總表 §6 上版待辦加一列。
§3
新增 §7 待裁(第 51~53 項;後均已裁並修)
- 第 201 項:流程圖存檔刪任務不問專案管理人,與 FR-112 09-20 裁定衝突,工具建議重評;首腦建議維持裁定但補「查得到專案就問管理人」。
- 第 212 項:寄信/LDAP/登入規則是全站一份還是每家一份(首腦建議全站一份→只給平台管理員)。
- CM-1605 兩次面板相反,維持 HIGH 或降級。
§4
數字(登記員自己算,對不上回報)
- §3.1 184→217(+33;第 189 項 U4-5 落 §3.2);§3.2 38→40(+2:第 39 項 U4-5 金鑰換掉不報錯、第 40 項 U10-2 稽核缺成敗);輪次 128→139(+11)。
- 嚴重度加總:高 +3(188、192、212)、中 +11(185、186、193、194、198、204、205、207、208、209、217)、低 +20。