2026-09-09 21:55:37 +08:00
|
|
|
from fastapi import APIRouter, Depends, Path
|
|
|
|
|
|
|
|
|
|
from app.api.dependencies.auth import build_request_context
|
2026-09-10 15:55:54 +08:00
|
|
|
from app.api.dependencies.rate_limit import enforce_rate_limit
|
2026-09-11 15:21:36 +08:00
|
|
|
from app.api.views.envelope import envelope
|
2026-09-09 21:55:37 +08:00
|
|
|
from app.core.contracts import RequestContext
|
|
|
|
|
from app.service.knowledge_service import KnowledgeReferenceService
|
|
|
|
|
|
2026-09-10 15:55:54 +08:00
|
|
|
router = APIRouter(prefix="/api/v1/knowledge-references", tags=["knowledge"],
|
|
|
|
|
dependencies=[Depends(enforce_rate_limit)])
|
2026-09-09 21:55:37 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@router.get("/{reference_token}")
|
|
|
|
|
async def resolve_reference(
|
|
|
|
|
reference_token: str = Path(min_length=20, max_length=300),
|
|
|
|
|
context: RequestContext = Depends(build_request_context), # noqa: B008
|
|
|
|
|
) -> dict[str, object]:
|
2026-09-11 15:21:36 +08:00
|
|
|
# §3.3:成功响应也要有 `meta.trace_id`。此前这里直接返回资源对象,客户端拿不到
|
|
|
|
|
# 本次请求的追踪标识,出问题时无法与服务端日志对上。
|
|
|
|
|
data = await KnowledgeReferenceService().resolve(context, reference_token)
|
|
|
|
|
return envelope(data, context)
|