本卡屬 FR-137(母卡 CM-2714),實作卡 ③/5:週期新一期生出來後,檢測工具任務自動開掃。前置:卡 ②(排程與單筆複製)。設計:
docs/features/FR-137-2610-recurring-tasks-and-conditional-notify/design.md§6.4;雛形頁 2docs/features/FR-137-2610-recurring-tasks-and-conditional-notify/prototype/task-drawer.html執行紀錄。
掃描類任務如果開了「自動執行」,新的一期一生出來就直接開始掃,不用等執行人按按鈕。SBOM 原始碼掃描會沿用上次上傳的源碼包;agent 型檢測工具照原本的排程時間派給 agent。執行人還是會收到新任務信,抽屜的執行紀錄標「自動執行」。
app/flow_control/service/task_recurrence_app_service.py 留的 hook 點加分支:新任務 auto_execute 為 true 時——activate_jobs(infra/flow_control/repository/task_execution_query.py:106)轉執行中。job_ids=[新任務 id]、curr_user="system"、tenant_id。由既有 _auto_dispatch_first_scans(app/detection_tools/task_type_declaration.py:43)判斷「沒有執行紀錄」→ orchestration.start_execution。不改 _auto_dispatch_first_scans:新一期天生沒有執行紀錄,一定會被派。_run_activation_hooks(pkg/jedi-task-platform/.../task_execution_service.py:105-140,內部方法,呼叫處加註「需在交易內、套件改簽章會無聲壞」),或照 registry().activation_hooks() 用同樣的 SAVEPOINT 包法逐支呼叫。agent_tasks(scheduled_at 沿用分派列,D6);SBOM 走伺服器端派工,不帶新檔即沿用綁定 tool_params 裡上次那份源碼包(pkg/jedi-detection/.../server_side_dispatch.py:118-137)→ background_jobs 排單。notify_user_todo_job 新任務信。JobExecutionDrawer.vue 執行紀錄:created_user == "system" 的那筆標「自動執行」,說明「第 N 期到期時系統自動開始,沿用上次上傳的源碼包」。該檔 2,365 行超標,抽成子元件或只加一行判斷。next_due_at 改過去 → 觸發排程 → 第 2 期抽屜出現一筆執行紀錄標「自動執行」、源碼包顯示「已上傳(沿用上次)」,掃描跑完(記得起 RUN_MODE=worker,不然背景單會卡在 queued)。agent_tasks 建出 pending 單——回寫時明講這是打折驗收。feature/FR-135(決策者裁沿用),不切 branch、不 push;開工先 git branch --show-current 確認,不對就停下問。