fs-lawrisk/docs/features/admin/GRADE_AUTO_CALC.md

164 lines
5.2 KiB
Markdown
Raw Normal View History

# 组织架构权限等级自动管理功能
## 功能概述
本次更新实现了基于组织架构层级的权限等级自动管理功能,彻底解决了手动填写权限等级的问题,使权限等级管理更加智能化和自动化。
## 核心改进
### 1. 前端优化 (static/super_admin.html)
#### 新增模态框显示权限信息
- **新增部门时**:显示蓝色信息框,清晰展示:
- 父级层级
- 子级层级
- 自动分配的权限等级
- **编辑部门时**:显示黄色信息框,展示:
- 当前层级
- 当前权限等级
- 权限等级自动计算说明
#### 移除手动选择权限等级
- ❌ 删除了权限等级下拉选择框
- ✅ 改为自动显示权限等级信息
- ✅ 用户无需手动填写数字
#### 新增辅助函数
- `calculateGradeByLevel(level)` - 根据层级计算权限等级
- `getGradeInfo(grade)` - 获取权限等级详细信息
- `syncGradesWithLevels()` - 同步权限等级与层级关系
### 2. 后端优化 (lawrisk/services/licensing_repo.py)
#### 新增自动计算函数
- `_calculate_grade_by_parent(parent_id)` - 根据父节点计算权限等级
- 根级部门无父节点90超级权限
- 二级部门80高级权限
- 三级部门70中级权限
- 四级及以下60一般权限
- `_get_department_level(department_id)` - 获取部门在组织架构中的层级
- 通过递归查询parent_id追溯到根节点
- 返回该部门的深度层级根节点为0
#### 修改创建部门逻辑
```python
# 自动根据父节点计算权限等级不再使用传入的grade参数
grade_value = _calculate_grade_by_parent(parent_token)
```
#### 修改更新部门逻辑
```python
# 如果修改了parent_id则自动计算grade
if parent_id is not None:
new_grade = _calculate_grade_by_parent(parent_id)
updates.append("grade = %s")
values.append(new_grade)
```
## 权限等级映射表
| 组织层级 | 权限等级 | 权限名称 | 颜色标识 |
|---------|---------|---------|---------|
| 0级根级 | 90 | 超级权限 | 🔴 红色 |
| 1级二级 | 80 | 高级权限 | 🟠 橙色 |
| 2级三级 | 70 | 中级权限 | 🟡 黄色 |
| 3级+(四级及以下) | 60 | 一般权限 | 🟢 绿色 |
## 功能特性
### 1. 自动计算
- ✅ 新增部门时自动根据父级部门计算权限等级
- ✅ 拖拽修改从属关系时自动重新计算权限等级
- ✅ 编辑部门信息时自动显示当前权限等级
### 2. 智能提示
- ✅ 新增部门时显示权限等级自动设置信息
- ✅ 编辑部门时显示当前权限等级和层级
- ✅ 控制台输出调试信息,便于问题定位
### 3. 无缝兼容
- ✅ 保留grade字段向后兼容
- ✅ 不影响现有数据
- ✅ 自动同步现有不匹配的权限等级
## 使用场景
### 场景1新增子部门
1. 点击某个部门的" 新增"按钮
2. 弹出模态框显示蓝色信息框:
- 父级层级X 级
- 子级层级X+1 级
- 自动分配XX - XXXX权限
3. 填写部门名称、账号等信息
4. 点击确定,系统自动分配正确的权限等级
### 场景2拖拽修改从属关系
1. 拖拽部门到其他部门下作为子级
2. 释放鼠标确认操作
3. 系统自动:
- 更新从属关系
- 重新计算权限等级
- 刷新组织架构显示
### 场景3编辑部门信息
1. 点击部门的"✏️ 编辑"按钮
2. 弹出模态框显示黄色信息框:
- 当前层级X 级
- 当前权限XX - XXXX权限
3. 修改部门名称、电话等信息(不影响权限等级)
4. 权限等级基于层级自动保持正确
## 技术实现细节
### 数据库层
- 在`update_service_department`中添加自动计算grade逻辑
- 新增`_calculate_grade_by_parent`函数
- 新增`_get_department_level`函数
### API层
- 创建和更新部门时自动计算grade
- grade参数保留但不再使用
### 前端层
- 修改`showAddChildModal`函数,显示权限信息
- 修改`showEditModal`函数,显示当前权限
- 添加权限等级计算辅助函数
- 移除手动选择权限等级的UI
## 优势
1. **智能化**:无需手动计算和填写权限等级
2. **一致性**:确保权限等级与组织架构层级始终一致
3. **易用性**:清晰的信息提示,用户一目了然
4. **可维护性**:逻辑集中管理,便于维护和修改
5. **向后兼容**:不破坏现有功能和数据
## 部署状态
✅ Flask服务已启动 (http://127.0.0.1:8000)
✅ 所有修改已部署
✅ 功能已生效
## 测试建议
1. **新增部门测试**
- 在不同层级新增部门
- 验证权限等级是否正确自动分配
2. **拖拽测试**
- 拖拽部门改变从属关系
- 验证权限等级是否自动更新
3. **编辑测试**
- 编辑部门基本信息
- 验证权限等级显示是否正确
4. **信息显示测试**
- 检查新增和编辑模态框中的权限信息提示
- 验证颜色标识和文字说明
---
**功能完成!** 🎉 权限等级现在完全基于组织架构层级自动管理,用户无需再手动填写数字。