refactor(plating-sec): sweep all ACL CSVs to new role group xmlids

Phase B of permissions overhaul. Mechanical text replacement across
11 ir.model.access.csv files:
  - group_fusion_plating_operator    -> fusion_plating.group_fp_technician
  - group_fusion_plating_supervisor  -> fusion_plating.group_fp_shop_manager_v2
  - group_fusion_plating_manager     -> fusion_plating.group_fp_manager
  - group_fusion_plating_admin       -> fusion_plating.group_fp_owner
  - group_fp_estimator (configurator)-> fusion_plating.group_fp_sales_rep
  - group_fp_accounting              -> fusion_plating.group_fp_manager
  - group_fp_receiving               -> fusion_plating.group_fp_shop_manager_v2
  - group_fp_shop_manager (legacy)   -> fusion_plating.group_fp_manager
  - group_fusion_plating_cgp_officer -> fusion_plating.group_fp_quality_manager
  - group_fusion_plating_cgp_designated_official -> fusion_plating.group_fp_owner

Backward-compat: old group xmlids still resolve (Phase A's implied_ids
chains keep old ACLs working for users still holding old groups).
This sweep ensures future-state correctness: when old groups are deleted
after the 30-day rollback window, ACLs continue resolving via the new
group xmlids.

Also adds fusion_plating/tests/test_acl_migration.py with sample-based
per-role access checks. The 2 CAPA tests are expected to fail until
Phase C implements the Manager/QM quality split.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-05-24 01:14:02 -04:00
parent bdf676e05a
commit 8eb2c2de95
26 changed files with 421 additions and 364 deletions

View File

