一、权限细分核心目标
1. 数据隔离:防止采购价、供应商信息等敏感数据泄露
2. 操作可控:限制越权操作(如禁止销售修改库存)
3. 审计追溯:所有操作留痕,满足生鲜行业溯源要求
4. 效率平衡:在严格管控与便捷操作间找到平衡点
二、生鲜行业特有权限维度
1. 供应链角色权限
- 采购员:仅能查看/修改负责品类的采购单
- 质检员:可上传质检报告但不可修改订单
- 仓储员:仅限库存操作,无价格查看权限
- 配送员:只能看到配送任务,无客户信息访问权
2. 地域权限
- 区域经理:仅能查看管辖区域的销售数据
- 城市仓管理员:只能操作本地仓库库存
- 跨区调拨:需特殊审批流程触发临时权限
3. 商品类别权限
- 肉类专员:可操作所有肉类商品,但不可碰蔬菜类
- 进口商品组:拥有海关报关相关特殊操作权限
- 临期商品处理:仅限特定角色执行折扣操作
三、技术实现方案
1. RBAC+ABAC混合模型
```python
示例:基于属性的动态权限判断
def check_permission(user, resource, action):
基础RBAC检查
if not user.has_role(采购员):
return False
ABAC属性检查(生鲜特有)
if resource.type == 进口商品 and not user.has_attribute(进口资质):
return False
if action == 修改价格 and resource.category != user.responsible_category:
return False
return True
```
2. 数据级权限控制
- 数据库视图隔离:为不同角色创建特定数据视图
- 字段级加密:对采购价、利润率等字段单独加密
- 行级权限:通过SQL WHERE条件动态过滤数据
3. 操作日志增强
```sql
-- 操作日志表设计(生鲜特有字段)
CREATE TABLE operation_log (
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL,
action_type VARCHAR(50) NOT NULL, -- 采购/质检/调拨等
resource_id BIGINT,
resource_type VARCHAR(50), -- 商品/订单/库存等
before_value JSONB, -- 操作前数据快照
after_value JSONB, -- 操作后数据快照
batch_number VARCHAR(100), -- 生鲜批次号
operation_time TIMESTAMP DEFAULT NOW()
);
```
四、典型业务场景权限设计
1. 采购场景
- 采购员A只能创建/修改自己负责品类的采购单
- 采购经理可查看所有采购单,但修改需二次审批
- 财务仅能看到已审批的采购单总金额
2. 库存管理
- 仓库人员可执行出入库操作,但不可调整安全库存阈值
- 盘点人员只能查看库存快照,不可修改实时数据
- 临期商品预警仅对特定角色推送
3. 销售场景
- 销售代表只能看到自己客户的订单
- 价格修改需经过价格管理员审批
- 大客户折扣权限需区域总监授权
五、实施路线图
1. 第一阶段:基础框架搭建
- 完成RBAC核心模型开发
- 实现页面元素级权限控制(Vue/React动态组件)
- 部署基础操作日志系统
2. 第二阶段:生鲜行业深化
- 开发商品类别权限模块
- 实现地域数据隔离
- 增加批次号追溯相关权限
3. 第三阶段:智能管控
- 基于用户行为分析的动态权限调整
- 风险操作自动预警系统
- 权限审计智能报告生成
六、避坑指南
1. 过度细分陷阱:避免创建过多细粒度角色,建议通过角色组合实现复杂权限
2. 性能考量:对十万级SKU的权限检查需优化查询效率
3. 合规风险:确保权限设计符合《数据安全法》等法规要求
4. 用户体验:在严格管控同时,提供权限申请的便捷通道
七、效果评估指标
1. 权限相关安全事件减少率
2. 跨角色数据泄露投诉量
3. 权限管理操作耗时(如角色分配效率)
4. 审计报告生成时效
通过这种分层递进的权限设计,美菜生鲜系统既能满足生鲜行业复杂的业务管控需求,又能保持系统的灵活性和可扩展性。建议每季度进行权限健康度检查,根据业务发展动态调整权限模型。