一句話:本卡屬 FR-103(母卡 CM-母卡號),第 1 棒:退役排程報表整條線(Selenium 下載腳本+預覽 API),順手清掉 translate 退役後留在工作目錄的編譯產物。純刪除,BE 單 repo。

這一棒在做什麼(白話)

系統裡有一條「排程報表」的線:一支用瀏覽器自動化的腳本會去 Wazuh(開源資安監控系統)登入,下載 11 種 Windows 資安報表的 PDF 存到某個目錄;另一支 API 讓人在系統裡預覽那些檔。

決策者 2026-09-16 明確裁示「這不需要了」,整條線退役。

順手清掉另一件:api/translate/ 已於 CM-1821 退役,git 裡已經沒有檔案了,但工作目錄還留著 5 個 .pyc 編譯產物。一行 rm -rf 的事。

首腦核對過的證據(runner 不必重查)

它早就脫離主線:bin/report_downloader/ 所有檔案日期停在 2025-04-30,唯一 commit 是 dce39080 integrate notification;不在 core/scheduler.py 的任何排程;沒有 systemd unit、沒有 crontab 進版控;log 路徑 /var/log/cm/report_downloader 是部署機上的路徑。

🔴 selenium 在 pyproject.toml 根本沒宣告(首腦實查 grep 零命中)——那支腳本預期在部署機上獨立裝 selenium 再跑。所以本棒不需要動任何相依,這跟 CM-1821 退役 translate 時「openai 不能拔(AI Dashboard 在用)」的情況不同。

前端零入口:api.js 無常數、FE 全 repo 零命中、ui_routes 的 report-view(url /background/report-manage?v=1)enable=0。⚠️ 注意 ui_routes 另有 report-manage(url /project-summary-report,enable=1)是另一支模組(project_summary_report),不要動到它。

要刪什麼(首腦已用 git ls-files 盤好)

bin/report_downloader/                      4 檔
  ├ report_downloader.py                    Selenium 腳本(10,659 bytes)
  ├ .env.daily_report.sample
  ├ .env.weekly_report.sample
  └ .env.monthly_report.sample

api/report/                                 2 檔
  ├ __init__.py                             Blueprint,1 條 add_resource
  └ routes/scheduler_report_route.py        ScheduleReportPreviewRoute(60 行)

app/report/                                 3 檔
  ├ __init__.py
  ├ common/__init__.py
  └ common/common_utils.py                  41 行,get_schedule_report_fileinfo
                                            (全 repo 零呼叫者,是 file-list 端點
                                             移除後留下的)

連帶要改的四處:
  config/app_modules.py:59                  移除 "report" 一列
  .env.sample:121-122                       移除 SCHEDULE_REPORT_DIR 與其註解
  common/middleware/license_readonly_mw.py:110
                                            移除白名單的 "/schedule-report/file-list"
                                            ⚠️ 該路徑本來就沒註冊(首腦實查:
                                              api/report 只掛 /schedule-report/preview),
                                              白名單在保護一支不存在的端點
  docs/user-manual/scripts/generate_developer_setup_docx.py:193,214
                                            SCHEDULE_REPORT_DIR 標為 🔴 必填,一併移除

translate 本機殘留:
  rm -rf api/translate/                      git ls-files 已回 0,只剩 __pycache__/*.pyc

🔴 不要做什麼

不要動 project_summary_report 模組。它跟本棒無關,但名字相近(ui_routes 的 report-manage 指向它、enable=1、前端在用)。本棒動的是 api/report/app/report/bin/report_downloader,不是 api/project_summary_report。

不要動 pyproject.toml。selenium 沒宣告,沒有相依要拔。

不要刪 docs/api/report/(API 文件與 generate_docx.py)。那是歷史文件,退役不等於抹掉它存在過——比照 CM-1821 退役 translate 時的處理(docs/api/translate/ 保留)。

不要順手清別的看起來沒人用的東西。本棒只做上面清單那些。

怎麼做

步驟 1:先 grep -rn "schedule-report\|SCHEDULE_REPORT_DIR\|report_downloader" --include="*.py" --include="*.sh" --include="*.md" .(排除 docs/conversation-history/ 與 docs/api/report/),確認首腦的清單沒漏。有漏的寫進回寫。

步驟 2:刪三個目錄。

步驟 3:改那四處連帶。⚠️ config/app_modules.py 載入採 fail-fast——清單裡的模組 import 失敗會讓服務起不來,刪目錄一定要同步刪那一列。