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

164 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 组织架构权限等级自动管理功能
## 功能概述
本次更新实现了基于组织架构层级的权限等级自动管理功能,彻底解决了手动填写权限等级的问题,使权限等级管理更加智能化和自动化。
## 核心改进
### 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. **信息显示测试**
- 检查新增和编辑模态框中的权限信息提示
- 验证颜色标识和文字说明
---
**功能完成!** 🎉 权限等级现在完全基于组织架构层级自动管理,用户无需再手动填写数字。