Files
dpb/backend/app/common/enums.py
T
34047007@qq.com 73e25050df checkpoint: 调度任务存储落 PG——jobstore 归一 default + execute 写回真实触发 + 前端 store 字典更新
- ap_scheduler: 默认分组改 SQLAlchemyJobStore on PG,删 RedisJobStore 与 redis_instance;注释/告警口径同步
- node/service: jobstore 归一 default(兼容存量 sqlalchemy 名);cron/interval/date 写回 task_node.trigger/trigger_args(前端列表可见真实触发);run_job_now 用独立临时 id,不再覆盖节点既有排程
- enums: 删 APSCHEDULER_LOCK_KEY(jobstore 落 PG 后死锁)
- sys_dict_data: sys_job_store 字典归一 default,删 sqlalchemy 档
- 前端: 任务表单 store 选项与 default 归一
2026-08-07 21:47:38 +08:00

206 lines
5.0 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": "刷新令牌信息"}
USER_SESSION = {"key": "user_session", "remark": "用户会话信息"}
CAPTCHA_CODES = {"key": "captcha_codes", "remark": "图片验证码"}
EMAIL_CODES = {"key": "email_codes", "remark": "邮箱验证码"}
SYSTEM_CONFIG = {"key": "system_config", "remark": "系统配置"}
SYSTEM_DICT = {"key": "system_dict", "remark": "数据字典"}
AI_MODEL_CONFIG = {"key": "ai_model_config", "remark": "用户AI模型配置"}
@property
def key(self) -> str:
"""获取 Redis 键名。"""
return self.value.get("key", "")
@property
def remark(self) -> str:
"""获取 Redis 键说明。"""
return self.value.get("remark", "")
class SysParamKey(str, Enum):
"""系统参数 config_key 常量定义
所有 sys_param 表的 config_key 值统一在此定义,避免前端/后端各处写死字符串导致拼写错误。
"""
SYS_NAME = "sys_name"
LOGO_URL = "logo_url"
FAVICON = "favicon"
LOGIN_BG = "login_bg"
VERSION = "version"
HELP_DOC = "help_doc"
GIT_CODE = "git_code"
COPYRIGHT = "copyright"
KEEP_RECORD = "keep_record"
PRIVACY = "privacy"
CLAUSE = "clause"
DEMO_ENABLE = "demo_enable"
IP_WHITE_LIST = "ip_white_list"
IP_BLACK_LIST = "ip_black_list"
LOGIN_TITLE = "login_title"
LOGIN_SUBTITLE = "login_subtitle"
IP_LOCATION_ENABLE = "ip_location_enable"
@unique
class QueueEnum(str, Enum):
"""队列枚举"""
none = "None"
not_none = "not None"
date = "date"
month = "month"
like = "like"
eq = "eq"
in_ = "in"
between = "between"
ne = "!="
gt = ">"
ge = ">="
lt = "<"
le = "<="
@unique
class OrderTypeEnum(str, Enum):
"""订单类型"""
NEW = "new"
RENEW = "renew"
UPGRADE = "upgrade"
DOWNGRADE = "downgrade"
@unique
class InvoiceTypeEnum(str, Enum):
"""发票类型"""
VAT_NORMAL = "vat_normal"
VAT_SPECIAL = "vat_special"
@unique
class TicketTypeEnum(str, Enum):
"""工单类型"""
SUGGESTION = "suggestion"
BUG = "bug"
OPTIMIZE = "optimize"
OTHER = "other"
# ==================== 系统返回码 ====================
class RET(Enum):
"""系统返回码枚举
0~200: 成功状态码
400~600: HTTP标准错误码
4000+: 自定义业务错误码
"""
# 成功状态码
OK = (0, "成功")
SUCCESS = (200, "操作成功")
CREATED = (201, "创建成功")
ACCEPTED = (202, "请求已接受")
NO_CONTENT = (204, "操作成功,无返回数据")
# HTTP标准错误码
ERROR = (1, "请求错误")
BAD_REQUEST = (400, "参数错误")
UNAUTHORIZED = (401, "未授权")
FORBIDDEN = (403, "访问受限")
NOT_FOUND = (404, "资源不存在")
BAD_METHOD = (405, "不支持的请求方法")
NOT_ACCEPTABLE = (406, "不接受的请求")
CONFLICT = (409, "资源冲突")
GONE = (410, "资源已删除")
PRECONDITION_FAILED = (412, "前提条件失败")
UNSUPPORTED_MEDIA_TYPE = (415, "不支持的媒体类型")
UNPROCESSABLE_ENTITY = (422, "无法处理的实体")
TOO_MANY_REQUESTS = (429, "请求过于频繁")
# 服务器错误码
INTERNAL_SERVER_ERROR = (500, "服务器内部错误")
NOT_IMPLEMENTED = (501, "功能未实现")
BAD_GATEWAY = (502, "网关错误")
SERVICE_UNAVAILABLE = (503, "服务不可用")
GATEWAY_TIMEOUT = (504, "网关超时")
HTTP_VERSION_NOT_SUPPORTED = (505, "HTTP版本不支持")
# 自定义业务错误码
EXCEPTION = (-1, "系统异常")
DATAEXIST = (4003, "数据已存在")
DATAERR = (4004, "数据错误")
PARAMERR = (4103, "参数错误")
IOERR = (4302, "IO错误")
SERVERERR = (4500, "服务错误")
UNKOWNERR = (4501, "未知错误")
TIMEOUT = (4502, "请求超时")
RATE_LIMIT_EXCEEDED = (4503, "访问频率超限")
# Token相关错误码
INVALID_TOKEN = (4504, "无效令牌")
EXPIRED_TOKEN = (4505, "令牌过期")
# 认证授权错误码
INVALID_CREDENTIALS = (4506, "无效凭证")
def __init__(self, code: int, msg: str) -> None:
self._code = code
self._msg = msg
@property
def code(self) -> int:
return self._code
@property
def msg(self) -> str:
return self._msg