From 62a9c9844826480dc1cda8223270b888be4fe265 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Mon, 14 Sep 2026 15:27:34 +0800 Subject: [PATCH] =?UTF-8?q?chore(dmig):=20m0032=E6=9D=83=E9=99=90=E6=AE=8B?= =?UTF-8?q?=E7=95=99=E6=B8=85=E7=90=8651=E6=9D=A1=E2=80=94=E2=80=94discoun?= =?UTF-8?q?t=E5=8F=8C=E6=AE=B5=E8=B7=AF=E5=BE=8418(=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E4=B8=8D=E5=AD=98=E5=9C=A8/=E8=8F=9C=E5=8D=95=E4=B8=8D?= =?UTF-8?q?=E5=BC=95=E7=94=A8/=E5=90=ABany=E6=94=BE=E8=A1=8C=E9=9D=A2)+pip?= =?UTF-8?q?eline-sdlc=E6=97=A7CRUD23(load=5Fpath=E9=9B=B6=E6=B3=A8?= =?UTF-8?q?=E5=86=8C/=E5=90=AB=E6=9C=BA=E6=9E=84=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E9=94=99=E9=85=8D)+userapp/userdepartment=E5=BA=9F=E5=BC=8310;?= =?UTF-8?q?=E4=BF=9D=E7=95=99tool=5Fpolicies(=E5=86=BB=E7=BB=93=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E6=B3=A8=E5=86=8C,=E7=94=9F=E4=BA=A7=E6=AD=A3?= =?UTF-8?q?=E7=A1=AE);=E5=AE=9A=E6=80=A7=3D=E9=80=90=E6=9D=A1file=E5=AD=98?= =?UTF-8?q?=E5=9C=A8=E6=80=A7+=E8=8F=9C=E5=8D=95grep+=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=8E=AF=E5=A2=83=E5=AF=B9=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../m0032_permission_residue_cleanup.json | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 deploy/migrations/m0032_permission_residue_cleanup.json diff --git a/deploy/migrations/m0032_permission_residue_cleanup.json b/deploy/migrations/m0032_permission_residue_cleanup.json new file mode 100644 index 0000000..a2f840d --- /dev/null +++ b/deploy/migrations/m0032_permission_residue_cleanup.json @@ -0,0 +1,20 @@ +{ + "id": "m0032", + "title": "权限残留清理(对齐测试环境权威参照): 删51条历史注册残留——discount双段路径18条(文件不存在/菜单不引用/部分绑any匿名放行面)+pipeline-sdlc旧CRUD与options23条(冻结版load_path零注册/部分绑机构角色logined错配行)+userapp/userdepartment废弃表权限10条(技能既定清理项)。保留/pipeline_core/pipeline_tool_policies/*(冻结代码load_path明确注册,生产正确测试缺)。定性证据:文件存在性NOENT+菜单grep零引用+测试环境无此行。破坏性DELETE走apply-approved", + "destructive": true, + "backup_tables": [ + "permission", + "rolepermission" + ], + "up": [ + { + "op": "sql", + "sql": "DELETE FROM rolepermission WHERE permid IN (SELECT id FROM permission WHERE path IN ('/discount/discount','/discount/discount_marketing','/discount/discount_marketing/add_discount_marketing.dspy','/discount/discount_marketing/delete_discount_marketing.dspy','/discount/discount_marketing/get_discount_marketing.dspy','/discount/discount_marketing/index.ui','/discount/discount_marketing/update_discount_marketing.dspy','/discount/discount_promo_code','/discount/discount_promo_code/add_discount_promo_code.dspy','/discount/discount_promo_code/delete_discount_promo_code.dspy','/discount/discount_promo_code/get_discount_promo_code.dspy','/discount/discount_promo_code/index.ui','/discount/discount_promo_code/update_discount_promo_code.dspy','/discount/discount/add_discount.dspy','/discount/discount/delete_discount.dspy','/discount/discount/get_discount.dspy','/discount/discount/index.ui','/discount/discount/update_discount.dspy','/pipeline-sdlc/api/get_model_options.dspy','/pipeline-sdlc/api/get_pipeline_options.dspy','/pipeline-sdlc/api/get_project_options.dspy','/pipeline-sdlc/api/get_project_select_options.dspy','/pipeline-sdlc/api/get_role_options.dspy','/pipeline-sdlc/api/get_search_project_type.dspy','/pipeline-sdlc/api/get_search_status.dspy','/pipeline-sdlc/sd_project_list/*','/pipeline-sdlc/sd_project_list/**','/pipeline-sdlc/sd_project_list/index.ui','/pipeline-sdlc/sd_project_role_models/add_sd_project_role_models.dspy','/pipeline-sdlc/sd_project_role_models/delete_sd_project_role_models.dspy','/pipeline-sdlc/sd_project_role_models/get_sd_project_role_models.dspy','/pipeline-sdlc/sd_project_role_models/index.ui','/pipeline-sdlc/sd_project_role_models/update_sd_project_role_models.dspy','/pipeline-sdlc/sd_projects/','/pipeline-sdlc/sd_projects/*','/pipeline-sdlc/sd_projects/**','/pipeline-sdlc/sd_projects/add_sd_projects.dspy','/pipeline-sdlc/sd_projects/delete_sd_projects.dspy','/pipeline-sdlc/sd_projects/get_sd_projects.dspy','/pipeline-sdlc/sd_projects/index.ui','/pipeline-sdlc/sd_projects/update_sd_projects.dspy','/userapp/add_userapp.dspy','/userapp/delete_userapp.dspy','/userapp/get_userapp.dspy','/userapp/index.ui','/userapp/update_userapp.dspy','/userdepartment/add_userdepartment.dspy','/userdepartment/delete_userdepartment.dspy','/userdepartment/get_userdepartment.dspy','/userdepartment/index.ui','/userdepartment/update_userdepartment.dspy'))" + }, + { + "op": "sql", + "sql": "DELETE FROM permission WHERE path IN ('/discount/discount','/discount/discount_marketing','/discount/discount_marketing/add_discount_marketing.dspy','/discount/discount_marketing/delete_discount_marketing.dspy','/discount/discount_marketing/get_discount_marketing.dspy','/discount/discount_marketing/index.ui','/discount/discount_marketing/update_discount_marketing.dspy','/discount/discount_promo_code','/discount/discount_promo_code/add_discount_promo_code.dspy','/discount/discount_promo_code/delete_discount_promo_code.dspy','/discount/discount_promo_code/get_discount_promo_code.dspy','/discount/discount_promo_code/index.ui','/discount/discount_promo_code/update_discount_promo_code.dspy','/discount/discount/add_discount.dspy','/discount/discount/delete_discount.dspy','/discount/discount/get_discount.dspy','/discount/discount/index.ui','/discount/discount/update_discount.dspy','/pipeline-sdlc/api/get_model_options.dspy','/pipeline-sdlc/api/get_pipeline_options.dspy','/pipeline-sdlc/api/get_project_options.dspy','/pipeline-sdlc/api/get_project_select_options.dspy','/pipeline-sdlc/api/get_role_options.dspy','/pipeline-sdlc/api/get_search_project_type.dspy','/pipeline-sdlc/api/get_search_status.dspy','/pipeline-sdlc/sd_project_list/*','/pipeline-sdlc/sd_project_list/**','/pipeline-sdlc/sd_project_list/index.ui','/pipeline-sdlc/sd_project_role_models/add_sd_project_role_models.dspy','/pipeline-sdlc/sd_project_role_models/delete_sd_project_role_models.dspy','/pipeline-sdlc/sd_project_role_models/get_sd_project_role_models.dspy','/pipeline-sdlc/sd_project_role_models/index.ui','/pipeline-sdlc/sd_project_role_models/update_sd_project_role_models.dspy','/pipeline-sdlc/sd_projects/','/pipeline-sdlc/sd_projects/*','/pipeline-sdlc/sd_projects/**','/pipeline-sdlc/sd_projects/add_sd_projects.dspy','/pipeline-sdlc/sd_projects/delete_sd_projects.dspy','/pipeline-sdlc/sd_projects/get_sd_projects.dspy','/pipeline-sdlc/sd_projects/index.ui','/pipeline-sdlc/sd_projects/update_sd_projects.dspy','/userapp/add_userapp.dspy','/userapp/delete_userapp.dspy','/userapp/get_userapp.dspy','/userapp/index.ui','/userapp/update_userapp.dspy','/userdepartment/add_userdepartment.dspy','/userdepartment/delete_userdepartment.dspy','/userdepartment/get_userdepartment.dspy','/userdepartment/index.ui','/userdepartment/update_userdepartment.dspy')" + } + ], + "down": [] +} \ No newline at end of file