盤點日期 2026-09-24|盤點卡 CM-2140(母卡 CM-2139)|這份文件只盤點、不掃描——切好棒等首腦決定要不要開卡派工。 行數全部是
wc -l逐檔實算。基準:BEfeature/reviewcommit3ef11c640(工作區有平行 session 未 commit 的改動,都在docs/,不影響程式檔行數)。
名詞先講清楚(讀者是 PM 與新手工程師):
git ls-files -- '*.py' | grep -v -E '^(test|tests|scripts|docs|migrations)/',共 826 支、87,324 行。verified)。common/authz/)有 9 支從來沒被掃過。先前 FR-115 盤點寫「common/authz/ 全專案共用守門本體,FR-085 C1 已掃」——這句不成立:FR-085 C1 掃的是 jedi-common 套件的 session/identity/handler,不是主專案的 common/authz/。stamp 顯示主專案這層只有 project.py/ssp.py/workflow.py 三支被別棒順帶讀過;license.py(367 行,授權檔功能開關)、sharing.py、__init__.py(180 行,決策表)等 9 支沒人讀過。建議排第一棒(U1)。common/middleware/jwt_mw.py、common/middleware/license_readonly_mw.py(217 行,授權到期時的唯讀閘門),加上 core/app_factory.py(469 行,把中介層與路由組起來的地方)。總表第 154 項(唯一不必登入就能讓全產品停擺)就是在同一個目錄抓到的。建議排第二棒(U2)。cloud_integration),51 支 6,000 多行完全沒碰,其中背景同步那半(U5/U6)守門字眼是 0——它不接網址,是 Google 通知回呼+背景工作在跑,工具要看的是「回呼憑什麼信任」與「背景工作用誰的身分動誰的資料」。| 來源 | 內容 | 怎麼用 |
|---|---|---|
① BE repo 根下 55 個 CLAUDE-SECURITY-<時間>/ |
53 個有 stamp(CLAUDE-SECURITY-REVISION-*.json,內有 scope 陣列=工具實際讀的路徑),2 個空目錄(20260905-141910、20260908-070222,沒 stamp、沒報告) |
主來源。scope 裡的目錄前綴展開到檔 → 命中 379 支主專案檔 |
② 各棒報告與 scan-inventory.md |
FR-113/115/116/118 四份盤點+FR-113 module_frame 盤點+各棒 scan-*.md |
補 stamp 不在的棒:FR-113 O6、O9a、O9b、B1-item 四棒的 stamp 目錄已不在 BE repo 根下,照盤點檔列的檔案清單補進來(+22 支) |
| ③ 總表 §1(125 列) | 每輪的範圍描述 | 交叉核對用:早期 FR-075~FR-088、FR-095~FR-098 的主專案模組都能在 ① 找到對應 stamp(通知 N2、公告 B2、意見回饋 I2、AI 儀表板 D2、上傳 B2、流程引擎 H1~H4、任務平台 H1、系統設定 H1)。套件側的 stamp 在 jedi monorepo 與各套件目錄下(共 78 個),scope 全是套件路徑,對主專案檔數零貢獻(唯一例外 FR-095 P2 的 participant/… 是套件內路徑) |
兩個容易看錯的地方:
jedi-common 的 session/、logger/、utils/,報告裡提到的主專案檔(request_context_mw.py、app_mw.py、redis_client_util.py)是 runner「越界核對」讀的,不算掃過。前兩支後來由 FR-115 W5/W7 正式掃了;redis_client_util.py 仍是沒碰。security-scan-2607/)是 Semgrep 規則掃描,不是同一種工具,不算入本表。FR-087 T1 是人工查資料庫,沒有讀程式的範圍,不算入。全部來自 FR-113 的三棒面板沒跑完:
| 棒 | 檔數/行數 | 為什麼只算部分 |
|---|---|---|
| O6 文件池與匯入比對引擎 | 6/1,917 | 面板 unverified,決策者手動停;首腦開檔核對三處屬實 |
| O9b 接線總裝、稽核階段掛鉤、人員對帳 | 17 支範圍裡 12 支只有這棒讀過(含 1 支 0 行 __init__;另 5 支被別棒掃過)/905 行 |
投票 0 票回收;報告自承「人員對帳的跨公司比對、三支資料表的公司欄位」未及查證 |
| B1-item 範本子項 | 4 支裡 3 支只有這棒讀過/415 行 | 面板 3/6 票;報告自承「這四支檔不能視為掃過了」 |
建議:這 21 支不另開棒——O9b 那 12 支裡 reconciliation/ 五支+party_reconciliation_service.py 是「把 Word 裡的人名對到系統使用者」,是 FR-113 O9b 報告點名沒查完的「跨公司比對」;若決策者要補,可以併進 U12(零散殘段,709 行)帶入,約 +400 行、合計約 1,110 行,不破上限(併進 U9 會超過 2,000 行)。
判準照 FR-118 盤點:函式裡有 if/for/while/try/推導式,或有資料庫查詢組裝,才算「判斷邏輯」(用 Python AST 逐檔算,不是看檔名)。
| 堆 | 檔數 | 行數 | 處置 |
|---|---|---|---|
| 判斷邏輯 | 119 | 17,511 | 切 12 棒(第 2 節) |
DI 組裝(di_containers/、core/plugins/、config/di_modules.py) |
38(其中 21 支是 0 行 __init__.py) |
2,840 | 另列一表、另一種掃法(第 5 節) |
純宣告(__init__、序列化器、entity、model、mapper、dto、repo 介面、錯誤碼、常數、設定值) |
258 | 4,792 | 不掃,附錄 A 列清單與理由 |
離線小工具(content/detection-profiles/tools/ 7 支、examples/ 3 支) |
10 | 2,813 | 不掃:命令列轉換工具與範例,產品執行時不 import、不接網址(grep 全 repo 零引用) |
job_import_service.py、job_batch_complete_service.py、job_route.py。FR-095 H2(CM-1783)從來沒派。本盤點把它們排進 U7,是否要掃要決策者確認(見第 7 節)。每棒 ≤2,000 行、≤30 檔。沒有任何一支檔超過 1,000 行(最大 core/scheduler.py 550 行),所以沒有「單檔一棒」。中文註解密度最高的是 U3(每字元約 18% 是中文),但也只有 930 行,不用再壓。
| 棒 | 範圍 | 檔/行 | 守門字眼 vs 函式 | 零守門檔 | 為什麼排這個順位 |
|---|---|---|---|---|---|
| U1 | 權限檢查共用層+共用小工具 | 15/1,132 | 66/41 | 7 | 全產品守門的地基,前面每棒都假設它沒問題 |
| U2 | 啟動與中介層 | 6/1,233 | 2/16 | 4 | 每個請求都經過;第 154 項同目錄 |
| U3 | 首次安裝精靈+版本資訊 | 9/930 | 8/16 | 7 | 登入前就打得到(安裝精靈用一次性碼、版本與前端設定完全免認證) |
| U4 | 雲端硬碟:設定、授權、金鑰 | 13/1,786 | 26/55 | 7 | 管客戶 Google 授權與加密金鑰;總表 CM-1631 金鑰外洩同一條線 |
| U5 | 雲端硬碟:Google 回呼+同步排程主幹 | 9/1,838 | 0/46 | 9 | 🔴 回呼端點不登入(靠 header 帶的 token);排程主幹零守門 |
| U6 | 雲端硬碟:八支檔案搬移處理器 | 10/1,758 | 0/38 | 10 | 🔴 會寫 job_evidences(沒 RLS 的表);零守門 |
| U7 | 任務入口與批次 | 7/1,908 | 14/25 | 4 | FR-095 H2 沒派的那張;總表第 59 項「批次完成預設當管理員」未核對點 |
| U8 | 流程背景作業 | 8/1,716 | 19/27 | 5 | 用原生 SQL 寫五張沒 RLS 的表 |
| U9 | 專案摘要報告+關聯表+使用者/角色殘段 | 20/1,658 | 21/67 | 15 | 摘要報告兩支 route 零守門字眼 |
| U10 | 系統診斷包:入口與組裝 | 8/1,295 | 7/18 | 5 | 平台管理員限定,會把日誌與資料庫摘要打包下載 |
| U11 | 系統診斷包:資料收集器 | 7/1,548 | 0/25 | 7 | 讀主機檔案、容器、日誌——路徑與遮罩 |
| U12 | 零散殘段 | 7/709 | 0/32 | 7 | 防竄改接線、解析工作單、即時通知 |
| 合計 | 119/17,511 |
(「守門字眼」=grep -c 'require_\|assert_\|_check_',「函式」=grep -c 'def [a-z]',照卡片口徑。0 不等於沒守門——有些守門在上一層或用 @jwt_required,但 0 的棒要特別看「這些方法被誰呼叫、呼叫前有沒有人檢查」。)
common/authz/,只有 U1 報它本身的問題。tenant_drive_integration(授權紀錄),U4 報「存與取」,U5/U6 讀它只為了知道背景工作用哪把授權。drive_project_verify_service.py(FR-095 H1 已掃)三棒都可讀不報。task_existence_query.py 放 U8;U7 會讀。job_service.py(FR-115 W2 已掃)U7 可讀不報。core/app_factory.py 放 U2;U3 要追「安裝精靈的路由是怎麼繞過中介層的」會讀它。diag_bundle_app_service.py 放 U10,是 U11 七支收集器的唯一呼叫者。行數旁邊的「守門字眼」是該檔 require_|assert_|_check_|jwt_required|ForbiddenError|_require 的出現次數,0 的要特別看。
common/authz/__init__.py 180 守門字眼 45
common/authz/admin.py 12 守門字眼 3
common/authz/capability.py 22 守門字眼 3
common/authz/decorators.py 11 守門字眼 6
common/authz/license.py 367 守門字眼 17
common/authz/menu_license_filter.py 76 守門字眼 0
common/authz/platform.py 11 守門字眼 3
common/authz/sharing.py 35 守門字眼 4
common/authz/signed_token.py 22 守門字眼 3
common/iam_ports.py 100 守門字眼 0
common/util/round_guard.py 46 守門字眼 3
common/util/ssp_resource_name_dup.py 56 守門字眼 0
common/util/common_util.py 65 守門字眼 0
common/util/redis_client_util.py 79 守門字眼 0
common/util/resource_path.py 50 守門字眼 0
驗證(預期 15 檔/1,132 行):
git ls-files -- common/authz/__init__.py \
common/authz/admin.py \
common/authz/capability.py \
common/authz/decorators.py \
common/authz/license.py \
common/authz/menu_license_filter.py \
common/authz/platform.py \
common/authz/sharing.py \
common/authz/signed_token.py \
common/iam_ports.py \
common/util/round_guard.py \
common/util/ssp_resource_name_dup.py \
common/util/common_util.py \
common/util/redis_client_util.py \
common/util/resource_path.py | xargs wc -l | tail -1common/middleware/jwt_mw.py 46 守門字眼 0
common/middleware/license_readonly_mw.py 217 守門字眼 10
core/app_factory.py 469 守門字眼 0
core/host_capabilities.py 76 守門字眼 1
main.py 302 守門字眼 3
config/config_loader.py 123 守門字眼 4
驗證(預期 6 檔/1,233 行):
git ls-files -- common/middleware/jwt_mw.py \
common/middleware/license_readonly_mw.py \
core/app_factory.py \
core/host_capabilities.py \
main.py \
config/config_loader.py | xargs wc -l | tail -1api/setup/__init__.py 22 守門字眼 0
api/setup/routes/setup_route.py 128 守門字眼 8
app/setup/service/setup_wizard_service.py 395 守門字眼 6
common/setup/setup_token.py 113 守門字眼 0
infra/setup/setup_state_reader.py 89 守門字眼 0
api/version/__init__.py 19 守門字眼 0
api/version/routes/client_config_route.py 47 守門字眼 0
api/version/routes/version_route.py 29 守門字眼 0
common/util/app_version.py 88 守門字眼 0
驗證(預期 9 檔/930 行):
git ls-files -- api/setup/__init__.py \
api/setup/routes/setup_route.py \
app/setup/service/setup_wizard_service.py \
common/setup/setup_token.py \
infra/setup/setup_state_reader.py \
api/version/__init__.py \
api/version/routes/client_config_route.py \
api/version/routes/version_route.py \
common/util/app_version.py | xargs wc -l | tail -1api/cloud_integration/__init__.py 84 守門字眼 0
api/cloud_integration/routes/drive_app_credential_verify_route.py 44 守門字眼 3
api/cloud_integration/routes/google_drive_integration_route.py 140 守門字眼 11
api/cloud_integration/routes/google_drive_sync_route.py 260 守門字眼 23
app/cloud_integration/service/drive_app_credential_verify_service.py 94 守門字眼 2
app/cloud_integration/service/drive_sync_admin_service.py 164 守門字眼 2
app/cloud_integration/service/google_drive_integration_service.py 288 守門字眼 2
app/system_config/service/google_drive_app_config_resolver.py 224 守門字眼 0
domain/cloud_integration/service/google_drive_token_manager.py 131 守門字眼 3
domain/cloud_integration/service/tenant_drive_integration_domain_service.py 65 守門字眼 1
infra/cloud_integration/crypto/fernet_crypto.py 18 守門字眼 0
infra/cloud_integration/google_drive/google_oauth_client.py 180 守門字眼 0
infra/cloud_integration/repository/tenant_drive_integration_repo_impl.py 94 守門字眼 0
驗證(預期 13 檔/1,786 行):
git ls-files -- api/cloud_integration/__init__.py \
api/cloud_integration/routes/drive_app_credential_verify_route.py \
api/cloud_integration/routes/google_drive_integration_route.py \
api/cloud_integration/routes/google_drive_sync_route.py \
app/cloud_integration/service/drive_app_credential_verify_service.py \
app/cloud_integration/service/drive_sync_admin_service.py \
app/cloud_integration/service/google_drive_integration_service.py \
app/system_config/service/google_drive_app_config_resolver.py \
domain/cloud_integration/service/google_drive_token_manager.py \
domain/cloud_integration/service/tenant_drive_integration_domain_service.py \
infra/cloud_integration/crypto/fernet_crypto.py \
infra/cloud_integration/google_drive/google_oauth_client.py \
infra/cloud_integration/repository/tenant_drive_integration_repo_impl.py | xargs wc -l | tail -1api/cloud_integration/routes/google_drive_webhook_route.py 64 守門字眼 0
app/cloud_integration/service/google_drive_webhook_service.py 127 守門字眼 0
app/cloud_integration/service/webhook_channel_manager.py 202 守門字眼 1
app/cloud_integration/service/drive_sync_orchestration_service.py 529 守門字眼 0
app/cloud_integration/service/drive_sync_worker.py 149 守門字眼 0
app/cloud_integration/service/project_tree_loader.py 171 守門字眼 0
domain/cloud_integration/service/drive_sync_job_domain_service.py 104 守門字眼 0
infra/cloud_integration/repository/drive_sync_job_repo_impl.py 191 守門字眼 0
infra/cloud_integration/google_drive/google_drive_api_client.py 301 守門字眼 0
驗證(預期 9 檔/1,838 行):
git ls-files -- api/cloud_integration/routes/google_drive_webhook_route.py \
app/cloud_integration/service/google_drive_webhook_service.py \
app/cloud_integration/service/webhook_channel_manager.py \
app/cloud_integration/service/drive_sync_orchestration_service.py \
app/cloud_integration/service/drive_sync_worker.py \
app/cloud_integration/service/project_tree_loader.py \
domain/cloud_integration/service/drive_sync_job_domain_service.py \
infra/cloud_integration/repository/drive_sync_job_repo_impl.py \
infra/cloud_integration/google_drive/google_drive_api_client.py | xargs wc -l | tail -1app/cloud_integration/service/handlers/archive_drive_file_handler.py 165 守門字眼 0
app/cloud_integration/service/handlers/create_folder_handler.py 71 守門字眼 0
app/cloud_integration/service/handlers/import_drive_file_handler.py 264 守門字眼 0
app/cloud_integration/service/handlers/init_project_folders_handler.py 449 守門字眼 3
app/cloud_integration/service/handlers/process_drive_changes_handler.py 275 守門字眼 2
app/cloud_integration/service/handlers/reconcile_task_folder_handler.py 129 守門字眼 0
app/cloud_integration/service/handlers/rename_folder_handler.py 59 守門字眼 0
app/cloud_integration/service/handlers/soft_delete_evidence_handler.py 42 守門字眼 0
domain/cloud_integration/service/drive_folder_mapping_domain_service.py 133 守門字眼 0
infra/cloud_integration/repository/drive_folder_mapping_repo_impl.py 171 守門字眼 0
驗證(預期 10 檔/1,758 行):
git ls-files -- app/cloud_integration/service/handlers/archive_drive_file_handler.py \
app/cloud_integration/service/handlers/create_folder_handler.py \
app/cloud_integration/service/handlers/import_drive_file_handler.py \
app/cloud_integration/service/handlers/init_project_folders_handler.py \
app/cloud_integration/service/handlers/process_drive_changes_handler.py \
app/cloud_integration/service/handlers/reconcile_task_folder_handler.py \
app/cloud_integration/service/handlers/rename_folder_handler.py \
app/cloud_integration/service/handlers/soft_delete_evidence_handler.py \
domain/cloud_integration/service/drive_folder_mapping_domain_service.py \
infra/cloud_integration/repository/drive_folder_mapping_repo_impl.py | xargs wc -l | tail -1api/flow_control/routes/job_route.py 259 守門字眼 14
api/flow_control/serializers/job.py 417 守門字眼 6
app/flow_control/service/job_import_service.py 470 守門字眼 6
app/flow_control/service/job_batch_complete_service.py 193 守門字眼 2
app/readmodel/service/my_jobs_app_service.py 117 守門字眼 0
infra/readmodel/tasks/my_grc_jobs_query.py 198 守門字眼 0
infra/readmodel/audit/flow_control_dashboard_repo_impl.py 254 守門字眼 0
驗證(預期 7 檔/1,908 行):
git ls-files -- api/flow_control/routes/job_route.py \
api/flow_control/serializers/job.py \
app/flow_control/service/job_import_service.py \
app/flow_control/service/job_batch_complete_service.py \
app/readmodel/service/my_jobs_app_service.py \
infra/readmodel/tasks/my_grc_jobs_query.py \
infra/readmodel/audit/flow_control_dashboard_repo_impl.py | xargs wc -l | tail -1core/scheduler.py 550 守門字眼 4
app/flow_control/service/workflow_xml_sync_service.py 246 守門字眼 10
app/flow_control/service/job_binding_orphan_cleanup_service.py 174 守門字眼 0
infra/flow_control/repository/job_binding_orphan_query.py 129 守門字眼 5
app/flow_control/service/reverify_inheritance_service.py 73 守門字眼 0
infra/flow_control/repository/reverify_clone_query.py 176 守門字眼 3
infra/flow_control/repository/task_execution_query.py 292 守門字眼 0
infra/flow_control/task_existence_query.py 76 守門字眼 0
驗證(預期 8 檔/1,716 行):
git ls-files -- core/scheduler.py \
app/flow_control/service/workflow_xml_sync_service.py \
app/flow_control/service/job_binding_orphan_cleanup_service.py \
infra/flow_control/repository/job_binding_orphan_query.py \
app/flow_control/service/reverify_inheritance_service.py \
infra/flow_control/repository/reverify_clone_query.py \
infra/flow_control/repository/task_execution_query.py \
infra/flow_control/task_existence_query.py | xargs wc -l | tail -1api/project_summary_report/__init__.py 43 守門字眼 0
api/project_summary_report/routes/project_summary_report_route.py 170 守門字眼 7
api/project_summary_report/routes/project_summary_report_history_route.py 71 守門字眼 4
app/project_summary_report/service/project_summary_report_service.py 178 守門字眼 9
app/project_summary_report/service/project_summary_report_history_service.py 77 守門字眼 2
infra/project_summary_report/repository/project_summary_report_hitrosy_repo_impl.py 36 守門字眼 0
api/project/__init__.py 88 守門字眼 0
api/project/routes/project_route.py 69 守門字眼 6
api/project/serializers/assessment_plan.py 148 守門字眼 0
app/associations/service/project_assessment_plan_mapping_service.py 67 守門字眼 0
app/associations/service/project_org_unit_mapping_service.py 44 守門字眼 0
domain/associations/service/project_system_characteristic_mapping_domain_service.py 50 守門字眼 0
infra/associations/repository/project_assessment_plan_mapping_repo_impl.py 71 守門字眼 0
infra/associations/repository/project_org_unit_mapping_repo_impl.py 38 守門字眼 0
infra/associations/repository/project_system_characteristic_mapping_repo_impl.py 59 守門字眼 0
app/auth/service/role_app_service.py 94 守門字眼 6
app/auth/service/user_app_service.py 122 守門字眼 9
app/auth/service/user_import_template_app_service.py 106 守門字眼 0
infra/auth/root_admin_reader.py 40 守門字眼 0
common/util/audit_nickname.py 87 守門字眼 0
驗證(預期 20 檔/1,658 行):
git ls-files -- api/project_summary_report/__init__.py \
api/project_summary_report/routes/project_summary_report_route.py \
api/project_summary_report/routes/project_summary_report_history_route.py \
app/project_summary_report/service/project_summary_report_service.py \
app/project_summary_report/service/project_summary_report_history_service.py \
infra/project_summary_report/repository/project_summary_report_hitrosy_repo_impl.py \
api/project/__init__.py \
api/project/routes/project_route.py \
api/project/serializers/assessment_plan.py \
app/associations/service/project_assessment_plan_mapping_service.py \
app/associations/service/project_org_unit_mapping_service.py \
domain/associations/service/project_system_characteristic_mapping_domain_service.py \
infra/associations/repository/project_assessment_plan_mapping_repo_impl.py \
infra/associations/repository/project_org_unit_mapping_repo_impl.py \
infra/associations/repository/project_system_characteristic_mapping_repo_impl.py \
app/auth/service/role_app_service.py \
app/auth/service/user_app_service.py \
app/auth/service/user_import_template_app_service.py \
infra/auth/root_admin_reader.py \
common/util/audit_nickname.py | xargs wc -l | tail -1api/support/__init__.py 30 守門字眼 0
api/support/routes/diagnostic_bundle_route.py 67 守門字眼 2
api/support/routes/recent_error_route.py 43 守門字眼 3
app/support/diag_cli.py 366 守門字眼 0
app/support/service/diag_bundle_app_service.py 334 守門字眼 0
app/support/service/diag_bundle_export_service.py 133 守門字眼 3
app/support/service/recent_error_app_service.py 52 守門字眼 4
domain/support/service/diag_slice_domain_service.py 270 守門字眼 0
驗證(預期 8 檔/1,295 行):
git ls-files -- api/support/__init__.py \
api/support/routes/diagnostic_bundle_route.py \
api/support/routes/recent_error_route.py \
app/support/diag_cli.py \
app/support/service/diag_bundle_app_service.py \
app/support/service/diag_bundle_export_service.py \
app/support/service/recent_error_app_service.py \
domain/support/service/diag_slice_domain_service.py | xargs wc -l | tail -1infra/support/collector/container_collector.py 105 守門字眼 0
infra/support/collector/host_collector.py 201 守門字眼 0
infra/support/collector/staged_collector.py 178 守門字眼 0
infra/support/diag_db_reader.py 242 守門字眼 0
infra/support/diag_event_fetcher.py 303 守門字眼 0
infra/support/diag_log_reader.py 176 守門字眼 0
infra/support/diag_packer.py 343 守門字眼 0
驗證(預期 7 檔/1,548 行):
git ls-files -- infra/support/collector/container_collector.py \
infra/support/collector/host_collector.py \
infra/support/collector/staged_collector.py \
infra/support/diag_db_reader.py \
infra/support/diag_event_fetcher.py \
infra/support/diag_log_reader.py \
infra/support/diag_packer.py | xargs wc -l | tail -1common/integrity/adapters.py 357 守門字眼 0
domain/oscal/service/ssp_docx_parse_job_domain_service.py 71 守門字眼 0
domain/oscal/service/ssp_excel_parse_job_domain_service.py 71 守門字眼 0
infra/oscal/repository/ssp_docx_parse_job_repo_impl.py 54 守門字眼 0
infra/oscal/repository/ssp_excel_parse_job_repo_impl.py 56 守門字眼 0
api/oscal/serializers/ssp/ssp_party.py 47 守門字眼 0
app/notification/handler/notification_socketio_handler.py 53 守門字眼 0
驗證(預期 7 檔/709 行):
git ls-files -- common/integrity/adapters.py \
domain/oscal/service/ssp_docx_parse_job_domain_service.py \
domain/oscal/service/ssp_excel_parse_job_domain_service.py \
infra/oscal/repository/ssp_docx_parse_job_repo_impl.py \
infra/oscal/repository/ssp_excel_parse_job_repo_impl.py \
api/oscal/serializers/ssp/ssp_party.py \
app/notification/handler/notification_socketio_handler.py | xargs wc -l | tail -1# 守門字眼 vs 函式數,0 命中的檔標紅
git ls-files -- <本棒檔案> | xargs grep -c 'require_\|assert_\|_check_'
git ls-files -- <本棒檔案> | xargs grep -c 'def [a-z]'common/authz/license.py(367 行):授權檔決定「這家客戶買了哪些模組」,掛在每支 route 的 @require_license 就是它。問:授權檔讀不到、過期、被竄改時是擋下還是放行(fail-open)?快取多久、換客戶會不會拿到上一家的結果?common/authz/__init__.py(180 行)是決策表:它 re-export 哪一軸給誰用。問:五支 shim(admin/capability/decorators/platform/signed_token)轉到 jedi_iam.authz 時,有沒有哪一支名字對了、實作指到舊路徑。sharing.py:母租戶分享資源給子樹的判斷(FR-094.4b 新增)。問:「分享給子樹」會不會被反過來用——子租戶改到母租戶的資源。round_guard.py:稽核輪次的狀態守門。問:只看狀態、還是也看「這一輪屬於你的專案」。redis_client_util.py:FR-085 C1 報告提到這支(Redis 金鑰前綴),當時是越界讀、沒正式掃。問:鍵名有沒有帶租戶,跨客戶會不會讀到彼此的快取。license_readonly_mw.py(217 行):授權到期後全站唯讀的閘門。問:它用什麼判斷「這是寫入請求」(HTTP 方法?網址白名單?)——有沒有 POST 其實是讀、或 GET 其實是寫的漏網;白名單網址是前綴比對還是完整比對。jwt_mw.py:登入權杖的解析。問:權杖過期、簽章錯誤、缺欄位時的處理;有沒有哪條路會把「解不開」當成「匿名但放行」。core/app_factory.py(469 行):中介層的掛載順序+哪些路由被豁免。問:豁免清單(免登入、免授權)列了誰,是不是每一個都有理由。main.py 的 diag 子命令分支:命令列入口,確認只在本機命令列觸發、網址打不到。setup_route.py+setup_token.py:精靈用 install.sh 印出的一次性設定碼代替登入。問:設定碼怎麼比對(常數時間比對?)、用過一次後真的失效嗎、「已開通」之後再打 POST /setup/provision 會不會再建一個管理員。setup_state_reader.py:判斷「是否已開通」的唯一依據是「root 以外的租戶底下有沒有使用者」。問:這個判據能不能被繞——例如把那個使用者刪掉,精靈是不是就重新打開了。version_route.py、client_config_route.py(完全免認證):確認只回版本號與錯誤收集站連線字串,不夾帶環境變數、主機路徑、內部 IP。google_drive_token_manager.py+fernet_crypto.py:客戶的 Google 授權權杖怎麼加密存、用哪把金鑰。總表 CM-1631 已知「加密金鑰寫在版控裡」,這棒問的是程式邏輯:解密失敗時怎麼處理、權杖過期換新時會不會寫錯租戶。google_drive_integration_route.py/google_drive_sync_route.py(22 次守門字眼、7 支方法):守門很多,照手冊問「守的問題對不對」——是檢查「你是這家公司的管理員」,還是只檢查「你有 drive 能力點」。google_drive_app_config_resolver.py(224 行、10 支公開方法、0 守門):Google 應用程式設定從哪讀(租戶→原廠→環境變數)。問:租戶層設定能不能被一般使用者寫入、進而把整家公司的同步導到攻擊者的 Google 應用程式。drive_sync_admin_service.py:手動觸發同步。問:能不能觸發別家公司的同步。google_drive_webhook_route.py(不登入):Google 送變更通知進來,靠 header 裡的 channel id+token 認身分。問:token 比對是不是常數時間;找不到 channel 時回的錯誤訊息會不會洩露「這個 channel 存在與否」;攻擊者能不能狂打這支讓系統無限排同步工作(總表 🅹 資源耗盡同型)。drive_sync_orchestration_service.py(529 行、0 守門):背景同步的總指揮。問:背景工作用「哪個租戶的機器身分」跑,身分是從工作紀錄讀的還是從呼叫者帶的;工作紀錄能不能被使用者塞一筆指定別家租戶。webhook_channel_manager.py:向 Google 註冊通知頻道。問:token 怎麼產生(夠不夠隨機)。compliance.job_evidences(沒 RLS、沒租戶欄位的表):五支處理器(import/archive/soft_delete/reconcile/process_drive_changes)直接新增或軟刪證據紀錄。問:寫入前有沒有確認「這個任務屬於這家公司」——資料庫不會幫忙擋。import_drive_file_handler.py:把雲端硬碟的檔案抓回系統存成證據。問:檔名、大小、類型有沒有限制(與總表 🅹 資源耗盡、檔案上傳那批比對)。process_drive_changes_handler.py:處理 Google 送來的變更清單。問:變更清單裡的檔案編號如果指到別家公司的資料夾,會不會被照單全收。job_batch_complete_service.py:50-56:總表第 59 項「預設把呼叫者當管理員」的未核對點,FR-095 盤點明寫「待 H2 核對」。job_import_service.py(470 行、控制流程 101 處):Excel 批次建任務。FR-095 盤點寫「匯入三步只有最後一步有守門」。問:前兩步(上傳、預覽)能不能讀到別的專案的資料。my_grc_jobs_query.py、flow_control_dashboard_repo_impl.py:「我的任務」與儀表板查詢,原生 SQL。問:WHERE 條件有沒有限定「是我的」/「是我能看的專案」,還是只靠 RLS。job_route.py:只掛登入+授權模組,權限在 job_service._require_manager(FR-115 W2 已掃)。問 route 這層有沒有哪支方法沒走到那道。reverify_clone_query.py 對 job_evidences、job_execution_devices、job_execution_org_units、task_assignees 做 INSERT … SELECT;workflow_xml_sync_service.py 更新 workflow_templates_trans(沒 RLS)。問:來源與目的的專案編號是不是從同一個已驗證的物件來,還是參數各自傳進來。core/scheduler.py(550 行、控制流程 91 處、46 處查詢):所有背景排程的總表。問:每個排程工作用誰的身分跑、有沒有「逐租戶切換身分」,還是一個系統身分掃全庫。job_binding_orphan_cleanup_service.py:孤兒清理會刪資料。問:「孤兒」的判定條件有沒有可能誤判活資料。EXISTS projects)。問:同一家公司內,非專案成員能不能讀/改別的專案的摘要報告——RLS 只擋跨公司、不擋公司內跨專案。user_import_template_app_service.py:產生使用者匯入範本 Excel。FR-113 B6 的公式注入(第 150 項)這支是外部消費者,當時沒掃。問:範本裡帶的現有資料有沒有中和 = + - @。role_app_service.py/user_app_service.py:主專案側對 jedi-iam 的包裝。問:有沒有繞過套件守門直接改角色。root_admin_reader.py:讀原廠管理員帳號。問:誰能呼叫、回傳什麼欄位。diag_bundle_export_service.py:74 require_platform_admin(),已開檔確認)。diag_bundle_app_service.py 收環境變數、授權檔、應用日誌、資料庫摘要、事件。問:環境變數與日誌有沒有遮罩密碼/金鑰(總表 🅳「敏感內容寫進日誌」同型);平台管理員是原廠人員,但包會被寄出去給支援,外流風險在包本身。since/until 參數:問時間範圍有沒有上限(一次打包半年日誌=資源耗盡)。recent_error_route.py:回最近的錯誤訊息。問:錯誤訊息會不會帶 stack trace 與內部路徑。host_collector.py/container_collector.py/diag_log_reader.py:讀主機檔案與容器。問:讀哪些路徑是寫死的還是可被參數影響(路徑穿越);有沒有呼叫外部指令、參數怎麼組(指令注入)。diag_db_reader.py(242 行、16 處查詢):讀 system_logs、schema_migrations。問:用哪個資料庫帳號、會不會把其他客戶的日誌一起打包。diag_packer.py:打 tar.gz。問:檔名與壓縮大小的上限。common/integrity/adapters.py(357 行、24 處查詢):主專案給 jedi-integrity(防竄改)套件的接線,FR-084 只掃了套件本體。問:雜湊鏈寫入 api_logs(沒 RLS)時的租戶歸屬。ssp_docx_parse_job_repo_impl.py/ssp_excel_parse_job_repo_impl.py):FR-116 C4a 驗收時登記「兩張解析工作單表 RLS 壞規則」,這兩支就是讀寫那兩張表的程式,當時沒在範圍內。notification_socketio_handler.py:即時通知的 WebSocket 連線。問:連線時怎麼認身分、能不能訂閱別人的通知頻道。做法:每支「已掃」檔,拿它最後一次被掃時的 commit(stamp 裡的 revision.commit)對 HEAD 做 git diff,數新增行與新增 def。41 支掃後有改動,其中 8 支新增了函式、0 支新增了網址入口。只改註解、import 路徑、欄位的列在後面。
| 檔 | 最後掃描 | 掃後新增行 | 新增函式 | 主要改動 | 建議 |
|---|---|---|---|---|---|
app/system_config/service/guarded_system_config_service.py(665 行) |
09-15 FR-096 H1 | 391 | 12 | 09-17~18 八個 commit:AI 金鑰遮罩/寫入合併、Google Drive 應用程式設定群組、平台管理員守門(_platform_admin_only、_assert_restricted_group_access) |
🔴 要補。掃後新增量比掃時還大,而且新增的就是守門本身。總表第 74 項(09-20 複查)已點「這道守門的涵蓋名單只有 AI 金鑰與雲端硬碟兩組」——那是人工看的,沒經工具。可併進 U4(U4 1,786+665=2,451 行會爆),建議單獨一棒或併進 U12(709+665=1,374 行) |
app/system_config/service/tenant_storage_config_seeder.py |
09-15 FR-096 H1 | 47 | 1 | 09-17 AI 分類設定金鑰寫入 | 跟上一支一起帶 |
app/cloud_integration/service/drive_project_verify_service.py |
09-14 FR-095 H1 | 36 | 2 | 09-18 「專案總覽一鍵開啟 Drive 資料夾」新方法 get_project_folders,由 google_drive_sync_route.py:187 呼叫 |
已排進 U4 的接縫(U4 會讀那支 route);在 U4 卡上點名看新方法即可,不另開 |
infra/flow_engine/repository/job_evidence_repo_impl.py |
09-12 FR-088 H2 | 29 | 2 | 09-17 證據 AI 分類新增 get_active_by_job_and_file、find_active_by_content_hash |
🟡 呼叫者是 core/plugins/evidence_classification.py(FR-115 W7 09-23 已掃)。新方法是 repo 查詢,job_evidences 沒 RLS——問「查詢有沒有限定任務範圍」。可在 U6 帶入(U6 本來就寫這張表) |
domain/flow_engine/repository/job_evidence.py |
09-12 | 16 | 2 | 同上(介面) | 同上 |
domain/flow_engine/service/job_evidence_domain_service.py |
09-12 | 10 | 2 | 同上(轉呼叫) | 同上 |
di_containers/dashboard_apis/__init__.py |
09-10 FR-083 D2 | 34 | 2 | 09-16 意見回饋上移 jedi-issue,新增 package_service() 取用口 |
🟢 DI 取用口,併入 U13 DI 專掃 |
di_containers/ai_dashboard/ai_dashboard_containers.py |
09-10 FR-083 D2 | 39 | 1 | 09-17 AI 金鑰統一來源 _ai_api_keys() |
🟢 併入 U13 |
大宗是三種:①09-12~16 的「wiring 併進 core/plugins/」「import 路徑改指套件」「施工日誌註解收斂」;②09-14 FR-094.4b 的 flow_template 系列加 scope/tenant_id 欄位(8 支,最多 15 行);③09-13 FR-092 刪死碼(只減不增)。唯一值得一提的是:
di_containers/bulletin/bulletin_containers.py(+70 行,09-12 wiring 搬家)、di_containers/flow_control/flow_control_containers.py(+31 行,09-20 FR-112「強制開始」端點的接線)——兩支都是 DI,併入 U13 專掃時一起看。FR-112 強制開始的 route/service 本身 FR-115 W8 已在 09-23 掃過。app/upload_file/service/managed_file_upload_service.py(+33 行,09-16 批次 API 儲存轉接頭)——沒新增函式,改的是既有方法的參數,影響小。完整 41 支清單的驗證方式:
# 對某支檔:<commit> 取該檔最後一次掃描 stamp 的 revision.commit
git diff -U0 <commit> HEAD -- <檔> | grep -E '^\+\s*(async\s+)?def '為什麼另列:FR-113 O9b 與 FR-116 C1/C5 證實「組裝時漏接一個零件,守門程式寫得再完整也不會執行,而且不會報錯」。這種問題不在任何一支業務程式裡,只看得出「宣告需要四個零件、組裝時只給了三個」。所以 DI 檔要用「對照表」的方式掃:每個需要守門零件的 service,它在容器裡的建構參數是不是全部接上。
主專案 DI 相關檔(di_containers/+core/plugins/+config/di_modules.py,排除 0 行 __init__)共 75 支、11,062 行:
| 狀態 | 檔數 | 行數 |
|---|---|---|
| 已被某棒掃過(多半是順帶,不是專門對照零件) | 58 | 8,222 |
| 從沒碰過 | 17 | 2,840 |
⚠️ 「掃過」不等於「對照過零件」:前面各棒把容器檔放進範圍,是為了讓研究員追得到 service 從哪來,不是專門核對「每個參數都接了」。真正專門做這件事的只有 FR-113 O9b(面板沒跑完)與 FR-116 C1/C5。
| 檔 | 行數 | 接的是什麼 |
|---|---|---|
core/plugins/identity.py |
679 | 🔴 身分與權限套件(jedi-iam)的主專案接線——守門零件從這裡交出去 |
di_containers/containers.py |
397 | 總組裝表,每個容器登記一行 |
di_containers/cloud_integration/cloud_integration_containers.py |
310 | 雲端硬碟整合(U4~U6 的零件全在這) |
config/di_modules.py |
225 | 自動掃描要 wire 哪些模組(漏列=該模組的 @inject 全部拿不到東西) |
core/plugins/bulletin.py |
220 | 公告套件接線(FR-079 B2 掃的是 09-12 搬家前的舊位置) |
core/plugins/file_upload.py |
145 | 檔案上傳套件接線(同上,FR-086 B2 掃舊位置) |
core/plugins/ai_bot.py |
135 | AI 聊天機器人接線 |
core/plugins/ai_dashboard.py |
98 | AI 儀表板接線 |
core/plugins/integrity.py |
93 | 防竄改接線 |
di_containers/license/license_containers.py |
84 | 🔴 授權檢查的零件(U1 license.py 從這拿) |
core/plugins/__init__.py |
83 | 插件清單 |
core/plugins/flow_engine.py |
83 | 流程引擎接線 |
core/plugins/notification.py |
83 | 通知接線 |
di_containers/support/support_containers.py |
82 | 診斷包(U10/U11) |
di_containers/project/project_summary_report_containers.py |
48 | 摘要報告(U9) |
di_containers/setup/setup_containers.py |
41 | 安裝精靈(U3) |
di_containers/identity/identity_containers.py |
34 | 身分 |
core/plugins/ 九支+config/di_modules.py(1,666 行);U13b:di_containers/ 七支(996 行)。查 scripts/init/02-schema.sql(出貨基線)。「有客戶欄位」=表上有 tenant_id;「RLS」=有 ENABLE ROW LEVEL SECURITY。全檔只有 1 張表開了 FORCE,下表全部沒開 FORCE(表的擁有者帳號會繞過 RLS)。
| 表 | 客戶欄位 | RLS | 寫它的沒碰程式(棒) | 白話 |
|---|---|---|---|---|
public.tenant_drive_integrations |
有 | 開 | U4 repo | ✅ 有隔離 |
public.drive_sync_jobs |
有 | 開 | U5 repo | ✅ 有隔離;但背景工作用機器身分跑,要看身分怎麼切 |
public.drive_folder_mappings |
有 | 開 | U6 repo | ✅ 有隔離(同上) |
compliance.job_evidences |
無 | 無 | U6 五支處理器、U8 reverify_clone_query |
🔴 沒有任何隔離,全靠程式自己檢查(總表第 49 項同一張表) |
compliance.task_assignees |
無 | 無 | U8 reverify_clone_query |
🔴 同上(總表第 22 項:觸發器函式讀不存在的欄位) |
compliance.job_execution_devices |
無 | 無 | U8 | 🔴 同上 |
compliance.job_execution_org_units |
無 | 無 | U8 | 🔴 同上 |
compliance.workflow_templates_trans |
無 | 無 | U8 workflow_xml_sync_service |
🟡 翻譯表,本體 workflow_templates 有 RLS;子表沒有 |
survey.task_surveys/survey.question_answers |
無 | 開 | U8 reverify_clone_query |
🟡 RLS 是靠關聯推的 |
compliance.project_summary_reports/…_histories |
無 | 開(EXISTS projects) |
U9 | 🟡 擋得住跨公司,擋不住同公司跨專案 |
compliance.project_assessment_plan_mapping/project_org_unit_mapping/project_system_characteristic_mapping |
無 | 開(EXISTS projects) |
U9 | 🟡 同上 |
oscal.ssp_docx_parse_jobs/ssp_excel_parse_jobs |
有 | 開 | U12 | 🟡 FR-116 C4a 驗收時登記「RLS 規則寫壞」 |
public.api_logs |
無 | 無 | U12 integrity/adapters.py(讀寫雜湊鏈) |
🟡 日誌表,設計上跨租戶;看的是「誰讀得到」 |
public.system_logs/schema_migrations |
無 | 無 | U11 diag_db_reader(只讀) |
🟢 平台管理員限定,唯讀 |
public.users |
有 | 開 | U3 setup_state_reader(只讀、繞 RLS 數使用者) |
🟢 只讀一個數字 |
common/authz/ 全專案共用守門本體,FR-085 C1 已掃」不成立(見開頭第 3 點)。建議首腦在總表 §0.5 補一句。guarded_system_config_service.py 要不要補掃(第 4.1 節):掃後新增 391 行、12 支函式,新增的就是守門。建議補,放 U12 一起(合計 1,374 行)。config/config.py、兩支只有轉呼叫的 domain service),已逐支看過列在附錄 A;③ 守門字眼只是 grep,0 次不等於沒守(例如診斷包守門在 export service,路由檔是 0)。| 優先 | 棒 | 理由 |
|---|---|---|
| 1 | U1 權限共用層 | 地基;後面每棒都會追進來 |
| 2 | U2 中介層 | 每個請求都經過 |
| 3 | U3 安裝精靈 | 登入前打得到 |
| 4 | U5 雲端硬碟回呼+排程 | 不登入的外部入口+零守門 |
| 5 | U6 雲端硬碟處理器 | 寫沒隔離的表 |
| 6 | U7 任務入口 | 第 59 項核對點 |
| 7 | U4 雲端硬碟設定 | 守門多,看「問得對不對」 |
| 8 | U8 流程背景作業 | 寫四張沒隔離的表 |
| 9 | U9 摘要報告+關聯表 | 同公司跨專案 |
| 10 | U12(+guarded_system_config+O9b 殘段) |
零散 |
| 11 | U10/U11 診斷包 | 平台管理員限定,門檻高 |
| 12 | U13a/U13b DI 專掃 | 另一種掃法,看首腦裁 |
總量:判斷邏輯 12 棒 17,511 行;加上補掃與 DI 最多 14 棒約 21,300 行。時間參考(報告實記,不是估算):FR-113 O9a 916 行 1 小時 37 分、B1c 925 行 1 小時 27 分、O9b 1,903 行研究階段 1 小時 52 分(面板另計)。本批每棒 700~1,900 行,照這個量級每棒約 1.5~3 小時;幾線並行由首腦依額度定。
理由:沒有 if/for/try、沒有查詢組裝,只是資料形狀、名稱、常數的宣告。其中 160 支是 __init__.py(共 372 行,多半 0 行)不逐列;其餘 98 支如下。
| 類別 | 檔數 | 行數 | 為什麼不掃 |
|---|---|---|---|
| 序列化器(serializers) | 27 | 797 | 欄位型別宣告,驗證規則由 marshmallow 套件執行 |
| 錯誤碼/常數/列舉 | 15 | 1,279 | 純字串與數字 |
| entity | 13 | 457 | 資料類別,0 個方法 |
| repo 介面(domain) | 12 | 349 | 抽象方法宣告,沒實作 |
| mapper | 8 | 294 | 欄位對拷 |
| dto | 5 | 159 | 資料類別 |
| model | 4 | 184 | 資料表欄位宣告 |
| 其他 | 14 | 901 | 逐支看過:config/config.py(設定值宣告,憑證問題已由 CM-1631 等卡處理)、config/app_modules.py(模組名單)、core/extensions.py(空物件)、兩支關聯表 domain service 與兩支摘要報告 domain service(只轉呼叫 repo、0 分支)、兩支介面檔(drive_api_client_interface、collector/protocol)、base_job_handler、token_crypto_service、common_schema、config_util、vw_user_job_queue(唯讀檢視表宣告) |
清單(__init__.py 除外):
| 路徑 | 行數 |
|---|---|
api/cloud_integration/serializers/drive_sync_job.py |
22 |
api/cloud_integration/serializers/google_drive_integration.py |
55 |
api/oscal/serializers/oscal_common/base/oscal_document.py |
15 |
api/oscal/serializers/oscal_common/base/oscal_link.py |
15 |
api/oscal/serializers/oscal_common/base/oscal_location.py |
14 |
api/oscal/serializers/oscal_common/base/oscal_metadata.py |
34 |
api/oscal/serializers/oscal_common/base/oscal_party.py |
17 |
api/oscal/serializers/oscal_common/base/oscal_prop.py |
16 |
api/oscal/serializers/oscal_common/base/oscal_remarks.py |
12 |
api/oscal/serializers/oscal_common/base/oscal_responsible_party.py |
13 |
api/oscal/serializers/oscal_common/base/oscal_role.py |
14 |
api/oscal/serializers/oscal_common/catalog/catalog.py |
27 |
api/oscal/serializers/oscal_common/catalog/catalog_control.py |
38 |
api/oscal/serializers/oscal_common/catalog/catalog_control_assessment.py |
20 |
api/oscal/serializers/oscal_common/catalog/catalog_control_parameter.py |
16 |
api/oscal/serializers/oscal_common/catalog/catalog_control_part.py |
16 |
api/oscal/serializers/oscal_common/catalog/catalog_group.py |
23 |
api/oscal/serializers/oscal_common/profile/profile.py |
31 |
api/oscal/serializers/oscal_common/profile/profile_control.py |
16 |
api/oscal/serializers/ssp/ssp_system_characteristic_inproject.py |
32 |
api/project/serializers/ap_docx_import.py |
51 |
api/project/serializers/ar_import.py |
44 |
api/project/serializers/project.py |
143 |
api/project_summary_report/serializers/project_summary_report.py |
39 |
api/project_summary_report/serializers/project_summary_report_history.py |
21 |
api/support/serializers/diagnostic_bundle.py |
20 |
api/support/serializers/recent_error.py |
33 |
app/cloud_integration/dto/google_drive_integration_dto.py |
54 |
app/cloud_integration/service/handlers/base_job_handler.py |
36 |
app/cloud_integration/service/handlers/exceptions.py |
25 |
app/common/dto/base_dto.py |
5 |
app/common/schema/common_schema.py |
4 |
app/project_summary_report/dto/project_summary_report_dto.py |
44 |
app/project_summary_report/dto/project_summary_report_history_dto.py |
41 |
app/setup/code/setup_error_code.py |
27 |
common/code/detection_tools_error_code.py |
209 |
common/code/error_code.py |
185 |
common/code/file_storage_type.py |
9 |
common/code/flow_control_error_code.py |
513 |
common/constant/ai_service_config.py |
29 |
common/constant/drive_app_config.py |
45 |
common/constant/tenant.py |
11 |
common/dto/file_info_dto.py |
15 |
common/enum/event_code.py |
133 |
common/enum/participant_enum.py |
18 |
common/exception_error/common_exception.py |
24 |
config/app_modules.py |
146 |
config/config.py |
310 |
config/config_util.py |
16 |
core/extensions.py |
32 |
domain/associations/entity/project_assessment_plan_mapping_query_entity.py |
13 |
domain/associations/entity/project_org_unit_mapping_query_entity.py |
13 |
domain/associations/entity/project_system_characteristic_mapping_query_entity.py |
13 |
domain/associations/repository/project_assessment_plan_mapping.py |
22 |
domain/associations/repository/project_org_unit_mapping.py |
10 |
domain/associations/repository/project_system_characteristic_mapping.py |
13 |
domain/associations/service/project_assessment_plan_mapping_domain_service.py |
36 |
domain/associations/service/project_org_unit_mapping_domain_service.py |
23 |
domain/cloud_integration/entities/drive_folder_mapping_entity.py |
19 |
domain/cloud_integration/entities/drive_sync_job_entity.py |
22 |
domain/cloud_integration/entities/tenant_drive_integration_entity.py |
31 |
domain/cloud_integration/enums/scope_type.py |
13 |
domain/cloud_integration/enums/sync_job_type.py |
12 |
domain/cloud_integration/repository/drive_folder_mapping_repository.py |
66 |
domain/cloud_integration/repository/drive_sync_job_repository.py |
70 |
domain/cloud_integration/repository/tenant_drive_integration_repository.py |
29 |
domain/cloud_integration/service/drive_api_client_interface.py |
67 |
domain/cloud_integration/service/token_crypto_service.py |
9 |
domain/oscal/entity/ssp_docx_parse_job_entity.py |
70 |
domain/oscal/entity/ssp_excel_parse_job_entity.py |
70 |
domain/oscal/repository/i_framework_parse_job_repo.py |
39 |
domain/oscal/repository/i_ssp_catalog_title_query.py |
24 |
domain/oscal/repository/i_ssp_docx_parse_job_repo.py |
25 |
domain/oscal/repository/i_ssp_excel_parse_job_repo.py |
25 |
domain/project_summary_report/entity/project_summary_report_entity.py |
28 |
domain/project_summary_report/entity/project_summary_report_history_entity.py |
26 |
domain/project_summary_report/entity/project_summary_report_history_query_filter.py |
17 |
domain/project_summary_report/entity/project_summary_report_query_filter.py |
19 |
domain/project_summary_report/repository/project_summary_reoprt.py |
18 |
domain/project_summary_report/repository/project_summary_reoprt_history.py |
8 |
domain/project_summary_report/service/project_summary_report_domain_service.py |
52 |
domain/project_summary_report/service/project_summary_report_history_domain_service.py |
21 |
domain/support/entity/diag_bundle.py |
116 |
infra/cloud_integration/google_drive/exceptions.py |
26 |
infra/cloud_integration/mapper/drive_folder_mapping_mapper.py |
35 |
infra/cloud_integration/mapper/drive_sync_job_mapper.py |
39 |
infra/cloud_integration/mapper/tenant_drive_integration_mapper.py |
56 |
infra/cloud_integration/models/drive_folder_mapping.py |
34 |
infra/cloud_integration/models/drive_sync_job.py |
38 |
infra/cloud_integration/models/tenant_drive_integration.py |
45 |
infra/oscal/mapper/framework_parse_job_mapper.py |
39 |
infra/oscal/mapper/ssp_docx_parse_job_mapper.py |
35 |
infra/oscal/mapper/ssp_excel_parse_job_mapper.py |
35 |
infra/project_summary_report/mapper/project_summary_report_history_mapper.py |
27 |
infra/project_summary_report/mapper/project_summary_report_mapper.py |
28 |
infra/project_summary_report/models/project_summary_report_history.py |
67 |
infra/readmodel/tasks/vw_user_job_queue.py |
94 |
infra/support/collector/protocol.py |
55 |
「哪一棒」欄:掃過/部分掃過的列掃描目錄或棒名;沒碰的列所屬的堆,判斷邏輯堆標出排進哪一棒。
| 路徑 | 行數 | 狀態 | 哪一棒 |
|---|---|---|---|
api/__init__.py |
3 | ❌ 沒碰 | 純宣告 |
api/cloud_integration/__init__.py |
84 | ❌ 沒碰 | 判斷邏輯(→ U4) |
api/cloud_integration/routes/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/cloud_integration/routes/drive_app_credential_verify_route.py |
44 | ❌ 沒碰 | 判斷邏輯(→ U4) |
api/cloud_integration/routes/google_drive_integration_route.py |
140 | ❌ 沒碰 | 判斷邏輯(→ U4) |
api/cloud_integration/routes/google_drive_sync_route.py |
260 | ❌ 沒碰 | 判斷邏輯(→ U4) |
api/cloud_integration/routes/google_drive_webhook_route.py |
64 | ❌ 沒碰 | 判斷邏輯(→ U5) |
api/cloud_integration/serializers/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/cloud_integration/serializers/drive_sync_job.py |
22 | ❌ 沒碰 | 純宣告 |
api/cloud_integration/serializers/google_drive_integration.py |
55 | ❌ 沒碰 | 純宣告 |
api/flow_control/__init__.py |
135 | ✅ 掃過 | CLAUDE-SECURITY-20260924-072304 |
api/flow_control/routes/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/flow_control/routes/assessment_plan_route.py |
117 | ✅ 掃過 | CLAUDE-SECURITY-20260924-082233 |
api/flow_control/routes/job_force_start_route.py |
84 | ✅ 掃過 | CLAUDE-SECURITY-20260923-143410 |
api/flow_control/routes/job_route.py |
259 | ❌ 沒碰 | 判斷邏輯(→ U7) |
api/flow_control/routes/project_route.py |
273 | ✅ 掃過 | CLAUDE-SECURITY-20260924-082233 |
api/flow_control/serializers/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/flow_control/serializers/job.py |
417 | ❌ 沒碰 | 判斷邏輯(→ U7) |
api/flow_engine/__init__.py |
102 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
api/flow_engine/routes/flow_engine_route.py |
192 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
api/flow_engine/routes/flow_template_route.py |
144 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
api/flow_engine/routes/job_evidence_route.py |
148 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
api/flow_engine/routes/stage_advance_route.py |
71 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
api/flow_engine/routes/stage_object_route.py |
22 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
api/flow_engine/routes/stage_rollback_route.py |
67 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
api/flow_engine/serializers/flow_engine/element_variable.py |
14 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
api/flow_engine/serializers/flow_engine/job_evidence.py |
54 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
api/flow_engine/serializers/flow_engine/job_execution.py |
231 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
api/flow_engine/serializers/flow_engine/job_template.py |
10 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
api/flow_engine/serializers/flow_engine/ref_control_proof_doc.py |
11 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
api/flow_engine/serializers/flow_engine/workflow_execution.py |
59 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
api/flow_engine/serializers/flow_template.py |
68 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
api/flow_engine/serializers/stage_advance.py |
74 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
api/flow_engine/serializers/stage_object.py |
19 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
api/flow_engine/serializers/stage_rollback.py |
39 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
api/module_frame/__init__.py |
252 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
api/module_frame/routes/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/module_frame/routes/mf_ssp_export_route.py |
71 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
api/module_frame/routes/module_frame_components_route.py |
78 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
api/module_frame/routes/module_frame_control_default_route.py |
139 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
api/module_frame/routes/module_frame_control_objective_default_route.py |
147 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
api/module_frame/routes/module_frame_import_route.py |
95 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095422 |
api/module_frame/routes/module_frame_inventory_route.py |
78 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
api/module_frame/routes/module_frame_item_route.py |
128 | ⚠️ 部分 | FR-113 B1-item |
api/module_frame/routes/module_frame_leveraged_route.py |
91 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
api/module_frame/routes/module_frame_party_route.py |
95 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
api/module_frame/routes/module_frame_reference_document_route.py |
281 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
api/module_frame/routes/module_frame_route.py |
102 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
api/module_frame/routes/module_frame_ssp_resources_route.py |
99 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
api/module_frame/routes/module_frame_system_characteristic_route.py |
56 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
api/module_frame/routes/module_frame_template_import_route.py |
260 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090410 |
api/module_frame/routes/ssp_import_template_route.py |
169 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090440 |
api/module_frame/serializers/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/module_frame/serializers/module_frame.py |
153 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
api/module_frame/serializers/module_frame_control_default.py |
46 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
api/module_frame/serializers/module_frame_control_objective_default.py |
49 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
api/module_frame/serializers/module_frame_item.py |
38 | ⚠️ 部分 | FR-113 B1-item |
api/module_frame/serializers/module_frame_party.py |
43 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
api/module_frame/serializers/module_frame_reference_document.py |
61 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
api/module_frame/serializers/module_frame_template_import.py |
105 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090410 |
api/notify_config/__init__.py |
20 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
api/notify_config/routes/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
api/notify_config/routes/notify_config_route.py |
36 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
api/notify_config/serializers/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
api/notify_config/serializers/notify_config.py |
11 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
api/oscal/__init__.py |
201 | ⚠️ 部分 | FR-113 O9b |
api/oscal/routes/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/oscal/routes/framework/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/oscal/routes/framework/framework_parse_job_route.py |
178 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154612 |
api/oscal/routes/framework/framework_version_edit_route.py |
132 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154528 |
api/oscal/routes/framework/oscal_framework_route.py |
104 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154528 |
api/oscal/routes/framework/oscal_framework_version_route.py |
157 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154528 |
api/oscal/routes/module_frame_template_ssp_route.py |
38 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255;CLAUDE-SECURITY-20260922-104527 |
api/oscal/routes/resource_library_route.py |
62 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
api/oscal/routes/ssp/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/oscal/routes/ssp/ssp_components_route.py |
85 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
api/oscal/routes/ssp/ssp_control_impl_import_route.py |
114 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113255 |
api/oscal/routes/ssp/ssp_control_implementation_route.py |
309 | ✅ 掃過 | CLAUDE-SECURITY-20260921-061133 |
api/oscal/routes/ssp/ssp_document_pool_route.py |
183 | ⚠️ 部分 | FR-113 O6 |
api/oscal/routes/ssp/ssp_docx_import_route.py |
105 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113255 |
api/oscal/routes/ssp/ssp_excel_import_route.py |
112 | ✅ 掃過 | CLAUDE-SECURITY-20260921-081023 |
api/oscal/routes/ssp/ssp_export_route.py |
72 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
api/oscal/routes/ssp/ssp_inventory_items_route.py |
84 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
api/oscal/routes/ssp/ssp_leveraged_route.py |
78 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
api/oscal/routes/ssp/ssp_party_route.py |
84 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
api/oscal/routes/ssp/ssp_resources_route.py |
88 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
api/oscal/routes/ssp/ssp_scoped_excel_import_route.py |
130 | ✅ 掃過 | CLAUDE-SECURITY-20260921-081023 |
api/oscal/routes/ssp/ssp_system_characteristic_route.py |
51 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
api/oscal/serializers/__init__.py |
17 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/framework/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/framework/oscal_framework.py |
165 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154528 |
api/oscal/serializers/framework/oscal_framework_version.py |
34 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154528 |
api/oscal/serializers/framework_parse_job/__init__.py |
19 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/framework_parse_job/framework_parse_job_schemas.py |
201 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154612 |
api/oscal/serializers/framework_version_edit/__init__.py |
13 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/framework_version_edit/schemas.py |
60 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154528 |
api/oscal/serializers/oscal_common/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/oscal_document.py |
15 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/oscal_link.py |
15 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/oscal_location.py |
14 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/oscal_metadata.py |
34 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/oscal_party.py |
17 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/oscal_prop.py |
16 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/oscal_remarks.py |
12 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/oscal_responsible_party.py |
13 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/base/oscal_role.py |
14 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/catalog/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/catalog/catalog.py |
27 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/catalog/catalog_control.py |
38 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/catalog/catalog_control_assessment.py |
20 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/catalog/catalog_control_parameter.py |
16 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/catalog/catalog_control_part.py |
16 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/catalog/catalog_group.py |
23 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/profile/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/profile/profile.py |
31 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/oscal_common/profile/profile_control.py |
16 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/ssp/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/oscal/serializers/ssp/ssp_control_impl_import.py |
59 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113255 |
api/oscal/serializers/ssp/ssp_control_impl_objective.py |
27 | ✅ 掃過 | CLAUDE-SECURITY-20260921-061133 |
api/oscal/serializers/ssp/ssp_control_implementation.py |
88 | ✅ 掃過 | CLAUDE-SECURITY-20260921-061133 |
api/oscal/serializers/ssp/ssp_document_pool.py |
37 | ⚠️ 部分 | FR-113 O6 |
api/oscal/serializers/ssp/ssp_docx_import.py |
185 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113255 |
api/oscal/serializers/ssp/ssp_excel_import.py |
137 | ✅ 掃過 | CLAUDE-SECURITY-20260921-081023 |
api/oscal/serializers/ssp/ssp_party.py |
47 | ❌ 沒碰 | 判斷邏輯(→ U12) |
api/oscal/serializers/ssp/ssp_system_characteristic_inproject.py |
32 | ❌ 沒碰 | 純宣告 |
api/project/__init__.py |
88 | ❌ 沒碰 | 判斷邏輯(→ U9) |
api/project/routes/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/project/routes/ap_docx_import_route.py |
116 | ✅ 掃過 | CLAUDE-SECURITY-20260924-090417 |
api/project/routes/ar_import_route.py |
116 | ✅ 掃過 | CLAUDE-SECURITY-20260924-102701 |
api/project/routes/audit_round_route.py |
508 | ✅ 掃過 | CLAUDE-SECURITY-20260924-050412;CLAUDE-SECURITY-20260924-050420 |
api/project/routes/project_route.py |
69 | ❌ 沒碰 | 判斷邏輯(→ U9) |
api/project/serializers/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/project/serializers/ap_docx_import.py |
51 | ❌ 沒碰 | 純宣告 |
api/project/serializers/ar_import.py |
44 | ❌ 沒碰 | 純宣告 |
api/project/serializers/assessment_plan.py |
148 | ❌ 沒碰 | 判斷邏輯(→ U9) |
api/project/serializers/audit_round.py |
239 | ✅ 掃過 | CLAUDE-SECURITY-20260924-050420 |
api/project/serializers/project.py |
143 | ❌ 沒碰 | 純宣告 |
api/project_summary_report/__init__.py |
43 | ❌ 沒碰 | 判斷邏輯(→ U9) |
api/project_summary_report/routes/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/project_summary_report/routes/project_summary_report_history_route.py |
71 | ❌ 沒碰 | 判斷邏輯(→ U9) |
api/project_summary_report/routes/project_summary_report_route.py |
170 | ❌ 沒碰 | 判斷邏輯(→ U9) |
api/project_summary_report/serializers/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/project_summary_report/serializers/project_summary_report.py |
39 | ❌ 沒碰 | 純宣告 |
api/project_summary_report/serializers/project_summary_report_history.py |
21 | ❌ 沒碰 | 純宣告 |
api/remote_agent/__init__.py |
2 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
api/remote_agent/routes/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
api/remote_agent/routes/agent_file_route.py |
61 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
api/setup/__init__.py |
22 | ❌ 沒碰 | 判斷邏輯(→ U3) |
api/setup/routes/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/setup/routes/setup_route.py |
128 | ❌ 沒碰 | 判斷邏輯(→ U3) |
api/support/__init__.py |
30 | ❌ 沒碰 | 判斷邏輯(→ U10) |
api/support/routes/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/support/routes/diagnostic_bundle_route.py |
67 | ❌ 沒碰 | 判斷邏輯(→ U10) |
api/support/routes/recent_error_route.py |
43 | ❌ 沒碰 | 判斷邏輯(→ U10) |
api/support/serializers/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/support/serializers/diagnostic_bundle.py |
20 | ❌ 沒碰 | 純宣告 |
api/support/serializers/recent_error.py |
33 | ❌ 沒碰 | 純宣告 |
api/system_config/__init__.py |
49 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
api/system_config/routes/security_policy_route.py |
71 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
api/system_config/routes/system_config_route.py |
160 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
api/system_config/serializers/security_policy.py |
48 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
api/system_config/serializers/system_config.py |
16 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
api/version/__init__.py |
19 | ❌ 沒碰 | 判斷邏輯(→ U3) |
api/version/routes/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
api/version/routes/client_config_route.py |
47 | ❌ 沒碰 | 判斷邏輯(→ U3) |
api/version/routes/version_route.py |
29 | ❌ 沒碰 | 判斷邏輯(→ U3) |
app/__init__.py |
4 | ❌ 沒碰 | 純宣告 |
app/associations/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/associations/dto/__init__.py |
7 | ❌ 沒碰 | 純宣告 |
app/associations/dto/project_assessment_plan_mapping_dto.py |
30 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
app/associations/dto/project_org_unit_mapping_dto.py |
37 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
app/associations/dto/project_system_characteristic_mapping_dto.py |
39 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
app/associations/service/__init__.py |
9 | ❌ 沒碰 | 純宣告 |
app/associations/service/project_assessment_plan_mapping_service.py |
67 | ❌ 沒碰 | 判斷邏輯(→ U9) |
app/associations/service/project_org_unit_mapping_service.py |
44 | ❌ 沒碰 | 判斷邏輯(→ U9) |
app/associations/service/project_system_characteristic_mapping_service.py |
60 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
app/auth/__init__.py |
10 | ❌ 沒碰 | 純宣告 |
app/auth/service/__init__.py |
1 | ❌ 沒碰 | 純宣告 |
app/auth/service/role_app_service.py |
94 | ❌ 沒碰 | 判斷邏輯(→ U9) |
app/auth/service/user_app_service.py |
122 | ❌ 沒碰 | 判斷邏輯(→ U9) |
app/auth/service/user_import_template_app_service.py |
106 | ❌ 沒碰 | 判斷邏輯(→ U9) |
app/cloud_integration/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/cloud_integration/dto/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/cloud_integration/dto/google_drive_integration_dto.py |
54 | ❌ 沒碰 | 純宣告 |
app/cloud_integration/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/cloud_integration/service/drive_app_credential_verify_service.py |
94 | ❌ 沒碰 | 判斷邏輯(→ U4) |
app/cloud_integration/service/drive_project_verify_service.py |
273 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
app/cloud_integration/service/drive_sync_admin_service.py |
164 | ❌ 沒碰 | 判斷邏輯(→ U4) |
app/cloud_integration/service/drive_sync_orchestration_service.py |
529 | ❌ 沒碰 | 判斷邏輯(→ U5) |
app/cloud_integration/service/drive_sync_worker.py |
149 | ❌ 沒碰 | 判斷邏輯(→ U5) |
app/cloud_integration/service/google_drive_integration_service.py |
288 | ❌ 沒碰 | 判斷邏輯(→ U4) |
app/cloud_integration/service/google_drive_webhook_service.py |
127 | ❌ 沒碰 | 判斷邏輯(→ U5) |
app/cloud_integration/service/handlers/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/cloud_integration/service/handlers/archive_drive_file_handler.py |
165 | ❌ 沒碰 | 判斷邏輯(→ U6) |
app/cloud_integration/service/handlers/base_job_handler.py |
36 | ❌ 沒碰 | 純宣告 |
app/cloud_integration/service/handlers/create_folder_handler.py |
71 | ❌ 沒碰 | 判斷邏輯(→ U6) |
app/cloud_integration/service/handlers/exceptions.py |
25 | ❌ 沒碰 | 純宣告 |
app/cloud_integration/service/handlers/import_drive_file_handler.py |
264 | ❌ 沒碰 | 判斷邏輯(→ U6) |
app/cloud_integration/service/handlers/init_project_folders_handler.py |
449 | ❌ 沒碰 | 判斷邏輯(→ U6) |
app/cloud_integration/service/handlers/process_drive_changes_handler.py |
275 | ❌ 沒碰 | 判斷邏輯(→ U6) |
app/cloud_integration/service/handlers/reconcile_task_folder_handler.py |
129 | ❌ 沒碰 | 判斷邏輯(→ U6) |
app/cloud_integration/service/handlers/rename_folder_handler.py |
59 | ❌ 沒碰 | 判斷邏輯(→ U6) |
app/cloud_integration/service/handlers/soft_delete_evidence_handler.py |
42 | ❌ 沒碰 | 判斷邏輯(→ U6) |
app/cloud_integration/service/project_tree_loader.py |
171 | ❌ 沒碰 | 判斷邏輯(→ U5) |
app/cloud_integration/service/webhook_channel_manager.py |
202 | ❌ 沒碰 | 判斷邏輯(→ U5) |
app/common/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/common/dto/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/common/dto/base_dto.py |
5 | ❌ 沒碰 | 純宣告 |
app/common/schema/common_schema.py |
4 | ❌ 沒碰 | 純宣告 |
app/detection_tools/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/detection_tools/dto/__init__.py |
26 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
app/detection_tools/service/__init__.py |
26 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
app/detection_tools/task_type_declaration.py |
109 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
app/evidence_classification/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/evidence_classification/resources/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/flow_control/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/flow_control/dto/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/flow_control/dto/job_dto.py |
360 | ✅ 掃過 | CLAUDE-SECURITY-20260923-142057 |
app/flow_control/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/flow_control/service/assessment_plan_app_service.py |
742 | ✅ 掃過 | CLAUDE-SECURITY-20260924-071232 |
app/flow_control/service/job_batch_complete_service.py |
193 | ❌ 沒碰 | 判斷邏輯(→ U7) |
app/flow_control/service/job_binding_orphan_cleanup_service.py |
174 | ❌ 沒碰 | 判斷邏輯(→ U8) |
app/flow_control/service/job_handlers/__init__.py |
36 | ✅ 掃過 | CLAUDE-SECURITY-20260923-142057 |
app/flow_control/service/job_handlers/survey_handler.py |
196 | ✅ 掃過 | CLAUDE-SECURITY-20260923-142057 |
app/flow_control/service/job_import_service.py |
470 | ❌ 沒碰 | 判斷邏輯(→ U7) |
app/flow_control/service/job_service.py |
455 | ✅ 掃過 | CLAUDE-SECURITY-20260923-142057 |
app/flow_control/service/oscal_stage_handlers.py |
142 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625;FR-113 O9b |
app/flow_control/service/oscal_stage_preconditions.py |
129 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625;FR-113 O9b |
app/flow_control/service/oscal_stage_rollback_handlers.py |
71 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625;FR-113 O9b |
app/flow_control/service/prep_job_generation_service.py |
226 | ✅ 掃過 | CLAUDE-SECURITY-20260924-054633 |
app/flow_control/service/project_service.py |
789 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
app/flow_control/service/reverify_inheritance_service.py |
73 | ❌ 沒碰 | 判斷邏輯(→ U8) |
app/flow_control/service/workflow_xml_sync_service.py |
246 | ❌ 沒碰 | 判斷邏輯(→ U8) |
app/flow_engine/__init__.py |
7 | ❌ 沒碰 | 純宣告 |
app/flow_engine/dto/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/flow_engine/dto/ext_workflow_execution_dto.py |
95 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
app/flow_engine/dto/flow_template_dto.py |
49 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
app/flow_engine/dto/job_evidence_dto.py |
81 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
app/flow_engine/dto/stage_object_dto.py |
39 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
app/flow_engine/enums/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/flow_engine/enums/code.py |
5 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
app/flow_engine/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/flow_engine/service/flow_template_app_service.py |
265 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
app/flow_engine/service/job_evidence_service.py |
191 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350;CLAUDE-SECURITY-20260923-142057 |
app/flow_engine/service/job_force_start_service.py |
154 | ✅ 掃過 | CLAUDE-SECURITY-20260923-143410 |
app/flow_engine/service/join_wait_inspector.py |
135 | ✅ 掃過 | CLAUDE-SECURITY-20260923-143410 |
app/flow_engine/service/stage_advance_service.py |
702 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
app/flow_engine/service/stage_object_app_service.py |
16 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
app/flow_engine/service/stage_rollback_service.py |
189 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
app/flow_engine/service/workflow_execution_service.py |
1374 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104;CLAUDE-SECURITY-20260923-143410 |
app/flow_engine/service/workflow_template_snapshot_service.py |
94 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
app/module_frame/__init__.py |
7 | ❌ 沒碰 | 純宣告 |
app/module_frame/code/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/module_frame/code/module_frame_error_code.py |
32 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
app/module_frame/dto/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/module_frame/dto/module_frame_control_default_dto.py |
49 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
app/module_frame/dto/module_frame_control_objective_default_dto.py |
47 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
app/module_frame/dto/module_frame_dto.py |
70 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
app/module_frame/dto/module_frame_menu_dto.py |
34 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
app/module_frame/dto/module_frame_reference_document_dto.py |
57 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
app/module_frame/excel_template/__init__.py |
11 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095130 |
app/module_frame/excel_template/data_validation_builder.py |
54 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095130 |
app/module_frame/excel_template/generator.py |
652 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095130 |
app/module_frame/excel_template/header_i18n.py |
176 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095130 |
app/module_frame/excel_template/lookup_builder.py |
108 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095130 |
app/module_frame/excel_template/sheet_definitions.py |
617 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095130 |
app/module_frame/excel_template/styles.py |
38 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095130 |
app/module_frame/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/module_frame/service/module_frame_components_service.py |
211 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
app/module_frame/service/module_frame_control_default_service.py |
240 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
app/module_frame/service/module_frame_control_objective_default_service.py |
269 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
app/module_frame/service/module_frame_import_service.py |
415 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095422 |
app/module_frame/service/module_frame_inventory_service.py |
220 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
app/module_frame/service/module_frame_item_service.py |
249 | ⚠️ 部分 | FR-113 B1-item |
app/module_frame/service/module_frame_leveraged_service.py |
214 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
app/module_frame/service/module_frame_party_service.py |
323 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
app/module_frame/service/module_frame_reference_document_service.py |
257 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090431 |
app/module_frame/service/module_frame_service.py |
260 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510;CLAUDE-SECURITY-20260922-104426;CLAUDE-SECURITY-20260923-095422;FR-113 B1-item |
app/module_frame/service/module_frame_ssp_resources_service.py |
101 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
app/module_frame/service/module_frame_system_characteristic_service.py |
186 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104527 |
app/module_frame/service/module_frame_template_import_service.py |
1011 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090410 |
app/module_frame/service/ssp_import_template_app_service.py |
1500 | ✅ 掃過 | CLAUDE-SECURITY-20260922-090440 |
app/notification/__init__.py |
7 | ❌ 沒碰 | 純宣告 |
app/notification/handler/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/notification/handler/notification_socketio_handler.py |
53 | ❌ 沒碰 | 判斷邏輯(→ U12) |
app/notification/service/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
app/notification/service/notification_service.py |
110 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
app/notification/service/test_mail_service.py |
121 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
app/notify_config/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/notify_config/service/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
app/notify_config/service/notify_config_test_service.py |
97 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
app/oscal/__init__.py |
7 | ❌ 沒碰 | 純宣告 |
app/oscal/dto/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/oscal/dto/ssp/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/oscal/dto/ssp/ssp_reference_document_dto.py |
29 | ✅ 掃過 | CLAUDE-SECURITY-20260924-073342 |
app/oscal/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/oscal/service/excel_parser/__init__.py |
9 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154709 |
app/oscal/service/excel_parser/parser.py |
153 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154709 |
app/oscal/service/excel_parser/sheet_handlers.py |
428 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154709 |
app/oscal/service/excel_parser/types.py |
111 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154709 |
app/oscal/service/excel_parser/v2_bundle.py |
217 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154709 |
app/oscal/service/excel_parser/validators.py |
66 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154709 |
app/oscal/service/excel_parser/version_check.py |
63 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154709 |
app/oscal/service/export/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/oscal/service/export/ssp_docx_generator.py |
258 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
app/oscal/service/export/ssp_export_app_service.py |
114 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
app/oscal/service/export/ssp_export_model.py |
169 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
app/oscal/service/export/ssp_libreoffice_converter.py |
124 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
app/oscal/service/export/ssp_v2_content_loader.py |
217 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
app/oscal/service/framework_app_service.py |
247 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154528 |
app/oscal/service/framework_parse_job_service.py |
674 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154612 |
app/oscal/service/framework_version_app_service.py |
229 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154528 |
app/oscal/service/framework_version_edit_service.py |
351 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154528 |
app/oscal/service/import_adapter/__init__.py |
9 | ❌ 沒碰 | 純宣告 |
app/oscal/service/import_adapter/_common.py |
620 | ✅ 掃過 | FR-113 O9a |
app/oscal/service/import_adapter/docx_to_oscal_ssp.py |
152 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113255;FR-113 O9a |
app/oscal/service/import_adapter/excel_to_oscal_ssp.py |
144 | ✅ 掃過 | CLAUDE-SECURITY-20260921-081023;FR-113 O9a |
app/oscal/service/import_adapter/party_match_enrich.py |
78 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113255 |
app/oscal/service/import_adapter/v2_candidate_loader.py |
54 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113255 |
app/oscal/service/import_diff/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/oscal/service/import_diff/decision_merge.py |
318 | ⚠️ 部分 | FR-113 O6 |
app/oscal/service/import_diff/snapshot_views.py |
315 | ⚠️ 部分 | FR-113 O6 |
app/oscal/service/import_diff/ssp_diff_service.py |
751 | ⚠️ 部分 | FR-113 O6 |
app/oscal/service/oscal_export_app_service.py |
47 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
app/oscal/service/resource_library_app_service.py |
530 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
app/oscal/service/ssp_components_app_service.py |
142 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
app/oscal/service/ssp_control_impl_import_service.py |
416 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113255 |
app/oscal/service/ssp_control_implementation_service.py |
1037 | ✅ 掃過 | CLAUDE-SECURITY-20260921-061133 |
app/oscal/service/ssp_document_pool_service.py |
313 | ⚠️ 部分 | FR-113 O6 |
app/oscal/service/ssp_docx_import_app_service.py |
787 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113255 |
app/oscal/service/ssp_excel_import_app_service.py |
937 | ✅ 掃過 | CLAUDE-SECURITY-20260921-081023 |
app/oscal/service/ssp_inventory_items_app_service.py |
194 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
app/oscal/service/ssp_leveraged_app_service.py |
141 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
app/oscal/service/ssp_party_app_service.py |
169 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
app/oscal/service/ssp_resources_app_service.py |
52 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
app/oscal/service/ssp_resources_context_service.py |
230 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
app/oscal/service/ssp_system_characteristic_app_service.py |
68 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
app/project/__init__.py |
7 | ❌ 沒碰 | 純宣告 |
app/project/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/project/service/project_start_app_service.py |
481 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
app/project_summary_report/__init__.py |
7 | ❌ 沒碰 | 純宣告 |
app/project_summary_report/dto/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/project_summary_report/dto/project_summary_report_dto.py |
44 | ❌ 沒碰 | 純宣告 |
app/project_summary_report/dto/project_summary_report_history_dto.py |
41 | ❌ 沒碰 | 純宣告 |
app/project_summary_report/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/project_summary_report/service/project_summary_report_history_service.py |
77 | ❌ 沒碰 | 判斷邏輯(→ U9) |
app/project_summary_report/service/project_summary_report_service.py |
178 | ❌ 沒碰 | 判斷邏輯(→ U9) |
app/readmodel/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/readmodel/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/readmodel/service/auditor_dashboard_service.py |
14 | ✅ 掃過 | CLAUDE-SECURITY-20260924-050436 |
app/readmodel/service/my_jobs_app_service.py |
117 | ❌ 沒碰 | 判斷邏輯(→ U7) |
app/setup/__init__.py |
1 | ❌ 沒碰 | 純宣告 |
app/setup/code/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/setup/code/setup_error_code.py |
27 | ❌ 沒碰 | 純宣告 |
app/setup/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/setup/service/setup_wizard_service.py |
395 | ❌ 沒碰 | 判斷邏輯(→ U3) |
app/support/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/support/diag_cli.py |
366 | ❌ 沒碰 | 判斷邏輯(→ U10) |
app/support/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
app/support/service/diag_bundle_app_service.py |
334 | ❌ 沒碰 | 判斷邏輯(→ U10) |
app/support/service/diag_bundle_export_service.py |
133 | ❌ 沒碰 | 判斷邏輯(→ U10) |
app/support/service/recent_error_app_service.py |
52 | ❌ 沒碰 | 判斷邏輯(→ U10) |
app/system_config/__init__.py |
7 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
app/system_config/service/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
app/system_config/service/ai_provider_key_resolver.py |
199 | ✅ 掃過 | CLAUDE-SECURITY-20260923-143342 |
app/system_config/service/google_drive_app_config_resolver.py |
224 | ❌ 沒碰 | 判斷邏輯(→ U4) |
app/system_config/service/guarded_system_config_service.py |
665 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
app/system_config/service/security_policy_app_service.py |
207 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
app/system_config/service/shared_config_app_service.py |
88 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
app/system_config/service/storage_config_restore_app_service.py |
81 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
app/system_config/service/tenant_storage_config_seeder.py |
129 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
app/upload_file/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260911-065519 |
app/upload_file/service/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260911-065519 |
app/upload_file/service/managed_file_upload_service.py |
386 | ✅ 掃過 | CLAUDE-SECURITY-20260911-065519 |
common/__init__.py |
2 | ❌ 沒碰 | 純宣告 |
common/authz/__init__.py |
180 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/authz/admin.py |
12 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/authz/capability.py |
22 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/authz/decorators.py |
11 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/authz/license.py |
367 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/authz/menu_license_filter.py |
76 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/authz/platform.py |
11 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/authz/project.py |
120 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
common/authz/sharing.py |
35 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/authz/signed_token.py |
22 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/authz/ssp.py |
225 | ✅ 掃過 | CLAUDE-SECURITY-20260921-061133 |
common/authz/workflow.py |
49 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
common/code/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
common/code/detection_tools_error_code.py |
209 | ❌ 沒碰 | 純宣告 |
common/code/error_code.py |
185 | ❌ 沒碰 | 純宣告 |
common/code/feedback_code.py |
5 | ✅ 掃過 | CLAUDE-SECURITY-20260909-061148;CLAUDE-SECURITY-20260923-130819 |
common/code/file_storage_type.py |
9 | ❌ 沒碰 | 純宣告 |
common/code/flow_control_error_code.py |
513 | ❌ 沒碰 | 純宣告 |
common/constant/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
common/constant/ai_service_config.py |
29 | ❌ 沒碰 | 純宣告 |
common/constant/drive_app_config.py |
45 | ❌ 沒碰 | 純宣告 |
common/constant/tenant.py |
11 | ❌ 沒碰 | 純宣告 |
common/dto/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
common/dto/file_info_dto.py |
15 | ❌ 沒碰 | 純宣告 |
common/enum/event_code.py |
133 | ❌ 沒碰 | 純宣告 |
common/enum/participant_enum.py |
18 | ❌ 沒碰 | 純宣告 |
common/exception_error/common_exception.py |
24 | ❌ 沒碰 | 純宣告 |
common/iam_ports.py |
100 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/integrity/__init__.py |
33 | ❌ 沒碰 | 純宣告 |
common/integrity/adapters.py |
357 | ❌ 沒碰 | 判斷邏輯(→ U12) |
common/middleware/__init__.py |
1 | ❌ 沒碰 | 純宣告 |
common/middleware/app_mw.py |
297 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130653 |
common/middleware/jwt_mw.py |
46 | ❌ 沒碰 | 判斷邏輯(→ U2) |
common/middleware/license_readonly_mw.py |
217 | ❌ 沒碰 | 判斷邏輯(→ U2) |
common/middleware/request_context_mw.py |
69 | ✅ 掃過 | CLAUDE-SECURITY-20260923-143342 |
common/setup/__init__.py |
5 | ❌ 沒碰 | 純宣告 |
common/setup/setup_token.py |
113 | ❌ 沒碰 | 判斷邏輯(→ U3) |
common/util/agent_auth_settings.py |
40 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
common/util/app_version.py |
88 | ❌ 沒碰 | 判斷邏輯(→ U3) |
common/util/audit_nickname.py |
87 | ❌ 沒碰 | 判斷邏輯(→ U9) |
common/util/common_util.py |
65 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/util/profile_extractor/__init__.py |
12 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
common/util/redis_client_util.py |
79 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/util/resource_path.py |
50 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/util/round_guard.py |
46 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/util/ssp_resource_name_dup.py |
56 | ❌ 沒碰 | 判斷邏輯(→ U1) |
common/util/system_asset_snapshot.py |
129 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130819 |
config/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
config/app_modules.py |
146 | ❌ 沒碰 | 純宣告 |
config/config.py |
310 | ❌ 沒碰 | 純宣告 |
config/config_loader.py |
123 | ❌ 沒碰 | 判斷邏輯(→ U2) |
config/config_util.py |
16 | ❌ 沒碰 | 純宣告 |
config/di_modules.py |
225 | ❌ 沒碰 | DI 組裝 |
config/socketio_namespaces.py |
52 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130757 |
content/detection-profiles/tools/gpo_extract.py |
169 | ❌ 沒碰 | 離線工具 |
content/detection-profiles/tools/gpo_match.py |
164 | ❌ 沒碰 | 離線工具 |
content/detection-profiles/tools/linux_rules.py |
160 | ❌ 沒碰 | 離線工具 |
content/detection-profiles/tools/maps.py |
163 | ❌ 沒碰 | 離線工具 |
content/detection-profiles/tools/service_names.py |
161 | ❌ 沒碰 | 離線工具 |
content/detection-profiles/tools/twgcb2inspec.py |
715 | ❌ 沒碰 | 離線工具 |
content/detection-profiles/tools/verify_service_map.py |
111 | ❌ 沒碰 | 離線工具 |
core/__init__.py |
3 | ❌ 沒碰 | 純宣告 |
core/app_factory.py |
469 | ❌ 沒碰 | 判斷邏輯(→ U2) |
core/extensions.py |
32 | ❌ 沒碰 | 純宣告 |
core/host_capabilities.py |
76 | ❌ 沒碰 | 判斷邏輯(→ U2) |
core/plugins/__init__.py |
83 | ❌ 沒碰 | DI 組裝 |
core/plugins/_host.py |
212 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332;CLAUDE-SECURITY-20260923-130633;CLAUDE-SECURITY-20260923-130757;CLAUDE-SECURITY-20260923-130819 |
core/plugins/ai_bot.py |
135 | ❌ 沒碰 | DI 組裝 |
core/plugins/ai_dashboard.py |
98 | ❌ 沒碰 | DI 組裝 |
core/plugins/api_log.py |
352 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130653 |
core/plugins/asset.py |
174 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130819 |
core/plugins/bulletin.py |
220 | ❌ 沒碰 | DI 組裝 |
core/plugins/compliance_audit.py |
185 | ✅ 掃過 | CLAUDE-SECURITY-20260924-072304 |
core/plugins/detection.py |
362 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
core/plugins/evidence_classification.py |
718 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510;CLAUDE-SECURITY-20260923-143342 |
core/plugins/file_upload.py |
145 | ❌ 沒碰 | DI 組裝 |
core/plugins/flow_engine.py |
83 | ❌ 沒碰 | DI 組裝 |
core/plugins/identity.py |
679 | ❌ 沒碰 | DI 組裝 |
core/plugins/integrity.py |
93 | ❌ 沒碰 | DI 組裝 |
core/plugins/issue.py |
195 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130819 |
core/plugins/license.py |
391 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
core/plugins/notification.py |
83 | ❌ 沒碰 | DI 組裝 |
core/plugins/participant.py |
181 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
core/plugins/remote_agent.py |
140 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
core/plugins/survey.py |
186 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130757 |
core/plugins/system_core.py |
180 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
core/plugins/task.py |
138 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
core/scheduler.py |
550 | ❌ 沒碰 | 判斷邏輯(→ U8) |
di_containers/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/agent_task/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
di_containers/agent_task/agent_task_containers.py |
40 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
di_containers/ai_dashboard/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812 |
di_containers/ai_dashboard/ai_dashboard_containers.py |
109 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812 |
di_containers/ai_dashboard/dashboard_registry_wiring.py |
84 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812 |
di_containers/asset/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/asset/asset_containers.py |
89 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510;CLAUDE-SECURITY-20260923-130819 |
di_containers/associations/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/associations/associations_containers.py |
133 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
di_containers/auth/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/auth/auth_containers.py |
349 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
di_containers/bulletin/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260908-134256 |
di_containers/bulletin/bulletin_containers.py |
97 | ✅ 掃過 | CLAUDE-SECURITY-20260908-134256 |
di_containers/cloud_integration/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/cloud_integration/cloud_integration_containers.py |
310 | ❌ 沒碰 | DI 組裝 |
di_containers/containers.py |
397 | ❌ 沒碰 | DI 組裝 |
di_containers/dashboard_apis/__init__.py |
87 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812 |
di_containers/dashboard_apis/auth.py |
57 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812 |
di_containers/dashboard_apis/bulletin.py |
29 | ✅ 掃過 | CLAUDE-SECURITY-20260908-134256;CLAUDE-SECURITY-20260910-044812 |
di_containers/dashboard_apis/device.py |
21 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812;CLAUDE-SECURITY-20260923-130819 |
di_containers/dashboard_apis/feedback.py |
25 | ✅ 掃過 | CLAUDE-SECURITY-20260909-061148;CLAUDE-SECURITY-20260910-044812;CLAUDE-SECURITY-20260923-130819 |
di_containers/dashboard_apis/flow_engine.py |
52 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812;CLAUDE-SECURITY-20260913-064104 |
di_containers/dashboard_apis/module_frame.py |
22 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812;CLAUDE-SECURITY-20260922-104426 |
di_containers/dashboard_apis/oscal.py |
36 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812;FR-113 O9b |
di_containers/dashboard_apis/participant.py |
109 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812;CLAUDE-SECURITY-20260914-070510 |
di_containers/dashboard_apis/project.py |
50 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812 |
di_containers/dashboard_apis/survey.py |
44 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812;CLAUDE-SECURITY-20260923-130757 |
di_containers/dashboard_apis/system_config.py |
23 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812 |
di_containers/dashboard_apis/system_menu.py |
21 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812 |
di_containers/dashboard_apis/user_auth_provider.py |
32 | ✅ 掃過 | CLAUDE-SECURITY-20260910-044812 |
di_containers/detection_execution/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/detection_execution/detection_execution_containers.py |
33 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
di_containers/detection_tools/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/detection_tools/detection_orchestration_containers.py |
125 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
di_containers/detection_tools/detection_tools_containers.py |
204 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
di_containers/evidence_classification/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/evidence_classification/evidence_classification_containers.py |
198 | ✅ 掃過 | CLAUDE-SECURITY-20260923-143342 |
di_containers/flow_control/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/flow_control/flow_control_containers.py |
753 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
di_containers/flow_engine/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/flow_engine/flow_template_containers.py |
46 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
di_containers/flow_engine/job_evidence_containers.py |
38 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
di_containers/flow_engine/project_participant_containers.py |
118 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104;CLAUDE-SECURITY-20260914-070510 |
di_containers/flow_engine/task_assignee_containers.py |
78 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350;CLAUDE-SECURITY-20260914-070510 |
di_containers/flow_engine/workflow_excution_containers.py |
155 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104;CLAUDE-SECURITY-20260914-070510 |
di_containers/identity/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/identity/identity_containers.py |
34 | ❌ 沒碰 | DI 組裝 |
di_containers/license/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/license/license_containers.py |
84 | ❌ 沒碰 | DI 組裝 |
di_containers/log/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/log/apilog_containers.py |
21 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130653 |
di_containers/login/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/login/login_containers.py |
76 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
di_containers/module_frame/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/module_frame/module_frame_containers.py |
260 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
di_containers/notification/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
di_containers/notification/notification_containers.py |
33 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510;CLAUDE-SECURITY-20260915-090332 |
di_containers/notify_config/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
di_containers/notify_config/containers.py |
13 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
di_containers/oscal/__init__.py |
0 | ⚠️ 部分 | FR-113 O9b |
di_containers/oscal/oscal_containers.py |
509 | ✅ 掃過 | CLAUDE-SECURITY-20260924-073342;FR-113 O9b |
di_containers/project/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/project/project_containers.py |
70 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
di_containers/project/project_summary_report_containers.py |
48 | ❌ 沒碰 | DI 組裝 |
di_containers/remote_agent/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
di_containers/remote_agent/remote_agent_containers.py |
100 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
di_containers/setup/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/setup/setup_containers.py |
41 | ❌ 沒碰 | DI 組裝 |
di_containers/support/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/support/support_containers.py |
82 | ❌ 沒碰 | DI 組裝 |
di_containers/survey/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/survey/survey_containers.py |
124 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130757 |
di_containers/system_core/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
di_containers/system_core/system_core_containers.py |
96 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
di_containers/task_survey/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/task_survey/question_answer_containers.py |
97 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130757 |
di_containers/task_survey/task_survey_containers.py |
56 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510;CLAUDE-SECURITY-20260923-130757 |
di_containers/upload_file/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260911-065519 |
di_containers/upload_file/upload_file_containers.py |
34 | ✅ 掃過 | CLAUDE-SECURITY-20260911-065519 |
di_containers/user_change_password/__init__.py |
0 | ❌ 沒碰 | DI 組裝 |
di_containers/user_change_password/user_change_password_containers.py |
62 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
domain/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/associations/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/associations/entity/__init__.py |
10 | ❌ 沒碰 | 純宣告 |
domain/associations/entity/project_assessment_plan_mapping_entity.py |
23 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
domain/associations/entity/project_assessment_plan_mapping_query_entity.py |
13 | ❌ 沒碰 | 純宣告 |
domain/associations/entity/project_org_unit_mapping_entity.py |
21 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
domain/associations/entity/project_org_unit_mapping_query_entity.py |
13 | ❌ 沒碰 | 純宣告 |
domain/associations/entity/project_system_characteristic_mapping_entity.py |
21 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
domain/associations/entity/project_system_characteristic_mapping_query_entity.py |
13 | ❌ 沒碰 | 純宣告 |
domain/associations/repository/__init__.py |
9 | ❌ 沒碰 | 純宣告 |
domain/associations/repository/project_assessment_plan_mapping.py |
22 | ❌ 沒碰 | 純宣告 |
domain/associations/repository/project_org_unit_mapping.py |
10 | ❌ 沒碰 | 純宣告 |
domain/associations/repository/project_system_characteristic_mapping.py |
13 | ❌ 沒碰 | 純宣告 |
domain/associations/service/__init__.py |
9 | ❌ 沒碰 | 純宣告 |
domain/associations/service/project_assessment_plan_mapping_domain_service.py |
36 | ❌ 沒碰 | 純宣告 |
domain/associations/service/project_org_unit_mapping_domain_service.py |
23 | ❌ 沒碰 | 純宣告 |
domain/associations/service/project_system_characteristic_mapping_domain_service.py |
50 | ❌ 沒碰 | 判斷邏輯(→ U9) |
domain/cloud_integration/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/entities/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/entities/drive_folder_mapping_entity.py |
19 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/entities/drive_sync_job_entity.py |
22 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/entities/tenant_drive_integration_entity.py |
31 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/enums/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/enums/scope_type.py |
13 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/enums/sync_job_type.py |
12 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/repository/drive_folder_mapping_repository.py |
66 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/repository/drive_sync_job_repository.py |
70 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/repository/tenant_drive_integration_repository.py |
29 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/service/drive_api_client_interface.py |
67 | ❌ 沒碰 | 純宣告 |
domain/cloud_integration/service/drive_folder_mapping_domain_service.py |
133 | ❌ 沒碰 | 判斷邏輯(→ U6) |
domain/cloud_integration/service/drive_sync_job_domain_service.py |
104 | ❌ 沒碰 | 判斷邏輯(→ U5) |
domain/cloud_integration/service/google_drive_token_manager.py |
131 | ❌ 沒碰 | 判斷邏輯(→ U4) |
domain/cloud_integration/service/tenant_drive_integration_domain_service.py |
65 | ❌ 沒碰 | 判斷邏輯(→ U4) |
domain/cloud_integration/service/token_crypto_service.py |
9 | ❌ 沒碰 | 純宣告 |
domain/flow_engine/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/flow_engine/entity/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/flow_engine/entity/ext_workflow_execution_entity.py |
81 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
domain/flow_engine/entity/ext_workflow_execution_query_entity.py |
52 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
domain/flow_engine/entity/flow_template_entity.py |
21 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
domain/flow_engine/entity/flow_template_query_entity.py |
12 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
domain/flow_engine/entity/job_evidence_entity.py |
67 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
domain/flow_engine/entity/job_evidence_query_entity.py |
34 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
domain/flow_engine/entity/stage_object_entity.py |
29 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
domain/flow_engine/entity/stage_object_query_entity.py |
9 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
domain/flow_engine/entity/workflow_execution_control_mapping_entity.py |
26 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
domain/flow_engine/entity/workflow_execution_control_mapping_query_entity.py |
18 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
domain/flow_engine/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/flow_engine/repository/ext_workflow_execution.py |
8 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
domain/flow_engine/repository/flow_template_repo.py |
28 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
domain/flow_engine/repository/job_evidence.py |
79 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
domain/flow_engine/repository/stage_object_repo.py |
16 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
domain/flow_engine/repository/workflow_execution_control_mapping.py |
26 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
domain/flow_engine/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/flow_engine/service/ext_workflow_execution_domain_service.py |
29 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
domain/flow_engine/service/flow_template_domain_service.py |
33 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
domain/flow_engine/service/job_evidence_domain_service.py |
78 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
domain/flow_engine/service/stage_completion_registry.py |
177 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
domain/flow_engine/service/stage_object_domain_service.py |
20 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
domain/flow_engine/service/workflow_execution_control_mapping_domain_service.py |
32 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
domain/flow_engine/vo/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/flow_engine/vo/control_vo.py |
6 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
domain/module_frame/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/module_frame/code/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/module_frame/code/module_frame_action_type_enum.py |
15 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095422 |
domain/module_frame/dto/module_frame_dto.py |
49 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095422 |
domain/module_frame/entity/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/module_frame/entity/module_frame_entity.py |
113 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
domain/module_frame/entity/module_frame_menu_entity.py |
23 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
domain/module_frame/entity/module_frame_query_filter.py |
37 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
domain/module_frame/repository/__init__.py |
1 | ❌ 沒碰 | 純宣告 |
domain/module_frame/repository/module_frame.py |
33 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
domain/module_frame/service/__init__.py |
1 | ❌ 沒碰 | 純宣告 |
domain/module_frame/service/module_frame_domain_service.py |
76 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
domain/oscal/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/oscal/adapter/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/oscal/adapter/adapter_registry.py |
21 | ✅ 掃過 | CLAUDE-SECURITY-20260924-085329 |
domain/oscal/adapter/cmmc_ssp_adapter.py |
860 | ✅ 掃過 | CLAUDE-SECURITY-20260924-085329 |
domain/oscal/adapter/i_ssp_docx_adapter.py |
78 | ✅ 掃過 | CLAUDE-SECURITY-20260924-085329 |
domain/oscal/entity/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/oscal/entity/framework_parse_job_entity.py |
76 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154612 |
domain/oscal/entity/ssp_docx_parse_job_entity.py |
70 | ❌ 沒碰 | 純宣告 |
domain/oscal/entity/ssp_excel_parse_job_entity.py |
70 | ❌ 沒碰 | 純宣告 |
domain/oscal/import_pipeline/__init__.py |
1 | ❌ 沒碰 | 純宣告 |
domain/oscal/import_pipeline/bundle_restore.py |
208 | ⚠️ 部分 | FR-113 O9b |
domain/oscal/parser/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/oscal/parser/control_id_matcher.py |
120 | ✅ 掃過 | CLAUDE-SECURITY-20260924-080234 |
domain/oscal/parser/docx_intermediate.py |
72 | ✅ 掃過 | CLAUDE-SECURITY-20260924-080234 |
domain/oscal/parser/docx_parser_core.py |
555 | ✅ 掃過 | CLAUDE-SECURITY-20260924-080234 |
domain/oscal/parser/docx_section_extractors.py |
892 | ✅ 掃過 | CLAUDE-SECURITY-20260924-080234 |
domain/oscal/parser/framework_patterns.py |
19 | ✅ 掃過 | CLAUDE-SECURITY-20260924-080234 |
domain/oscal/parser/ssp_intermediate.py |
369 | ✅ 掃過 | CLAUDE-SECURITY-20260924-085329 |
domain/oscal/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/oscal/repository/i_framework_parse_job_repo.py |
39 | ❌ 沒碰 | 純宣告 |
domain/oscal/repository/i_ssp_catalog_title_query.py |
24 | ❌ 沒碰 | 純宣告 |
domain/oscal/repository/i_ssp_docx_parse_job_repo.py |
25 | ❌ 沒碰 | 純宣告 |
domain/oscal/repository/i_ssp_excel_parse_job_repo.py |
25 | ❌ 沒碰 | 純宣告 |
domain/oscal/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/oscal/service/framework_parse_job_domain_service.py |
123 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154612 |
domain/oscal/service/party_reconciliation_service.py |
30 | ⚠️ 部分 | FR-113 O9b |
domain/oscal/service/reconciliation/__init__.py |
18 | ❌ 沒碰 | 純宣告 |
domain/oscal/service/reconciliation/_normalizers.py |
51 | ⚠️ 部分 | FR-113 O9b |
domain/oscal/service/reconciliation/base.py |
107 | ⚠️ 部分 | FR-113 O9b |
domain/oscal/service/reconciliation/match_method.py |
10 | ⚠️ 部分 | FR-113 O9b |
domain/oscal/service/reconciliation/organization_reconciler.py |
101 | ⚠️ 部分 | FR-113 O9b |
domain/oscal/service/reconciliation/person_reconciler.py |
101 | ⚠️ 部分 | FR-113 O9b |
domain/oscal/service/ssp_context_resolver.py |
158 | ✅ 掃過 | CLAUDE-SECURITY-20260921-113212 |
domain/oscal/service/ssp_docx_parse_job_domain_service.py |
71 | ❌ 沒碰 | 判斷邏輯(→ U12) |
domain/oscal/service/ssp_excel_parse_job_domain_service.py |
71 | ❌ 沒碰 | 判斷邏輯(→ U12) |
domain/oscal/service/ssp_project_resolver.py |
184 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510;CLAUDE-SECURITY-20260921-113212 |
domain/project_summary_report/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/entity/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/entity/project_summary_report_entity.py |
28 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/entity/project_summary_report_history_entity.py |
26 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/entity/project_summary_report_history_query_filter.py |
17 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/entity/project_summary_report_query_filter.py |
19 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/repository/project_summary_reoprt.py |
18 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/repository/project_summary_reoprt_history.py |
8 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/service/project_summary_report_domain_service.py |
52 | ❌ 沒碰 | 純宣告 |
domain/project_summary_report/service/project_summary_report_history_domain_service.py |
21 | ❌ 沒碰 | 純宣告 |
domain/support/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/support/entity/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/support/entity/diag_bundle.py |
116 | ❌ 沒碰 | 純宣告 |
domain/support/service/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
domain/support/service/diag_slice_domain_service.py |
270 | ❌ 沒碰 | 判斷邏輯(→ U10) |
examples/compute_engine_example.py |
469 | ❌ 沒碰 | 離線工具 |
examples/metadata_builder_example.py |
263 | ❌ 沒碰 | 離線工具 |
examples/prompts_metadata_example.py |
438 | ❌ 沒碰 | 離線工具 |
infra/__init__.py |
2 | ❌ 沒碰 | 純宣告 |
infra/associations/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/associations/mapper/__init__.py |
7 | ❌ 沒碰 | 純宣告 |
infra/associations/mapper/project_assessment_plan_mapping_mapper.py |
27 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
infra/associations/mapper/project_org_unit_mapping_mapper.py |
29 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
infra/associations/mapper/project_system_characteristic_mapping_mapper.py |
28 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
infra/associations/model/__init__.py |
5 | ❌ 沒碰 | 純宣告 |
infra/associations/model/project_assessment_plan_mapping.py |
66 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
infra/associations/model/project_org_unit.py |
50 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
infra/associations/model/project_system_characteristic.py |
54 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
infra/associations/repository/__init__.py |
7 | ❌ 沒碰 | 純宣告 |
infra/associations/repository/project_assessment_plan_mapping_repo_impl.py |
71 | ❌ 沒碰 | 判斷邏輯(→ U9) |
infra/associations/repository/project_org_unit_mapping_repo_impl.py |
38 | ❌ 沒碰 | 判斷邏輯(→ U9) |
infra/associations/repository/project_system_characteristic_mapping_repo_impl.py |
59 | ❌ 沒碰 | 判斷邏輯(→ U9) |
infra/auth/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/auth/root_admin_reader.py |
40 | ❌ 沒碰 | 判斷邏輯(→ U9) |
infra/cloud_integration/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/crypto/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/crypto/fernet_crypto.py |
18 | ❌ 沒碰 | 判斷邏輯(→ U4) |
infra/cloud_integration/google_drive/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/google_drive/exceptions.py |
26 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/google_drive/google_drive_api_client.py |
301 | ❌ 沒碰 | 判斷邏輯(→ U5) |
infra/cloud_integration/google_drive/google_oauth_client.py |
180 | ❌ 沒碰 | 判斷邏輯(→ U4) |
infra/cloud_integration/mapper/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/mapper/drive_folder_mapping_mapper.py |
35 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/mapper/drive_sync_job_mapper.py |
39 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/mapper/tenant_drive_integration_mapper.py |
56 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/models/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/models/drive_folder_mapping.py |
34 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/models/drive_sync_job.py |
38 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/models/tenant_drive_integration.py |
45 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/cloud_integration/repository/drive_folder_mapping_repo_impl.py |
171 | ❌ 沒碰 | 判斷邏輯(→ U6) |
infra/cloud_integration/repository/drive_sync_job_repo_impl.py |
191 | ❌ 沒碰 | 判斷邏輯(→ U5) |
infra/cloud_integration/repository/tenant_drive_integration_repo_impl.py |
94 | ❌ 沒碰 | 判斷邏輯(→ U4) |
infra/flow_control/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/flow_control/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/flow_control/repository/flow_control_job_repo_impl.py |
1216 | ✅ 掃過 | CLAUDE-SECURITY-20260923-143314 |
infra/flow_control/repository/flow_control_project_repo_impl.py |
716 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
infra/flow_control/repository/job_binding_orphan_query.py |
129 | ❌ 沒碰 | 判斷邏輯(→ U8) |
infra/flow_control/repository/job_import_lookup_query.py |
149 | ✅ 掃過 | CLAUDE-SECURITY-20260923-143314 |
infra/flow_control/repository/reverify_clone_query.py |
176 | ❌ 沒碰 | 判斷邏輯(→ U8) |
infra/flow_control/repository/task_execution_query.py |
292 | ❌ 沒碰 | 判斷邏輯(→ U8) |
infra/flow_control/task_existence_query.py |
76 | ❌ 沒碰 | 判斷邏輯(→ U8) |
infra/flow_engine/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/flow_engine/mapper/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/flow_engine/mapper/ext_workflow_execution_mapper.py |
61 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
infra/flow_engine/mapper/flow_template_mapper.py |
44 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
infra/flow_engine/mapper/job_evidence_mapper.py |
46 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
infra/flow_engine/mapper/stage_object_mapper.py |
59 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
infra/flow_engine/mapper/workflow_execution_control_mapping_mapper.py |
20 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
infra/flow_engine/models/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/flow_engine/models/ext_workflow_execution.py |
164 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
infra/flow_engine/models/flow_template.py |
29 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
infra/flow_engine/models/job_evidence.py |
117 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350;CLAUDE-SECURITY-20260923-143342 |
infra/flow_engine/models/stage_object.py |
34 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
infra/flow_engine/models/workflow_execution_control_mapping.py |
57 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
infra/flow_engine/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/flow_engine/repository/ext_workflow_execution_impl.py |
52 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
infra/flow_engine/repository/flow_template_repo_impl.py |
108 | ✅ 掃過 | CLAUDE-SECURITY-20260913-021915 |
infra/flow_engine/repository/job_evidence_repo_impl.py |
206 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
infra/flow_engine/repository/job_execution_repo_impl.py |
26 | ✅ 掃過 | CLAUDE-SECURITY-20260912-034350 |
infra/flow_engine/repository/stage_object_repo_impl.py |
38 | ✅ 掃過 | CLAUDE-SECURITY-20260912-073625 |
infra/flow_engine/repository/workflow_execution_control_mapping_repo_impl.py |
93 | ✅ 掃過 | CLAUDE-SECURITY-20260913-064104 |
infra/identity/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/identity/user_name_resolver.py |
85 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130653 |
infra/module_frame/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/module_frame/adapter/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/module_frame/adapter/parser_adapter_factory.py |
17 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095422 |
infra/module_frame/adapter/yaml_to_module_frame_parser_adapter.py |
65 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095422 |
infra/module_frame/mapper/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/module_frame/mapper/module_frame_mapper.py |
41 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
infra/module_frame/mapper/module_frame_menu_mapper.py |
23 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
infra/module_frame/models/__init__.py |
4 | ❌ 沒碰 | 純宣告 |
infra/module_frame/models/module_frame.py |
91 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
infra/module_frame/models/module_frame_trans.py |
29 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
infra/module_frame/ports/parser_port.py |
9 | ✅ 掃過 | CLAUDE-SECURITY-20260923-095422 |
infra/module_frame/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/module_frame/repository/module_frame_repo_impl.py |
136 | ✅ 掃過 | CLAUDE-SECURITY-20260922-104426 |
infra/notification/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510 |
infra/notification/tenant_notify_config_reader.py |
37 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510;CLAUDE-SECURITY-20260915-090332 |
infra/oscal/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/oscal/mapper/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/oscal/mapper/framework_parse_job_mapper.py |
39 | ❌ 沒碰 | 純宣告 |
infra/oscal/mapper/ssp_docx_parse_job_mapper.py |
35 | ❌ 沒碰 | 純宣告 |
infra/oscal/mapper/ssp_excel_parse_job_mapper.py |
35 | ❌ 沒碰 | 純宣告 |
infra/oscal/model/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/oscal/model/framework_parse_job.py |
36 | ⚠️ 部分 | FR-113 O9b |
infra/oscal/model/ssp_docx_parse_job.py |
30 | ⚠️ 部分 | FR-113 O9b |
infra/oscal/model/ssp_excel_parse_job.py |
30 | ⚠️ 部分 | FR-113 O9b |
infra/oscal/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/oscal/repository/framework_parse_job_repo_impl.py |
91 | ✅ 掃過 | CLAUDE-SECURITY-20260921-154612 |
infra/oscal/repository/ssp_catalog_title_query.py |
93 | ✅ 掃過 | CLAUDE-SECURITY-20260924-073342;FR-113 O9b |
infra/oscal/repository/ssp_docx_parse_job_repo_impl.py |
54 | ❌ 沒碰 | 判斷邏輯(→ U12) |
infra/oscal/repository/ssp_excel_parse_job_repo_impl.py |
56 | ❌ 沒碰 | 判斷邏輯(→ U12) |
infra/project_summary_report/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/project_summary_report/mapper/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/project_summary_report/mapper/project_summary_report_history_mapper.py |
27 | ❌ 沒碰 | 純宣告 |
infra/project_summary_report/mapper/project_summary_report_mapper.py |
28 | ❌ 沒碰 | 純宣告 |
infra/project_summary_report/models/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/project_summary_report/models/project_summary_report.py |
56 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
infra/project_summary_report/models/project_summary_report_history.py |
67 | ❌ 沒碰 | 純宣告 |
infra/project_summary_report/repository/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/project_summary_report/repository/project_summary_report_hitrosy_repo_impl.py |
36 | ❌ 沒碰 | 判斷邏輯(→ U9) |
infra/project_summary_report/repository/project_summary_report_repo_impl.py |
137 | ✅ 掃過 | CLAUDE-SECURITY-20260914-070510 |
infra/readmodel/__init__.py |
68 | ❌ 沒碰 | 純宣告 |
infra/readmodel/audit/__init__.py |
11 | ❌ 沒碰 | 純宣告 |
infra/readmodel/audit/auditor_dashboard_query.py |
118 | ✅ 掃過 | CLAUDE-SECURITY-20260924-050436 |
infra/readmodel/audit/flow_control_dashboard_repo_impl.py |
254 | ❌ 沒碰 | 判斷邏輯(→ U7) |
infra/readmodel/detection/__init__.py |
14 | ❌ 沒碰 | 純宣告 |
infra/readmodel/detection/detection_job_notify_query.py |
161 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
infra/readmodel/detection/detection_profile_usage_query.py |
150 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130633 |
infra/readmodel/oscal/__init__.py |
11 | ❌ 沒碰 | 純宣告 |
infra/readmodel/oscal/resource_library_query.py |
141 | ✅ 掃過 | CLAUDE-SECURITY-20260921-060255 |
infra/readmodel/oscal/ssp_control_implementation_query.py |
257 | ✅ 掃過 | CLAUDE-SECURITY-20260921-061133 |
infra/readmodel/tasks/__init__.py |
14 | ❌ 沒碰 | 純宣告 |
infra/readmodel/tasks/job_batch_complete_query.py |
284 | ✅ 掃過 | CLAUDE-SECURITY-20260923-142057 |
infra/readmodel/tasks/job_export_query.py |
264 | ✅ 掃過 | CLAUDE-SECURITY-20260923-143314 |
infra/readmodel/tasks/my_grc_jobs_query.py |
198 | ❌ 沒碰 | 判斷邏輯(→ U7) |
infra/readmodel/tasks/vw_user_job_queue.py |
94 | ❌ 沒碰 | 純宣告 |
infra/remote_agent/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
infra/remote_agent/adapter/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
infra/remote_agent/adapter/detection_lifecycle_listener.py |
37 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011;CLAUDE-SECURITY-20260923-130633 |
infra/remote_agent/adapter/detection_task_payload_provider.py |
125 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
infra/remote_agent/recon_query_adapter.py |
34 | ✅ 掃過 | CLAUDE-SECURITY-20260917-015011 |
infra/setup/__init__.py |
1 | ❌ 沒碰 | 純宣告 |
infra/setup/setup_state_reader.py |
89 | ❌ 沒碰 | 判斷邏輯(→ U3) |
infra/support/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/support/collector/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/support/collector/container_collector.py |
105 | ❌ 沒碰 | 判斷邏輯(→ U11) |
infra/support/collector/host_collector.py |
201 | ❌ 沒碰 | 判斷邏輯(→ U11) |
infra/support/collector/protocol.py |
55 | ❌ 沒碰 | 純宣告 |
infra/support/collector/staged_collector.py |
178 | ❌ 沒碰 | 判斷邏輯(→ U11) |
infra/support/diag_db_reader.py |
242 | ❌ 沒碰 | 判斷邏輯(→ U11) |
infra/support/diag_event_fetcher.py |
303 | ❌ 沒碰 | 判斷邏輯(→ U11) |
infra/support/diag_log_reader.py |
176 | ❌ 沒碰 | 判斷邏輯(→ U11) |
infra/support/diag_masking.py |
198 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130653 |
infra/support/diag_packer.py |
343 | ❌ 沒碰 | 判斷邏輯(→ U11) |
infra/survey/__init__.py |
0 | ❌ 沒碰 | 純宣告 |
infra/survey/adapters.py |
163 | ✅ 掃過 | CLAUDE-SECURITY-20260923-130757 |
infra/system_config/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
infra/system_config/runtime_config.py |
74 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
infra/system_config/system_config_root_reader.py |
321 | ✅ 掃過 | CLAUDE-SECURITY-20260908-073510;CLAUDE-SECURITY-20260915-090332;CLAUDE-SECURITY-20260923-143342 |
infra/system_config/tenant_config_seed_writer.py |
86 | ✅ 掃過 | CLAUDE-SECURITY-20260915-090332 |
infra/upload_file/__init__.py |
0 | ✅ 掃過 | CLAUDE-SECURITY-20260911-065519 |
infra/upload_file/remote_agent_adapter.py |
275 | ✅ 掃過 | CLAUDE-SECURITY-20260911-065519;CLAUDE-SECURITY-20260917-015011 |
infra/upload_file/remote_agent_config_dto.py |
22 | ✅ 掃過 | CLAUDE-SECURITY-20260911-065519;CLAUDE-SECURITY-20260917-015011 |
infra/upload_file/system_storage_config_reader.py |
58 | ✅ 掃過 | CLAUDE-SECURITY-20260911-065519 |
main.py |
302 | ❌ 沒碰 | 判斷邏輯(→ U2) |
沿革見 FR-119 母卡 CM-2139 與 git log。