母卡:FR-058.7 SonarQube 上傳檔案掃描(scan 模式取源擴充)
現況兩缺陷:① 掃描成功通知只有「專案 X 的檢測工具掃描已完成」一句、只發 Email;② 失敗完全不通知(只寫 detection_executions,使用者要自己去任務抽屜看)。
D34 定案四子項(2026-08-01 決策者逐項拍板):
ORDER BY id LIMIT 1)、控制項群組、控制項、AO、任務名稱、工具名稱、掃描設定、時間(started/finished)、成功或失敗;順手把現成未用的 evidence 參數用起來(報告檔名/份數,零額外查詢)。on_scan_failed 補查 job/binding(抄 on_scan_succeeded :472-475 pattern)後發通知,含 error_message;收件人與成功相同(指派人+專案 manager+reviewer)。catalog_controls.control_id 跨 catalog 不唯一(DEV 實測同 control_id 41 筆)——join 必須帶 catalog_id = profile_imports.source_catalog_id 過濾。title or prose or part_id fallback(job_export_query.py:145 前例)。_resolve_scan_params() 現成兩層(_ 前綴+secret envelope),profile UUID 轉譯成名稱;secret/內部欄位不得出現在任何管道。messages.po 加 6 個 msgid+**pybabel compile 必做**。_profile_domain/_tool_domain/_notify_query 全已注入)。infra/detection_tools/repository/detection_job_notify_query.py(新增 get_notify_context(job_uid),8 層 join 一次 SQL)/app/detection_tools/service/detection_orchestration_service.py/兩語系 messages.po/test_detection_orchestration.py。docs/features/FR-058-2607-detection-tools-expansion/design.md:§2 決策表 D34、§4.8「掃描完成通知(D34)」段、§5.12 T-7.6。