袁聪的第二次提交,项目已完整
This commit is contained in:
@@ -4,11 +4,14 @@ from fastapi import APIRouter, Depends, Header
|
||||
from pydantic import Field
|
||||
|
||||
from app.api.dependencies.auth import build_request_context
|
||||
from app.api.dependencies.rate_limit import enforce_rate_limit
|
||||
from app.api.schemas.admin import StrictPayload
|
||||
from app.api.schemas.conversations import HandoverRequest
|
||||
from app.core.contracts import RequestContext
|
||||
from app.service.public_platform_service import PublicPlatformService
|
||||
|
||||
router = APIRouter(prefix="/api/v1", tags=["public-platform"])
|
||||
router = APIRouter(prefix="/api/v1", tags=["public-platform"],
|
||||
dependencies=[Depends(enforce_rate_limit)])
|
||||
|
||||
|
||||
class SessionCreate(StrictPayload):
|
||||
@@ -59,6 +62,22 @@ async def get_handover(
|
||||
return await PublicPlatformService().handover(handover_id, context)
|
||||
|
||||
|
||||
# 转人工申请的唯一入口:必须走 PublicPlatformService.write("handover"),
|
||||
# 它在同一事务内写工单 + Outbox 事件(conversation.transfer_requested)+ 审计。
|
||||
# 历史上 conversations.py 另有一份只写审计的实现,因注册顺序覆盖了本入口,
|
||||
# 导致转人工的异步链路(Outbox → Worker)永不触发,已合并删除。
|
||||
@router.post("/conversations/{session_id}/handover-requests", status_code=202)
|
||||
async def request_handover(
|
||||
session_id: str,
|
||||
payload: HandoverRequest,
|
||||
key: str | None = Header(default=None, alias="Idempotency-Key"),
|
||||
context: RequestContext = Depends(build_request_context), # noqa: B008
|
||||
) -> dict[str, Any]:
|
||||
return await PublicPlatformService().write(
|
||||
"handover", session_id, context, key, payload.model_dump()
|
||||
)
|
||||
|
||||
|
||||
@router.get("/users/me/memory-profile")
|
||||
async def my_memory(
|
||||
context: RequestContext = Depends(build_request_context), # noqa: B008
|
||||
|
||||
Reference in New Issue
Block a user