refactor(api): TOML 配置 SSOT、统一错误契约、Auth/事务加固与可观测性 (#33)

配置 SSOT(TOML + .env)
统一错误契约
Auth 与事务边界
Redis / Celery 可靠性:业务 Redis(DB/0)与 Celery broker/backend(DB/1)显式拆分;连接池、sync client
可观测性(OpenTelemetry + LGTM)
This commit is contained in:
Sully
2026-05-22 13:44:50 +08:00
committed by GitHub
parent f09ae248f9
commit 53e0065e3e
298 changed files with 15247 additions and 4344 deletions

View File

@@ -2,9 +2,10 @@
from typing import Annotated
from fastapi import Depends, Header, HTTPException, status
from fastapi import Depends, Header
from app.core.config import settings
from app.core.errors import AuthenticationError, ServiceUnavailableError
from app.core.logging import get_logger
logger = get_logger(__name__)
@@ -22,9 +23,8 @@ class InternalEvalPrincipal:
def require_internal_eval_enabled() -> None:
if not (settings.internal_eval_api_key or "").strip():
logger.warning("internal_eval_api_key 未配置,内部评测 API 拒绝访问")
raise HTTPException(
status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
detail="内部评测服务未启用(缺少 INTERNAL_EVAL_API_KEY",
raise ServiceUnavailableError(
"内部评测服务未启用(缺少 INTERNAL_EVAL_API_KEY"
)
@@ -37,16 +37,10 @@ def verify_internal_eval_key(
require_internal_eval_enabled()
expected = (settings.internal_eval_api_key or "").strip()
if not expected:
raise HTTPException(
status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
detail="内部评测服务未启用",
)
raise ServiceUnavailableError("内部评测服务未启用")
provided = (header_value or query_value or "").strip()
if not provided or provided != expected:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="无效的内部评测密钥",
)
raise AuthenticationError("无效的内部评测密钥")
return InternalEvalPrincipal()