一句話:本卡屬 FR-105(母卡 CM-1838),實作類:清掉 module_frame 模組五個對外不可達的 v1 殘留端點+兩個隨版 v1 範本檔+前端對應死常數與註解碼。決策者 2026-09-16 裁「確定目前已經沒在用就清掉」。證據來自 CM-1839 分類表 §4.1/§4.2,首腦已逐項複查。
模組框架頁面在 OSCAL v1 時代有一條「下載空白 Excel 範本 → 填好 → 上傳匯入」的流程。2026-01-22 前端換成 OSCAL v2 時把這條流程整段註解掉(FE commit b71180a),八個月沒人開回來;那份範本的欄位(Clause/Requirement/Frequency/Risk/Departments)跟現在 v2 的資料模型也對不上。後端還留著三支端點與兩個範本檔。另外兩個 Resource 類別 2026-06-18 就標「DEAD-V1 停用待清理」,route 註冊被註解,一直沒人刪。
這五個端點對外都打不到,但程式與範本檔還在,屬「功能退役後的殘留」。清掉讓主專案少一組會誤導人的入口。
首腦核對(2026-09-16,HEAD 84b8426a):
api/module_frame/__init__.py:88、:93 兩行 add_resource 被註解;全 repo grep -rn 'ModuleFramesRoute\|ModuleFrameStartRoute' 只命中定義、__init__.py:14 的 import、那兩行註解、一份 docx 產生腳本的圖說。__init__.py:96-98 有註冊,但 FE 唯一呼叫處全在 ModuleFrame.vue 被註解的程式碼裡(:668/:672/:737);bin/、scripts/、e2e repo 零命中(e2e 只在一份對話紀錄 jsonl 出現)。resources/download/audit_frame_template_v1.{xlsx,yaml} 只被那兩支下載端點以檔名引用;scripts/build/build_release.sh:787 是整個目錄複製,沒有逐檔列名,刪檔不用改 build 腳本。目錄內其他三個檔(CMMC/survey/user_sample)不動。ModuleFrameImportDataVerifyRoute(import/verify)、ModuleFrameImportDataRoute(import)、ModuleFrameYamlImportTemplateRoute(import/yaml),FE ModuleFrame.vue:1019/:1050/:847 在用。api/module_frame/__init__.py:14 import ModuleFramesRoute, ModuleFrameStartRoute(同行還 import 活的 ModuleFrameRoute 等,只拿掉這兩個名字)
api/module_frame/__init__.py:18-19,23 import 三支範本 route(:22 的 YamlImportTemplateRoute 是活的,留)
api/module_frame/__init__.py:88,93 兩行被註解的 add_resource → 連註解一起刪
api/module_frame/__init__.py:96-98 三行 add_resource → 刪(:101 import/yaml 留)
api/module_frame/routes/module_frame_route.py:44-62 class ModuleFramesRoute → 刪
api/module_frame/routes/module_frame_route.py:113-131 class ModuleFrameStartRoute → 刪
api/module_frame/routes/module_frame_import_route.py:27-35 class ModuleFrameTemplateDownloadRoute → 刪
api/module_frame/routes/module_frame_import_route.py:37-45 class ModuleFrameYamlTemplateDownloadRoute → 刪
api/module_frame/routes/module_frame_import_route.py:47-84 class ModuleFrameImportTemplateRoute → 刪
api/module_frame/routes/module_frame_import_route.py:3,4,6 tempfile/Counter/pandas 三個 import 只有 :59/:72/:64 在用,都在被刪的類別內 → 一併拿掉(拿掉前 grep 該檔確認)
app/module_frame/service/module_frame_service.py:226-265 start_project_from_module_frame → 唯一呼叫者是被刪的 ModuleFrameStartRoute(:129),刪 route 後零呼叫者 → 一起刪(決策者裁「沒在用就清」)
resources/download/audit_frame_template_v1.xlsx / .yaml → git rm
compliance-manager-fe/src/config/api/api.js:148,154,155,156 MODULE_FRAMES/MODULE_FRAME_TEMPLATE_DOWNLOAD/MODULE_FRAME_YAML_TEMPLATE_DOWNLOAD/MODULE_FRAME_IMPORT_TEMPLATE → 刪(MODULE_FRAMES 全 src 零使用,首腦已 grep)
compliance-manager-fe/src/views/module_frame/ModuleFrame.vue:667-690, 732-750 被註解的舊匯入流程(downloadExcelTemplate/downloadYamlTemplate/importFromExcel 及其 ref)→ 刪;⚠️ 逐行看,只刪屬於這條流程的註解,不掃其他註解
python -c 'import api.module_frame' 或直接起 BE,確認 blueprint 載入無 ImportError。api/module_frame/serializers/ 有沒有只被這五支 route 用的 schema——有就一起刪,沒有就不動(首腦沒查這層,runner 查)。start_project_from_module_frame 刪前先 grep -rn start_project_from_module_frame 全 repo(含 test/)確認只剩定義;它的 DTO/import 若因此變成未使用也收掉。若 test/ 有測它的案例一起刪。git rm。scripts/build/build_release.sh 若有對這兩個檔的斷言(grep audit_frame_template)一併拿掉;首腦 grep 只看到 user_sample_v1.xlsx 有逐檔斷言(:858),本檔應無。import_module_frame_success_1 等只被註解碼用的 key)——只被刪掉的程式用的 key 一起刪,仍有活程式用的留。i18n 檔改完 json.load 或 node -e 驗語法。poetry run python scripts/gen_postman_collection.py(需 BE 可起),確認 scripts/deliverables/out/routes.json 少掉 /module-frame/download/template、/module-frame/download/yaml-template、/module-frame/import/template 三條。module_frame_{party,components,inventory,leveraged,system_characteristic,ssp_resources}_service.py)中帶空值哨兵的那幾支,檔頭補一到兩行陷阱註解:「寫入時把空的 party_uuid/date_authorized 塞成 NIL-UUID/today 是為了繞套件 NOT NULL 約束,讀出時要換回 None;新增第三個寫入者必須照做」。決策者裁哨兵記債不動,只補註解。哪幾支真的有哨兵以 CM-1839 分類表 ② 的「殼帶主專案規則」欄為準,沒有哨兵的不加。