FR-037 · 2026-06-11 · 欄位 rename 計畫(定案)

把欄位名改成 OSCAL 對齊名稱

只列需要改名的欄位(改名前 → 改名後),標必填等級 + 參考依據。未異動的不列。已符合 OSCAL 的欄位另列「免改」確認區。

統一規則:DB 欄位 + Python 屬性一律 snake_case。遇到撞 PK id / Python 保留字 / builtin(即 id / class / type 三類)→ 一律加物件前綴成 <物件>_<欄>(如 group_idgroup_classcomponent_type)。OSCAL 精準 key(連字號、idclasstype)一律由匯出/匯入 mapper 轉(與現有 out["last-modified"] 同一套)。整數 PK id 不動。
必填等級:Req 根必填 Opt* 用到才必填 Opt 選填 · 衝突=該欄因 id/class/type 衝突採物件前綴

uiduuid(OSCAL 用 uuid 的表)

OSCAL 識別碼欄位叫 uuid。下列表的 assembly 在 OSCAL 確實有 uuid 欄(且為必填)→ 把我們的 uid 改名 uuid整數 PK id 不動

改名必填參考依據(schema · required)
oscal.catalogsuiduuidReqcatalog_schema · catalog.required=[metadata, uuid]
oscal.profilesuiduuidReqprofile_schema · profile.required=[imports, metadata, uuid]
oscal.oscal_partiesuiduuidReqcommon · party.required=[uuid, type]
oscal.oscal_locationsuiduuidReqcommon · location.required=[uuid]
oscal.sspsuiduuidReqssp_schema · system-security-plan.required 含 uuid
oscal.ssp_componentsuiduuidReqssp_schema · system-component.required=[description, status, title, type, uuid]
oscal.ssp_inventory_itemsuiduuidReqssp_schema · inventory-item.required=[description, uuid]
oscal.ssp_leveraged_authorizationsuiduuidReqssp_schema · leveraged-authorization.required=[uuid, title, party-uuid, date-authorized]
oscal.ssp_control_implementationsuiduuidReqssp_schema · implemented-requirement.required=[control-id, uuid]
oscal.ssp_control_implementation_objectivesuiduuidReqssp_schema · statement.required=[statement-id, uuid]
oscal.assessment_plansuiduuidReqap_schema · assessment-plan.required=[import-ssp, metadata, reviewed-controls, uuid]
oscal.assessment_plan_tasksuiduuidReqap_schema · task.required=[title, type, uuid]
oscal.assessment_resultsuiduuidReqar_schema · assessment-results.required=[import-ap, metadata, results, uuid]
oscal.assessment_result_datasuiduuidReqar_schema · result.required=[description, reviewed-controls, start, title, uuid]
oscal.assessment_result_findingsuiduuidReqap_schema · finding.required=[description, target, title, uuid]
⚠️ 不要改的 uidcatalog 的 catalog_groups / catalog_controls / catalog_control_parts / catalog_control_parameters、以及 oscal_rolesoscal_metadatasssp_system_characteristicsassessment_plan_groups / _controlsassessment_result_controls / _evidencesoscal_documents —— 這些 assembly 在 OSCAL 沒有 uuid(用 token id 或本身無識別碼,或為本專案擴充/內部表),它們的 uid 是內部欄位,保持 uid 不改

其他改名(純名稱對齊)

名稱不同但語意一致,直接改名對齊 OSCAL。

改名OSCAL 出處必填參考依據(schema · required)
catalog_groupsnamegroup_id衝突
現存代碼如 A.5=OSCAL group.id
catalog: group.idOptcatalog_schema · group.required=[title](id 選填,TokenDatatype「Group Identifier」)
catalog_groupsdescriptiontitle
現存顯示名;OSCAL group 無 description 欄、只有 title
catalog: group.titleReqcatalog_schema · group.required=[title]
ssp_system_characteristicsnamesystem_namessp: system-characteristics.system-nameReqssp_schema · system-characteristics.required 含 system-name
ssp_control_implementationscontrol_identifiercontrol_idssp: implemented-requirement.control-idReqssp_schema · implemented-requirement.required=[control-id, uuid]
ssp_control_implementation_objectivesstatement_identifierstatement_idssp: statement.statement-idReqssp_schema · statement.required=[statement-id, uuid]
assessment_result_datasstarted_atstartar: result.startReqar_schema · result.required 含 start
assessment_result_datascompleted_atendar: result.endOptar_schema · result.props 含 end(不在 required)
assessment_result_evidencesreference_urlhrefar: relevant-evidence.hrefOptar_schema · relevant-evidence.required=[description](href 選填)

