|
|
a252013573
|
feat(perm): 逆向物流专用权限码与菜单授权
为逆向物流的每个动作拆出独立权限码,终止此前复用其它模块权限的做法。
权限码一览(全部为无冒号形式,见下方说明):
outbound_return 出库退回
defective_list 不良品台账查看
defective_restock 不良品回库
defective_scrap 不良品报废
stock_change_status 库存状态变更
outbound_return_list 退回记录查看
另补建两个菜单:defective_goods(不良品在管台账)、outbound_returns(退回记录),
前者原先只有前端路由、sys_menu 中无对应行,导致页面在权限管理界面不可见、
其下权限也无从授予(sys_element.menu_code 有指向 sys_menu 的外键)。
默认授予:SUPER_ADMIN、SUPERVISOR、WAREHOUSE_MGR。
刻意不含 OUTBOUND —— 业务确认出库员只负责正向拣货发货,不参与逆向物流。
★ 为什么全部用无冒号形式,而不是 <menu>:<action>:
后端 _expand_operation_perms() 对带冒号的权限码做**前缀桥接** —— 只要用户
持有该菜单下任一以 :operation/:edit/:delete/... 结尾的权限就被放行。
实测验证过这个放大效应:
outbound_list:return <- 持有 outbound_list:operation -> True
outbound_return <- 持有 outbound_list:operation -> False
且前端 hasPermission() 是精确匹配,用冒号码会出现「接口能调、按钮却看不到」
的错位。无冒号码不触发桥接,前后端判定完全一致。
★ add_return_view_support.sql 另含一处 schema 变更:trans_return 补
company_name 快照列。退回流水的多租户隔离原先只能靠 join 链推
(trans_return → trans_outbound → 库存表 → 物料主表),而库存行会被入库
模块物理删除(实测 1077 条出库记录中已有 7 条悬空),链路一断该记录就会
对普通用户静默消失。审计视图静默丢数据不可接受,故落快照。
表当前为空,无需回填。
三个脚本均为幂等,含预检、回滚段与执行后核对。
|
2026-09-16 16:44:46 +08:00 |
|