FR-135 · 第三期討論稿 · 2026-10-13
三份法定文件 docx 匯出、資訊系統版本支援期剩餘天數徽章——兩張卡、文件格式已裁
決策者已在 CM-2706 看過假資料雛形,並於 2026-10-13 裁定第三期範圍:X1 三份法定文件匯出、S1 支援期剩餘天數徽章。本稿把兩張卡展開成可開工的規格:每件事列出現在系統裡有什麼(附檔案行號或 DEV 查詢)、資料從哪來、畫面改哪裡。通報、提醒、支援期到期通知併入平台級 FR「週期任務與條件通知」(FR-137),設計草案集中在 phase3-deferred-to-recurring-tasks-fr。
狀態:討論稿(D4 已裁,展開規格) | 日期:2026-10-13 | 輸入:Notion CM-2711、FR-135-STATE.md「功能補齊」範圍、雛形
| 日期 | 變更 | 對應 |
|---|---|---|
| 2026-10-13 | v1:第三期兩卡規格(X1 三份法定文件、S1 支援期徽章);通報、提醒相關設計草案移至 phase3-deferred-to-recurring-tasks-fr | CM-2710、CM-2711 |
整案一句話:CRA 專案結案時從已填資料產出三份法定文件(docx,顧問可再改),資訊系統版本表直接看得到支援期還剩幾天。CMMC 專案一個像素都不變。
給非工程讀者的背景:CRA(歐盟網路韌性法)要求製造商備妥技術文件(Annex VII)、給使用者的資訊(Annex II)、EU 符合性聲明,並對每個產品版本宣告支援期。這些內容大多已在 CRA 專案各頁填過(受評標的、風險評估、參與單位、資訊系統版本),本期把它們組成可下載的文件,並讓支援期快到的版本一眼看得出來。
本期前提(決策者 2026-10-13 已裁,不再討論)
① 第三期兩張卡,順序 X1 → S1。② D4:文件只出 docx(見「已裁決策」節)。③ 通報、提醒排程、支援期到期寄信不在本期,併入 FR-137「週期任務與條件通知」;掃描結果加處理狀態屬 FR-134。④ 雛形不改,要改的點寫在本稿。
| 卡 | 做什麼 | 產出 | 決策者檢查法 |
|---|---|---|---|
| X1 三份法定文件 | 三份 docx 範本(Annex VII 技術文件、Annex II 使用者資訊、EU 符合性聲明),沿用 docxtpl 產生器 | 範本三份、組資料的 service、下載端點 | 對照雛形 phase3-docs-export:下載的 docx 欄位對得上畫面填的值 |
| S1 支援期到期畫面 | 資訊系統版本子表加「剩餘天數」徽章與篩選 | FE 為主 | 對照雛形 phase3-support-reminder 版本列 |
兩卡互不依賴,可平行;X1 排前面,因為決策者先看得到成品。
%%{init: {'theme':'base','themeVariables':{'primaryColor':'#E2F0F1','primaryTextColor':'#14201F','primaryBorderColor':'#0E7C86','secondaryColor':'#EEF2F3','secondaryTextColor':'#14201F','tertiaryColor':'#FBFCFC','tertiaryTextColor':'#14201F','lineColor':'#4A5A5C','textColor':'#14201F','mainBkg':'#E2F0F1','nodeBorder':'#0E7C86','nodeTextColor':'#14201F','edgeLabelBackground':'#FBFCFC','titleColor':'#14201F','clusterBkg':'#FBFCFC','clusterBorder':'#E4EAEB','actorBkg':'#E2F0F1','actorTextColor':'#14201F','actorBorder':'#0E7C86','actorLineColor':'#C7D1D2','signalColor':'#4A5A5C','signalTextColor':'#14201F','labelBoxBkgColor':'#EEF2F3','labelBoxBorderColor':'#C7D1D2','labelTextColor':'#14201F','loopTextColor':'#14201F','noteBkgColor':'#F6EBD5','noteTextColor':'#14201F','noteBorderColor':'#9C6B12','activationBkgColor':'#EEF2F3','activationBorderColor':'#C7D1D2','sequenceNumberColor':'#FFFFFF'}}}%%
flowchart LR
SC[受評標的 ext 欄] -.-> X[X1 三份 docx]
R[風險評估 ssp_risks] -.-> X
V[資訊系統版本<br/>information_system_versions] -.-> X
P[參與單位 Party] -.-> X
V -.-> S[S1 剩餘天數徽章]
座標皆於 2026-10-12 實查。FE 路徑相對 compliance-manager-fe/。
| 接入點 | 現況(證據) | 本期動作 |
|---|---|---|
| docx 產生器 | app/oscal/service/export/ssp_docx_generator.py(260 行)用 DocxTemplate(:23)+ python-docx 補章節;範本路徑寫死 templates/ssp/ssp_cmmc_template.docx(:29),建構子可傳別的範本(:52);資料模型 ssp_export_model.py(169 行)已有 Party、盤點、元件 |
X1 沿用產生器的「範本+context」作法,各文件各寫 context 組裝 |
| CRA 範本池 | app/oscal/templates/cra/ 現有 5 份(CVD 政策、安全通告、支援期聲明、更新與汰除程序、使用者資訊),由 scripts/generate_cra_doc_templates.py(309 行)產;是空骨架、沒有 {{ }} 欄位(grep 0 處) |
X1 另加 3 份帶欄位的範本,不改這 5 份 |
| 受評標的 ext 欄 | app/oscal/service/framework_library_defaults/cra_2024.py:13-53 定義 ext:cra-* 欄(用途、環境、分級、產品名與識別、SBOM 取得、文件位置、支援期結束日) |
X1 讀取 |
| 風險評估 | oscal.ssp_risks(R1-a a6cef11f3),含 threat_ids 依據標準 |
X1 讀取(Annex VII 風險評估、符合性聲明的適用標準) |
| Party 角色 | cra_2024.py:136-138 預建「Manufacturer」「Vulnerability contact」兩個 party(role manufacturer/vulnerability-contact),名稱含 (to be filled) 佔位 |
X1 三份文件讀同一個 party |
| 資訊系統版本 | compliance.information_system_versions(jedi-asset migration 006)有 support_end_date、support_end_reason;DEV 0 筆;FE src/views/information-system/InformationSystemVersionTable.vue(169 行)支援期欄 :136-141 |
S1 加徽章;X1 讀支援期 |
| 顯示時區 | FE 顯示時區寫死 src/utils/dateTime.js:9(getDisplayTimeZone()) |
S1 以此算「今天」 |
CRA 專案的「匯出」多三個下載:Annex VII 技術文件、Annex II 使用者資訊、EU 符合性聲明(Annex V)。都是 docx,顧問下載後可再改字(D4)。
沿用 SspDocxGenerator 的路線:DocxTemplate(範本).render(context)。三份範本各配一支 context 組裝函式,放新檔(不往 260 行的 ssp_docx_generator.py 塞,也不改它的 CMMC 流程);範本放 app/oscal/templates/cra/,檔名加 -Export 之類後綴與 C3 五份空骨架區分。範本產生方式比照 scripts/generate_cra_doc_templates.py 用腳本產(可重產、可 diff),不手工編 docx。
| 文件 | 主要欄位 | 來源 |
|---|---|---|
| Annex VII 技術文件 | 產品描述與預期用途、設計架構、風險評估、採用標準、漏洞處理流程、支援期、SBOM 取得方式 | 受評標的 ext:cra-intended-purpose/ext:cra-operational-environment/ext:cra-product-class(cra_2024.py:13-53)、ssp_risks 全表(含 threat_ids 依據標準)、控制項實作說明、information_system_versions、ext:cra-sbom-access |
| Annex II 使用者資訊 | 製造商名稱地址聯絡、漏洞通報窗口、產品識別、預期用途、可預見誤用、符合性聲明網址、支援期結束日、SBOM 取得處 | Party manufacturer/vulnerability-contact、ext:cra-product-name/ext:cra-product-identifier、ext:cra-intended-purpose/ext:cra-foreseeable-misuse、ext:cra-doc-location、版本 support_end_date(或 ext:cra-support-end-date)、ext:cra-sbom-access;條文順序照 docs/reference/CRA/annex-I-II-original-text.md Annex II 第 1~9 項 |
| EU 符合性聲明 | 產品名與識別、製造商、聲明唯一性、適用標準、簽署欄 | Party、受評標的 ext、ssp_risks.threat_ids 依據標準;簽署人與日期留空給人填 |
匯出權限比照既有 SSP 匯出(參與者可讀即可下載)。
資訊系統盤點的版本子表,每個版本多一個「剩餘天數」徽章(超過 90 天灰、90 天內橘、30 天內紅、已過期深紅),並可篩選「90 天內到期」。不另建產品主檔,讀既有 support_end_date。
InformationSystemVersionTable.vue:136-141 已有支援期欄,加徽章即可;剩餘天數以 src/utils/dateTime.js 的顯示時區算「今天」,純日期照字面(不換算)。✅ D4 — 文件格式
定案:只出 docx,沿用 ssp_docx_generator.py 的 docxtpl 路線,顧問可再改字;不做 PDF。
理由:法定文件交出去前幾乎一定要人改;docx 產生器已有、已出貨。
被排除:common/util/html_pdf.py(HTML 轉 PDF,27 行)是第二條路,本期不做——產出不可改字,且要另維護一套 HTML 版型。
D1、D2、D3、D5、D6 作廢(2026-10-13 改裁,見歸檔 phase3-deferred-to-recurring-tasks-fr)。
| 順序 | 卡 | 規模 | 主要檔案 | 前置 |
|---|---|---|---|---|
| 1 | X1 三份法定文件 | M | 範本產生腳本、三份 docx、context 組裝新檔、下載端點 | 無 |
| 2 | S1 支援期到期畫面 | S | FE InformationSystemVersionTable.vue |
無(可與 X1 平行) |
兩卡都不建新表、不寫 migration。
CRA.ART.14.RP 的證據由客戶上傳 ENISA 平台送件截圖。source_scan_findings 表結構。沿革見 handoff/FR-135-LOG.md 與 git log。