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:
@@ -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()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user