本卡屬 FR-161(母卡見「母卡」欄),是 FR-161 開卡時順手查到的既有缺口,接在卡 7 之後。先查清楚範圍再改。
OSCAL 檔案最後面有一段「附錄」(back-matter),用來列文件引用到的外部檔案,例如政策文件、程序書、網路圖。我們匯出系統安全計畫時,這段一直是空的:匯出程式只讀某一張表,但主專案從來沒有寫過那張表;程序書池是另一張表,匯出程式不讀它。所以客戶拿到的 OSCAL 檔看不到任何程序書。FR-161 讓客戶的事前資料進了程序書池,這個缺口會讓它們一樣出不去。
~/Projects/Jedicogy/module/jedi-python-package/jedi-oscal-v2/jedi_oscal_v2/app/service/io/oscal_io_service.py
約 521 行 _build_back_matter(metadata_id):只讀 resources 表(套件 infra/model/base/oscal_resource.py,表名 resources)
約 717 行 匯出 SSP 時呼叫 _build_back_matter(ssp.metadata_id)
主專案:grep OscalResource / oscal_resources 在 app/ 沒有任何寫入端
程序書池:oscal.ssp_reference_documents(套件 jedi-compliance-audit),匯出不讀
先做盤點,回寫問決策者選方向再動手。
file_id、description)與控制項/評估目標掛載(_mappings)要對應到 OSCAL 的哪裡——back-matter resources(每份檔一個 resource,rlinks 指檔案)、控制項的 links(rel="reference"、href="#<resource-uuid>")。看 oscal_io_service.py 匯出控制項時有沒有讀 links。resources 表(兩份真相,要處理同步)。首腦傾向 ①。back-matter.resources 每份程序書一筆,有掛控制項的那條控制項 links 指到它。feature/FR-139。在當前 branch 工作,不切 branch;branch 不對就停下回報。git status,有不是你的改動就停下回報,不動手。顯式 git add <檔名>,禁 -am;只 add 自己改的檔。禁止 reset --hard、checkout .、clean、不帶路徑的 stash、--force。@transaction;repo 繼承 BaseRepositoryImpl;需要新 domain service 就在 __init__ 加參數並在 di_containers/ wiring。改 __init__ 簽章必同步 DI,驗收要實打端點(DI 簽章漂移只在端點被打時才炸)。docs/claude/domain-capabilities.md;能 reuse 就 reuse、差一點就加參數,都沒有才新增。wc -l 目標檔。