"""全局常量。 集中定义 Redis 键模板、响应码、角色编码等跨模块共享的字面量, 避免各处硬编码字符串导致拼写漂移。 """ # ===== 响应码(与 HTTP 状态码保持一致,见 PROJECT_STANDARDS 第 9 节)===== CODE_SUCCESS = 200 CODE_BAD_REQUEST = 400 CODE_UNAUTHORIZED = 401 CODE_FORBIDDEN = 403 CODE_NOT_FOUND = 404 CODE_SERVER_ERROR = 500 # ===== Redis 键模板 ===== # 规范第 6 节:键格式 {项目缩写}:{业务}:{标识},项目缩写为 ys REDIS_KEY_CAPTCHA = "ys:captcha:{captcha_id}" REDIS_KEY_LOGIN_FAIL = "ys:login:fail:{username}" REDIS_KEY_TOKEN_BLACKLIST = "ys:token:blacklist:{jti}" # ===== JWT ===== JWT_ALGORITHM = "HS256" TOKEN_TYPE_BEARER = "Bearer" # ===== 角色编码(与 db/migration 初始化数据保持一致)===== ROLE_ADMIN = "admin" ROLE_USER = "user" # ===== 密码策略 ===== # bcrypt 5.0 起对超过 72 字节的密码由「静默截断」改为「抛 ValueError」, # 而中文一个字符占 3 字节,因此必须按字节数校验,按字符数校验是错的。 PASSWORD_MIN_BYTES = 8 PASSWORD_MAX_BYTES = 72 # ===== 验证码 ===== # 剔除易混淆字符 0/O/1/I/l,降低人工识别错误率 CAPTCHA_CHARSET = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ" CAPTCHA_LENGTH = 4