Files
rag/core/status_codes.py
lacerate551 183a57e7f1 refactor(api): 统一响应格式迁移 + 异步任务系统 + 状态码体系完善
- 将全部路由文件(12个)的 jsonify 响应迁移至 success_response/error_response 统一格式
- 修复 sync_routes.py error_response 参数错误(P0)
- 新增异步任务系统:task_registry + task_routes
- 新增状态码:TASK_NOT_FOUND(4014)、TASK_CONFLICT(4015)、REINDEX_ERROR(5040)
- 修正 task_routes/exam_pkg 中语义不匹配的状态码
- 更新 curl 测试手册、后端对接规范文档
- 添加缓存性能报告和 Redis 迁移计划
2026-06-05 22:56:00 +08:00

132 lines
2.9 KiB
Python
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.
"""
状态码定义
统一的业务状态码,用于 API 响应中标识操作结果。
状态码格式4位数字前两位表示类别后两位表示具体状态
- 10xx: 处理中
- 20xx: 成功
- 40xx: 客户端错误
- 50xx: 服务端错误
"""
from typing import Dict
# 状态码到消息的映射
_STATUS_MESSAGES: Dict[int, str] = {
# 处理中状态 (10xx)
1000: "处理中",
1001: "文件接收中",
1002: "文件解析中",
1003: "向量化中",
1010: "同步进行中",
1020: "出题生成中",
1021: "批阅进行中",
# 成功状态 (20xx)
2000: "操作成功",
2001: "创建成功",
2002: "文件上传成功",
2003: "批量上传完成",
2004: "删除成功",
2005: "更新成功",
2010: "同步完成",
2020: "出题成功",
2021: "批阅完成",
2030: "图片描述更新成功",
# 客户端错误 (40xx)
4000: "请求参数错误",
4001: "未授权",
4002: "禁止访问",
4003: "资源不存在",
4004: "没有上传文件",
4005: "没有选择文件",
4006: "请指定目标向量库",
4007: "不支持的文件格式",
4008: "文件大小超过限制",
4009: "文档解析失败",
4010: "文件不存在",
4011: "向量库不存在",
4012: "文件内容为空",
4013: "权限不足",
4014: "任务不存在",
4015: "任务冲突",
# 服务端错误 (50xx)
5000: "服务器内部错误",
5001: "服务不可用",
5002: "向量化失败",
5003: "LLM调用失败",
5010: "同步失败",
5020: "出题失败",
5021: "批阅失败",
5030: "图片描述更新失败",
5040: "重建索引失败",
}
def get_status_message(status_code: int) -> str:
"""
根据状态码获取默认消息
Args:
status_code: 业务状态码
Returns:
状态码对应的默认消息
"""
return _STATUS_MESSAGES.get(status_code, "未知状态")
# ==================== 常用状态码常量 ====================
# 处理中 (10xx)
PROCESSING = 1000
FILE_RECEIVING = 1001
FILE_PARSING = 1002
VECTORIZING = 1003
SYNC_RUNNING = 1010
EXAM_GENERATING = 1020
EXAM_GRADING = 1021
# 成功 (20xx)
SUCCESS = 2000
CREATED = 2001
UPLOAD_SUCCESS = 2002
BATCH_UPLOAD_SUCCESS = 2003
DELETE_SUCCESS = 2004
UPDATE_SUCCESS = 2005
SYNC_SUCCESS = 2010
EXAM_SUCCESS = 2020
GRADE_SUCCESS = 2021
IMAGE_DESC_SUCCESS = 2030
# 客户端错误 (40xx)
BAD_REQUEST = 4000
UNAUTHORIZED = 4001
FORBIDDEN = 4002
NOT_FOUND = 4003
NO_FILE = 4004
NO_FILE_SELECTED = 4005
NO_COLLECTION = 4006
UNSUPPORTED_FORMAT = 4007
FILE_TOO_LARGE = 4008
PARSE_ERROR = 4009
FILE_NOT_FOUND = 4010
COLLECTION_NOT_FOUND = 4011
NO_CONTENT = 4012
PERMISSION_DENIED = 4013
TASK_NOT_FOUND = 4014
TASK_CONFLICT = 4015
# 服务端错误 (50xx)
INTERNAL_ERROR = 5000
SERVICE_UNAVAILABLE = 5001
VECTORIZE_ERROR = 5002
LLM_ERROR = 5003
SYNC_ERROR = 5010
EXAM_ERROR = 5020
GRADE_ERROR = 5021
IMAGE_DESC_ERROR = 5030
REINDEX_ERROR = 5040