Bug P / Q / R FIXED — docx import preview PartiesSection 3 個 form bug

項目 內容
收尾日期 2026-05-25
Branch feature/ssp-oscal-alignment
Spec docs/features/FR-028-2605-ssp-oscal-alignment/design.md §11.35 / §11.36 / §11.37
Plan docs/features/FR-028-2605-ssp-oscal-alignment/implementation-plan-bug-pqr.md
Handoff (本期接手) docs/features/FR-028-2605-ssp-oscal-alignment/handoff/2026-05-25-bug-p-q-r-parties-form-handoff.md
Changelog docs/changelog/2026-05-25-fix-bug-pqr-parties-form.md
上一 bug 收尾 docs/features/FR-028-2605-ssp-oscal-alignment/handoff/2026-05-25-bug-o-FIXED-SUMMARY.md

1. Commits 清單

FE (2 個 commits — 全 FE)

Hash Type 內容
551c7dc fix Bug R — confirm 後 invalidate ModuleFrame / SSP parties cache
fa43b79 fix Bug Q + Bug P — PartiesSection 補 role Dropdown + button wording 對 party_type 分流

BE (Phase Z 收尾本 commit 後加)

Hash Type 內容
(本 commit) docs design.md §11.35-37 + index + changelog + plan 副本 + FIXED-SUMMARY + 原 handoff ✓ FIXED 標頭

2. 跨 repo 範圍

Repo Local commits 數 套件版號
compliance-manager-be 1(純 docs 收尾) 不 bump(無 code 改動)
compliance-manager-fe 2 不 bump(feature branch 內部 fix)
jedi-oscal 0 不 bump(本期 BE / 套件無異動)
jedi-common 0 不 bump

push 規模:1 BE + 2 FE = 3 commits(不含已 push 的 Bug O 收尾)。等 user 拍板 push


3. 行為差異一句話

對既有 mf 重 docx import → Step 3 預覽 → 「參與人員與單位」tab:org row 顯示「連結組織單位」+ 建築 icon、person row 顯示「連結帳號」+ 人形 icon;兩 row 都有 9 個 OSCAL role keys 的 Dropdown 可選;改 party 確認後回 template-edit page 立刻顯示新值不需 reload。


4. 規範文件齊全度


5. 已知 follow-up

5.1 jedi-oscal docx_revision_normalize tmp file lifecycle bug

reproduce Bug P 時意外發現:對既有 mf 重 docx import 上傳 fixture (bug-o-e2e-fixture.docx) 時,BE 回 200 但 oscal.ssp_docx_parse_jobs.id=172 status=failed

[2026-05-25 17:22:52,413] WARNING [app.oscal.service.ssp_docx_import_app_service]
  [ssp_docx_import_app_service.upload_and_parse:234]:
  docx revision normalize skipped (parse_uid=ab961f70-02d9-42ab-983a-2bf6f094038c):
  Package not found at '/var/folders/g6/.../tmpm2kuaosj.docx'

jedi-oscal 內部 tmp file 已被刪卻仍引用。擋住本期 Phase 0.1 / 0.2 playwright e2e 走完整 confirm flow

  • 不在本期 P/Q/R scope(純 jedi-oscal 內部 bug,跟 parties form 無關)
  • 下次 jedi-oscal 進版時順手檢修
  • 影響本期:Bug P/Q wording + Dropdown 已 code-level verify;Bug R cache fix 邏輯 sound 但留 user 手測 verify(無法 e2e 截圖 confirm flow)

5.2 BE/FE 版號對齊(per user 拍板)

本期 BE 0 code change(純 docs),FE 2 commits 全 fix。user 拍板 push 後決定要不要進版(本期建議不進版,跟 Bug O 一起累計到下個 release 再 bump)。


6. 部署 handover

項目 動作
BE 重啟 不需要(BE code 0 change)
FE rebuild 需要(vite hot reload 在 dev 自動,prod 部署要重 build)
DB migration
i18n compile 不需(FE i18n json 直接 import,無 pybabel compile step)
jedi- 進版* 無(本期不動套件)

7. E2E 驗證紀錄

階段 結果
Pre-flight ✓ 兩 repo branch / working tree / origin sync 都對
§6 H-6 cleanup verify ✓ 4 OSCAL 表 org_unit_id 全 0 — Bug H-6 / Bug O 沒回頭
§1.4 Bug R BE write verify ✓ BE log strategy.write_parties returned parties_written=5 + import_summary.parties_written=5 雙重 verify
Phase 0.1 playwright reproduce Bug P ⚠️ 受 jedi-oscal upload bug 擋(標 follow-up 5.1)— Bug P fix scope 由 code reasoning 確認
Phase 0.3 探 useSspParties ✓ 確認存在於 compliance-manager-fe/src/composables/useSspParties.js,Bug R fix 兩 mode 都 cover
BE pytest smoke ✓ 192 passed 0 fail(BE 沒退化)
Playwright e2e confirm flow ⚠️ jedi-oscal upload bug 擋 — 留 user 手測 verify Bug R cache 邏輯

8. 跟 H-N + Bug O arc 的關聯

Bug P / Q / R 是 H-N arc 第 11 ~ 13 個 follow-up,跟 Bug O 改動 scope 解耦(Bug O 是 diff stepper 4 key annotation + TabView refactor,本期 P/Q/R 是 parties form UI 三個獨立 bug)。

完成後 H-N arc + Bug O + P/Q/R 整段 docx import update mode user-facing 邏輯收齊,可進 Phase 5 OSCAL Export deferred plan。剩 jedi-oscal docx revision normalize tmp file bug(follow-up 5.1)等下次套件進版檢修。


9. user 手測 verify checklist(建議步驟)

由於 jedi-oscal upload bug 擋 e2e flow,請 user 依下表手測:

Check 步驟 預期
Bug P wording (org) docx import → Step 3 → 「參與人員與單位」tab → 看 org row 的 link button 顯示「連結組織單位」+ 建築 icon
Bug P wording (person) 同上 → 看 person row 的 link button 顯示「連結帳號」+ 人形 icon
Bug P 開 dialog 點 org row 「連結組織單位」 dialog 開「連結到組織單位」標題,無 console error
Bug Q dropdown (org) org row 看「角色」欄 顯示 Dropdown(unless 保留現值),可選 9 個 role keys
Bug Q dropdown (person) person row 看「角色」欄 同上
Bug Q read-only mode 把 org / person 切 keep_current(保留現值) 顯示 read-only label 而非 Dropdown,加「保留現值」Tag
Bug R cache 改某 party name → 確認匯入 → router push 回 template-edit page 「責任單位 / 責任人員」tab 立刻顯示新 name,不需手動 reload

若 jedi-oscal upload bug 在手測前已修,可直接走完整 e2e。