@@ -1,28 +1,28 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_fp_sds_operator,fp.sds.operator,model_fusion_plating_sds,fusion_plating.group_fusion_plating_operator,1,0,0,0
access_fp_sds_supervisor,fp.sds.supervisor,model_fusion_plating_sds,fusion_plating.group_fusion_plating_supervisor,1,1,1,0
access_fp_sds_manager,fp.sds.manager,model_fusion_plating_sds,fusion_plating.group_fusion_plating_manager,1,1,1,1
access_fp_chemical_operator,fp.chemical.operator,model_fusion_plating_chemical,fusion_plating.group_fusion_plating_operator,1,0,0,0
access_fp_chemical_supervisor,fp.chemical.supervisor,model_fusion_plating_chemical,fusion_plating.group_fusion_plating_supervisor,1,1,1,0
access_fp_chemical_manager,fp.chemical.manager,model_fusion_plating_chemical,fusion_plating.group_fusion_plating_manager,1,1,1,1
access_fp_training_type_operator,fp.training.type.operator,model_fusion_plating_training_type,fusion_plating.group_fusion_plating_operator,1,0,0,0
access_fp_training_type_supervisor,fp.training.type.supervisor,model_fusion_plating_training_type,fusion_plating.group_fusion_plating_supervisor,1,0,0,0
access_fp_training_type_manager,fp.training.type.manager,model_fusion_plating_training_type,fusion_plating.group_fusion_plating_manager,1,1,1,1
access_fp_training_record_operator,fp.training.record.operator,model_fusion_plating_training_record,fusion_plating.group_fusion_plating_operator,1,0,0,0
access_fp_training_record_supervisor,fp.training.record.supervisor,model_fusion_plating_training_record,fusion_plating.group_fusion_plating_supervisor,1,1,1,0
access_fp_training_record_manager,fp.training.record.manager,model_fusion_plating_training_record,fusion_plating.group_fusion_plating_manager,1,1,1,1
access_fp_exposure_operator,fp.exposure.monitoring.operator,model_fusion_plating_exposure_monitoring,fusion_plating.group_fusion_plating_operator,1,0,0,0
access_fp_exposure_supervisor,fp.exposure.monitoring.supervisor,model_fusion_plating_exposure_monitoring,fusion_plating.group_fusion_plating_supervisor,1,1,1,0
access_fp_exposure_manager,fp.exposure.monitoring.manager,model_fusion_plating_exposure_monitoring,fusion_plating.group_fusion_plating_manager,1,1,1,1
access_fp_jhsc_operator,fp.jhsc.operator,model_fusion_plating_jhsc,fusion_plating.group_fusion_plating_operator,1,0,0,0
access_fp_jhsc_supervisor,fp.jhsc.supervisor,model_fusion_plating_jhsc,fusion_plating.group_fusion_plating_supervisor,1,1,1,0
access_fp_jhsc_manager,fp.jhsc.manager,model_fusion_plating_jhsc,fusion_plating.group_fusion_plating_manager,1,1,1,1
access_fp_jhsc_meeting_operator,fp.jhsc.meeting.operator,model_fusion_plating_jhsc_meeting,fusion_plating.group_fusion_plating_operator,1,0,0,0
access_fp_jhsc_meeting_supervisor,fp.jhsc.meeting.supervisor,model_fusion_plating_jhsc_meeting,fusion_plating.group_fusion_plating_supervisor,1,1,1,0
access_fp_jhsc_meeting_manager,fp.jhsc.meeting.manager,model_fusion_plating_jhsc_meeting,fusion_plating.group_fusion_plating_manager,1,1,1,1
access_fp_incident_operator,fp.incident.operator,model_fusion_plating_incident,fusion_plating.group_fusion_plating_operator,1,1,1,0
access_fp_incident_supervisor,fp.incident.supervisor,model_fusion_plating_incident,fusion_plating.group_fusion_plating_supervisor,1,1,1,0
access_fp_incident_manager,fp.incident.manager,model_fusion_plating_incident,fusion_plating.group_fusion_plating_manager,1,1,1,1
access_fp_ppe_operator,fp.ppe.issuance.operator,model_fusion_plating_ppe_issuance,fusion_plating.group_fusion_plating_operator,1,0,0,0
access_fp_ppe_supervisor,fp.ppe.issuance.supervisor,model_fusion_plating_ppe_issuance,fusion_plating.group_fusion_plating_supervisor,1,1,1,0
access_fp_ppe_manager,fp.ppe.issuance.manager,model_fusion_plating_ppe_issuance,fusion_plating.group_fusion_plating_manager,1,1,1,1
access_fp_sds_operator,fp.sds.operator,model_fusion_plating_sds,fusion_plating.group_fp_technician,1,0,0,0
access_fp_sds_supervisor,fp.sds.supervisor,model_fusion_plating_sds,fusion_plating.group_fp_shop_manager_v2,1,1,1,0
access_fp_sds_manager,fp.sds.manager,model_fusion_plating_sds,fusion_plating.group_fp_manager,1,1,1,1
access_fp_chemical_operator,fp.chemical.operator,model_fusion_plating_chemical,fusion_plating.group_fp_technician,1,0,0,0
access_fp_chemical_supervisor,fp.chemical.supervisor,model_fusion_plating_chemical,fusion_plating.group_fp_shop_manager_v2,1,1,1,0
access_fp_chemical_manager,fp.chemical.manager,model_fusion_plating_chemical,fusion_plating.group_fp_manager,1,1,1,1
access_fp_training_type_operator,fp.training.type.operator,model_fusion_plating_training_type,fusion_plating.group_fp_technician,1,0,0,0
access_fp_training_type_supervisor,fp.training.type.supervisor,model_fusion_plating_training_type,fusion_plating.group_fp_shop_manager_v2,1,0,0,0
access_fp_training_type_manager,fp.training.type.manager,model_fusion_plating_training_type,fusion_plating.group_fp_manager,1,1,1,1
access_fp_training_record_operator,fp.training.record.operator,model_fusion_plating_training_record,fusion_plating.group_fp_technician,1,0,0,0
access_fp_training_record_supervisor,fp.training.record.supervisor,model_fusion_plating_training_record,fusion_plating.group_fp_shop_manager_v2,1,1,1,0
access_fp_training_record_manager,fp.training.record.manager,model_fusion_plating_training_record,fusion_plating.group_fp_manager,1,1,1,1
access_fp_exposure_operator,fp.exposure.monitoring.operator,model_fusion_plating_exposure_monitoring,fusion_plating.group_fp_technician,1,0,0,0
access_fp_exposure_supervisor,fp.exposure.monitoring.supervisor,model_fusion_plating_exposure_monitoring,fusion_plating.group_fp_shop_manager_v2,1,1,1,0
access_fp_exposure_manager,fp.exposure.monitoring.manager,model_fusion_plating_exposure_monitoring,fusion_plating.group_fp_manager,1,1,1,1
access_fp_jhsc_operator,fp.jhsc.operator,model_fusion_plating_jhsc,fusion_plating.group_fp_technician,1,0,0,0
access_fp_jhsc_supervisor,fp.jhsc.supervisor,model_fusion_plating_jhsc,fusion_plating.group_fp_shop_manager_v2,1,1,1,0
access_fp_jhsc_manager,fp.jhsc.manager,model_fusion_plating_jhsc,fusion_plating.group_fp_manager,1,1,1,1
access_fp_jhsc_meeting_operator,fp.jhsc.meeting.operator,model_fusion_plating_jhsc_meeting,fusion_plating.group_fp_technician,1,0,0,0
access_fp_jhsc_meeting_supervisor,fp.jhsc.meeting.supervisor,model_fusion_plating_jhsc_meeting,fusion_plating.group_fp_shop_manager_v2,1,1,1,0
access_fp_jhsc_meeting_manager,fp.jhsc.meeting.manager,model_fusion_plating_jhsc_meeting,fusion_plating.group_fp_manager,1,1,1,1
access_fp_incident_operator,fp.incident.operator,model_fusion_plating_incident,fusion_plating.group_fp_technician,1,1,1,0
access_fp_incident_supervisor,fp.incident.supervisor,model_fusion_plating_incident,fusion_plating.group_fp_shop_manager_v2,1,1,1,0
access_fp_incident_manager,fp.incident.manager,model_fusion_plating_incident,fusion_plating.group_fp_manager,1,1,1,1
access_fp_ppe_operator,fp.ppe.issuance.operator,model_fusion_plating_ppe_issuance,fusion_plating.group_fp_technician,1,0,0,0
access_fp_ppe_supervisor,fp.ppe.issuance.supervisor,model_fusion_plating_ppe_issuance,fusion_plating.group_fp_shop_manager_v2,1,1,1,0
access_fp_ppe_manager,fp.ppe.issuance.manager,model_fusion_plating_ppe_issuance,fusion_plating.group_fp_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_fp_sds_operator fp.sds.operator model_fusion_plating_sds fusion_plating.group_fusion_plating_operator fusion_plating.group_fp_technician 1 0 0 0
3 access_fp_sds_supervisor fp.sds.supervisor model_fusion_plating_sds fusion_plating.group_fusion_plating_supervisor fusion_plating.group_fp_shop_manager_v2 1 1 1 0
4 access_fp_sds_manager fp.sds.manager model_fusion_plating_sds fusion_plating.group_fusion_plating_manager fusion_plating.group_fp_manager 1 1 1 1
5 access_fp_chemical_operator fp.chemical.operator model_fusion_plating_chemical fusion_plating.group_fusion_plating_operator fusion_plating.group_fp_technician 1 0 0 0
6 access_fp_chemical_supervisor fp.chemical.supervisor model_fusion_plating_chemical fusion_plating.group_fusion_plating_supervisor fusion_plating.group_fp_shop_manager_v2 1 1 1 0
7 access_fp_chemical_manager fp.chemical.manager model_fusion_plating_chemical fusion_plating.group_fusion_plating_manager fusion_plating.group_fp_manager 1 1 1 1
8 access_fp_training_type_operator fp.training.type.operator model_fusion_plating_training_type fusion_plating.group_fusion_plating_operator fusion_plating.group_fp_technician 1 0 0 0
9 access_fp_training_type_supervisor fp.training.type.supervisor model_fusion_plating_training_type fusion_plating.group_fusion_plating_supervisor fusion_plating.group_fp_shop_manager_v2 1 0 0 0
10 access_fp_training_type_manager fp.training.type.manager model_fusion_plating_training_type fusion_plating.group_fusion_plating_manager fusion_plating.group_fp_manager 1 1 1 1
11 access_fp_training_record_operator fp.training.record.operator model_fusion_plating_training_record fusion_plating.group_fusion_plating_operator fusion_plating.group_fp_technician 1 0 0 0
12 access_fp_training_record_supervisor fp.training.record.supervisor model_fusion_plating_training_record fusion_plating.group_fusion_plating_supervisor fusion_plating.group_fp_shop_manager_v2 1 1 1 0
13 access_fp_training_record_manager fp.training.record.manager model_fusion_plating_training_record fusion_plating.group_fusion_plating_manager fusion_plating.group_fp_manager 1 1 1 1
14 access_fp_exposure_operator fp.exposure.monitoring.operator model_fusion_plating_exposure_monitoring fusion_plating.group_fusion_plating_operator fusion_plating.group_fp_technician 1 0 0 0
15 access_fp_exposure_supervisor fp.exposure.monitoring.supervisor model_fusion_plating_exposure_monitoring fusion_plating.group_fusion_plating_supervisor fusion_plating.group_fp_shop_manager_v2 1 1 1 0
16 access_fp_exposure_manager fp.exposure.monitoring.manager model_fusion_plating_exposure_monitoring fusion_plating.group_fusion_plating_manager fusion_plating.group_fp_manager 1 1 1 1
17 access_fp_jhsc_operator fp.jhsc.operator model_fusion_plating_jhsc fusion_plating.group_fusion_plating_operator fusion_plating.group_fp_technician 1 0 0 0
18 access_fp_jhsc_supervisor fp.jhsc.supervisor model_fusion_plating_jhsc fusion_plating.group_fusion_plating_supervisor fusion_plating.group_fp_shop_manager_v2 1 1 1 0
19 access_fp_jhsc_manager fp.jhsc.manager model_fusion_plating_jhsc fusion_plating.group_fusion_plating_manager fusion_plating.group_fp_manager 1 1 1 1
20 access_fp_jhsc_meeting_operator fp.jhsc.meeting.operator model_fusion_plating_jhsc_meeting fusion_plating.group_fusion_plating_operator fusion_plating.group_fp_technician 1 0 0 0
21 access_fp_jhsc_meeting_supervisor fp.jhsc.meeting.supervisor model_fusion_plating_jhsc_meeting fusion_plating.group_fusion_plating_supervisor fusion_plating.group_fp_shop_manager_v2 1 1 1 0
22 access_fp_jhsc_meeting_manager fp.jhsc.meeting.manager model_fusion_plating_jhsc_meeting fusion_plating.group_fusion_plating_manager fusion_plating.group_fp_manager 1 1 1 1
23 access_fp_incident_operator fp.incident.operator model_fusion_plating_incident fusion_plating.group_fusion_plating_operator fusion_plating.group_fp_technician 1 1 1 0
24 access_fp_incident_supervisor fp.incident.supervisor model_fusion_plating_incident fusion_plating.group_fusion_plating_supervisor fusion_plating.group_fp_shop_manager_v2 1 1 1 0
25 access_fp_incident_manager fp.incident.manager model_fusion_plating_incident fusion_plating.group_fusion_plating_manager fusion_plating.group_fp_manager 1 1 1 1
26 access_fp_ppe_operator fp.ppe.issuance.operator model_fusion_plating_ppe_issuance fusion_plating.group_fusion_plating_operator fusion_plating.group_fp_technician 1 0 0 0
27 access_fp_ppe_supervisor fp.ppe.issuance.supervisor model_fusion_plating_ppe_issuance fusion_plating.group_fusion_plating_supervisor fusion_plating.group_fp_shop_manager_v2 1 1 1 0
28 access_fp_ppe_manager fp.ppe.issuance.manager model_fusion_plating_ppe_issuance fusion_plating.group_fusion_plating_manager fusion_plating.group_fp_manager 1 1 1 1