FR-035 SSP Table Rename — 收尾 SUMMARY

日期:2026-06-10 | Branch:feature/ssp-table-rename(BE + jedi-oscal monorepo 同名) 狀態:DEV 完成並驗證;STG/POC/PROD 待套用;兩 repo 待 push

§1

一句話

把冗長的 system_security_plans* 三張 OSCAL 表改名為 ssp(s)_*(表名 only、欄位不動),跨 BE + jedi-oscal 套件 + DB,用 in-place ALTER RENAME,DEV 零丟失零回歸。

§2

Commits

Repo Commit 內容
jedi-oscal monorepo 278bfbb ORM 改名(8 檔:tablename + index + FK 字串)
jedi-oscal monorepo bb192e9 bump 0.0.21 → 0.0.22
BE 3ca0ad9d BE FK 字串 + 6 條 raw SQL + 測試斷言 + 可攜 migration
BE dddc6335 FR-035 feature 文件(design + plan + 登記表)
BE 7b44e8d2 pin jedi-oscal 0.0.22
BE (收尾本批) changelog + 文件清理 + 本 SUMMARY

jedi-oscal 0.0.22 已推 Nexus(pypi-hosted)。

§3

改動範圍

  • 表名system_security_plans→sspssystem_security_plan_control_implementations→ssp_control_implementationssystem_security_plans_system_characteristics→ssp_system_characteristics
  • 欄位完全不動system_security_plan_id / ssp_id 等保留)。
  • migration scripts/sql/2026-06-10-ssp-table-rename.sql:3 表 + 3 sequence + 3 pkey + 3 uid_key + 6 index + 5 條舊名 FK constraint,全 ALTER RENAME
§4

行為差異

  • 對外 API / FE 行為無差異(FE 用 API field,不碰 DB 表名;envelope shape 不變)。
  • 純內部 schema 命名整理。
§5

驗證結果(DEV)

  • migration:BEGIN/ROLLBACK 乾跑零錯 → 真實套用,9 FK 全 valid,資料保留 219/2375/200。
  • BE boot:無 NoReferencedTableError
  • live API e2e:GET /ssp/<uid>/control-implementations 回真實控制項,log 零 SQL 錯誤。
  • pytest baseline diff:零新回歸。
  • Nexus 0.0.22 artifact:拆 symlink 後實體裝出驗證 tablename = 新名、源碼零舊名。
§6

規範文件齊全度

  • ✓ changelog docs/changelog/2026-06-10-tweak-ssp-table-rename.md
  • ✓ FR design + implementation-plan + README 登記
  • ✓ 本 SUMMARY
  • ✓ 橫向文件:docs/claude/database-schema.md + 2 doc-gen 腳本 + 5 BE prose 註解已清
  • ✓ memory feedback(symlink-pin 驗證 + table rename lockstep)
§7

部署 handover(未做,user-gated)

  1. STG → POC → PROD 逐一套 migration:每環境 lockstep(先對該環境 catalog 重驗 constraint 名 → 套 2026-06-10-ssp-table-rename.sql → 部署 BE pin 0.0.22)。⚠️ 順序不可顛倒:舊 BE 對改名表會炸。
  2. push 兩 repo:BE + jedi-oscal monorepo(jedi-oscal gitlab push 需 user 憑證)。
  3. 重跑 ERD tbls + gen_erd 更新 docs/system-design/database/erd/tbls/oscal.system_security_plans*.md(生成物)。
§8

已知 follow-up

  • ERD tbls 生成檔仍是舊表名(重跑工具即更新,不手改)。
  • (既有、非本 arc)docs/system-design/scripts/generate_db_schema_docx.py:34 hardcoded DB 密碼,待 user 決定改讀 env。
  • 既有 4 個 pytest fail(template_module_frame_id raw-UPDATE 斷言 vs ORM 寫入不符 + integration 3 個)與本次無關,留既有 follow-up。