本卡屬 FR-114 資安修正(母卡 CM-2019),第 2 批「只驗登入、不檢查歸屬」卡 2-5,修 SUMMARY #56/#57(出自 M10-3/M10-4)。中。修法規格來自內化卡,計畫在 docs/features/FR-114-2609-security-fix-dispatch/batches/plan-b2.md「卡 2-5」段,範圍已依決策指示擴大到稽核輪次全部 8 支唯讀 GET 端點。🔴 本卡要等第 1 批合回主線+套件發版後才能開工。
#56:專案摘要報告有 5 支讀取方法完全沒檢查是不是該專案成員,其中列表方法(get_project_summary_reports)還應該改成「只列出我有參與的專案」而不是全部專案都列出來。
#57:原本掃描標的是稽核輪次的兩支端點,但實查發現同一支路由檔(audit_round_route.py)裡總共有 8 支唯讀 GET 端點,全部零歸屬檢查——本卡範圍依計畫建議擴大成這 8 支一起補,不是只修原本點名的兩支,避免同一支檔案分批修造成前後不一致。
首腦核對:
BE 側:在 /Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/.claude/worktrees/wt-fix-security(branch fix/security-b1)改(app/project_summary_report/、api/project_summary_report/、api/project/routes/audit_round_route.py、app/oscal 相關 AP 內容與 AP 關係人兩支方法),不要碰主 checkout,跑服務用 PORT=8001。
套件側:jedi-compliance-audit 在 /Users/chouraymond/Projects/Jedicogy/module/jedi-python-package/.claude/worktrees/jedi-wt-fix-security/jedi-compliance-audit(branch fix/security-b1)改,只動自己那支套件的子目錄、只 git add 該子目錄下的檔。BE pyproject.toml 的 jedi-compliance-audit pin 改成 path 形式指向這個 worktree,poetry update jedi-compliance-audit,path 改動不 commit。
project_summary_report_service.py:53 get_project_summary_reports(列表)——除了補歸屬檢查,還要改成「只列我參與的專案」
project_summary_report_service.py:73 讀取方法,補 _require_participant
project_summary_report_service.py:78 單筆讀取,補 _require_participant_by_report_uid
project_summary_report_service.py:89 讀取方法,補歸屬檢查
歷史 service:29 讀取方法,補歸屬檢查
歷史 service:36 讀取方法,補歸屬檢查(歷史退回 :57-58 已有正確寫法,複製過來)
audit_round_route.py:74 稽核輪次列表(GET),補歸屬檢查
audit_round_route.py:85 稽核輪次單筆(GET),補歸屬檢查
audit_round_route.py:163 → assessment_plan_app_service.py:511 AP 內容(GET,BE 主專案),補歸屬檢查
audit_round_route.py:234 → assessment_plan_app_service.py:704 AP 關係人(GET,BE 主專案),補歸屬檢查
audit_round_route.py:258 → assessment_result_app_service.py:392 稽核發現矩陣(GET),補歸屬檢查
audit_round_route.py:333 → assessment_result_app_service.py:695 風險清單(GET),補歸屬檢查
audit_round_route.py:419 → poam_app_service.py:246 POA&M 列表(GET),補歸屬檢查
audit_round_route.py:429 → poam_app_service.py:271 POA&M 單筆(GET),補歸屬檢查
jedi-compliance-audit/jedi_compliance_audit/common/guard.py:48 assert_project_role(套件端,注意與下面那支簽章不同)
jedi-compliance-audit/jedi_compliance_audit/common/guard.py:58 assert_project_role_fallback(套件端,注意與上面那支簽章不同)