Files
FastapiAdmin/backend/app/common/enums.py
T
zhangtao 8689889127 feat(权限): 实现基于策略模式的权限过滤系统
添加 PermissionFilterStrategy 枚举定义不同权限过滤策略
在基础模型和业务模型中设置默认权限策略
重构权限服务支持策略模式,根据模型策略选择过滤方法
前端添加角色部门显示和默认头像处理
2026-02-18 17:30:23 +08:00

110 lines
2.4 KiB
Python

from enum import Enum, unique
@unique
class EnvironmentEnum(str, Enum):
DEV = "dev"
PROD = "prod"
@unique
class BusinessType(Enum):
"""
业务操作类型
OTHER: 其它
INSERT: 新增
UPDATE: 修改
DELETE: 删除
GRANT: 授权
EXPORT: 导出
IMPORT: 导入
FORCE: 强退
GENCODE: 生成代码
CLEAN: 清空数据
"""
OTHER = 0
INSERT = 1
UPDATE = 2
DELETE = 3
GRANT = 4
EXPORT = 5
IMPORT = 6
FORCE = 7
GENCODE = 8
CLEAN = 9
@unique
class RedisInitKeyConfig(Enum):
"""系统内置Redis键名枚举"""
ACCESS_TOKEN = {"key": "access_token", "remark": "登录令牌信息"}
REFRESH_TOKEN = {"key": "refresh_token", "remark": "刷新令牌信息"}
CAPTCHA_CODES = {"key": "captcha_codes", "remark": "图片验证码"}
SYSTEM_CONFIG = {"key": "system_config", "remark": "系统配置"}
SYSTEM_DICT = {"key": "system_dict", "remark": "数据字典"}
APSCHEDULER_LOCK_KEY = {
"key": "scheduler_job_lock",
"remark": "定时任务初始化锁",
}
@property
def key(self) -> str:
"""获取Redis键名"""
return self.value.get("key", "")
@property
def remark(self) -> str:
"""获取Redis键名说明"""
return self.value.get("remark", "")
class McpType(Enum):
"""Mcp 服务器类型"""
stdio = 0
sse = 1
class McpLLMProvider(Enum):
"""MCP 大语言模型供应商"""
openai = "openai"
deepseek = "deepseek"
anthropic = "anthropic"
gemini = "gemini"
qwen = "qwen"
@unique
class QueueEnum(str, Enum):
"""队列枚举"""
none = "None"
not_none = "not None"
date = "date"
month = "month"
like = "like"
eq = "eq" or "=="
in_ = "in"
between = "between"
ne = "!=" or "ne"
gt = ">" or "gt"
ge = ">=" or "ge"
lt = "<" or "lt"
le = "<=" or "le"
class PermissionFilterStrategy(str, Enum):
"""
权限过滤策略枚举
定义不同的权限过滤策略,让模型选择合适的过滤方式
"""
DATA_SCOPE = "data_scope" # 基于数据范围权限(默认)
ROLE_BASED = "role_based" # 基于角色授权(菜单)
DEPT_BASED = "dept_based" # 基于部门关联(部门、角色)
SELF_ONLY = "self_only" # 仅本人数据
USER_ROLE = "user_role" # 当前用户绑定的角色