已符合 OSCAL・免改(確認用)

這些欄位現名已是「物件前綴」或已對齊 OSCAL,不需改名,列出供核對。

表 . 欄位OSCAL 出處原因(免改)
catalog_controls.control_idcatalog: control.id已是 control_id(id 衝突的物件前綴名)
catalog_control_parameters.param_idcatalog: parameter.id已是 param_id
oscal_roles.role_idcommon: role.id已是 role_id
oscal_props.prop_classcommon: property.class已是 prop_class(class 保留字的物件前綴名)
oscal_parties.party_typecommon: party.type已是 party_type(type builtin 的物件前綴名)
ssp_components.component_typessp: system-component.type已是 component_type
ssp_leveraged_authorizations.party_uuid / date_authorizedssp: leveraged-authorization.party-uuid / date-authorized已對齊(連字號由 mapper 轉)
oscal_responsible_parties.role_id / party_uuidcommon: responsible-party.role-id / party-uuids已對齊
各表 title / description / status / version / href / name(party)對應 OSCAL 同名欄已是 OSCAL 原名

詞彙 / 結構差異(非單純改名,另案處理)

這些不是「改個欄名」就好——牽涉值域轉換或 OSCAL 巢狀結構,列出避免誤當改名。

表 . 欄位OSCAL 出處差異類型必填
ssp_system_characteristics.statusssp: status.state巢狀(status 物件)+ 詞彙:active/archived → operational/under-development/…Req
ssp_system_characteristics.scope_descriptionssp: authorization-boundary.descriptionOSCAL 為巢狀 authorization-boundary 物件Req
ssp_system_characteristics.system_identifierssp: system-ids[].idOSCAL 為陣列 system-ids[](多筆 + identifier-type),現為單值Req
assessment_plan_tasks.task_typeap: task.type詞彙:manual/automated/hybrid(占用)→ OSCAL milestone/actionReq
assessment_result_controls.verdictar: finding-target.status.state詞彙 pass/fail/partial/na → satisfied/not-satisfied,且 OSCAL 掛在 finding-target 非 controlReq

新增欄位(直接用 OSCAL 對齊名)

非改名、是補欄/補表;欄名一律 OSCAL snake,token id/class/type 同樣物件前綴。完整清單見 verification-matrix.md / enhancement-table

表(新欄/新表)新欄位(OSCAL 對齊)必填
ssps / assessment_plans / assessment_results / poamsimport_profile / import_ssp / import_ap / import_ssp(存被參照 uuid)Req
ssp_control_implementationsdescription(control-implementation 必填)Req
assessment_result_datasdescription(result 必填)Req
🆕 ssp_system_information_typestitle / description / system(categorization) / impact base·selectedReq(title/desc)
🆕 security-impact-level(於 sys-char)security_objective_confidentiality / _integrity / _availabilityOpt*
🆕 ssp_system_users / ssp_authorized_privilegesuuid / role_ids ; title / functions_performedOpt*
🆕 ssp_by_componentscomponent_uuid / uuid / description / implementation_statusOpt*
🆕 ssp_set_parametersparam_id / valuesOpt*
🆕 ssp_diagramsuuid / caption / descriptionOpt*
🆕 assessment_result_finding_targetstarget_type / target_id / status / implementation_statusReq(finding 必填 target)
🆕 assessment_result_observationsuuid / description / methods / collectedOpt*
🆕 assessment_result_risksuuid / title / description / statement / statusOpt*
🆕 oscal_resources / oscal_hashes / oscal_document_ids / oscal_revisionsback-matter uuid/href/value/text ; value+algorithm ; identifier ; versionOpt*
🆕 profile_importshref / include_all / with_child_controls / matchingReq(profile 必填 imports)
🆕 catalog props/links/子控制項/param constraints、part_id/group_class/control_class/part_class/param_classOSCAL 對齊名(class 類用物件前綴)Opt