fix: 修复多项后端缺陷并加固安全与限流

- 修正 AI 会话表初始化及异步数据库 URI 处理
- 新增全局 API 与 WS 聊天限流,健康检查豁免
- 修复忘记密码接口防用户枚举与参数校验
- 修复 SSE 推送数据重复编码问题
- 修复 Cron 表达式 Quartz 问号兼容
- 修复存储模块权限标识前缀
- 新增过期日志清理与任务错误中文提示
This commit is contained in:
zhangtao
2026-09-07 00:08:00 +08:00
parent 30dfc7097b
commit a8d29d4ab4
59 changed files with 989 additions and 891 deletions
@@ -207,11 +207,12 @@ def _build_job_trigger(
fields = cron_expr.split()
if len(fields) not in (6, 7):
raise ValueError("无效的 Cron 表达式,格式: 秒 分 时 日 月 周 [年]")
# Quartz 风格的 ? 仅表示"该位无具体值",croniter 不支持,先统一规范化为 * 再校验
parsed = [field if field != "?" else "*" for field in fields]
try:
croniter(cron_expr)
croniter(" ".join(parsed))
except (KeyError, ValueError):
raise ValueError(f"Cron表达式不正确: {cron_expr}")
parsed = [field if field != "?" else "*" for field in fields]
if len(fields) == 6:
parsed.append("*")
second, minute, hour, day, month, day_of_week, year = parsed