Files
group_xinghuo_jinrong/app/api/kyc.py
T
zhanghongyu_0626 64c5db73a9 refactor(kyc): Remove ApiResponse response model from KYC session endpoints
- Updated KYC session endpoints to remove the ApiResponse response model, simplifying the API structure.
- Enhanced clarity in the KYC session creation, retrieval, chat, and completion methods by focusing on the payload and response data directly.
- Improved code readability and maintainability by streamlining the endpoint definitions.
2026-09-12 16:48:25 +08:00

78 lines
2.4 KiB
Python

"""KYC API skeleton."""
from __future__ import annotations
from fastapi import APIRouter, Depends, Request
from app.api.advisor_auth_adapter import get_advisor_auth, require_advisor_permission
from app.model.advisor_schemas import KycChatRequest, KycSessionCreate
from app.api.advisor_auth_adapter import AdvisorAuthContext
from app.service.kyc_session_service import KycSessionService
from app.api.advisor_http import advisor_ok as _advisor_ok
router = APIRouter(prefix="/api/advisor-agent/kyc", tags=["advisor-agent-kyc"])
AUTH_CONTEXT_DEP = Depends(get_advisor_auth)
KYC_CREATE_DEP = Depends(require_advisor_permission("kyc:create"))
KYC_READ_DEP = Depends(require_advisor_permission("kyc:chat"))
KYC_CHAT_DEP = Depends(require_advisor_permission("kyc:chat"))
KYC_COMPLETE_DEP = Depends(require_advisor_permission("kyc:complete"))
kyc_session_service = KycSessionService()
@router.get("/ping")
def ping(request: Request, auth: AdvisorAuthContext = AUTH_CONTEXT_DEP):
return _advisor_ok(request, {"module": "kyc", "status": "ready"})
@router.post("/sessions")
def create_kyc_session(
request: Request,
payload: KycSessionCreate,
auth: AdvisorAuthContext = KYC_CREATE_DEP,
):
result = kyc_session_service.create_session(
payload,
auth=auth,
trace_id=request.state.trace_id,
)
return _advisor_ok(request, result.model_dump(mode="json"))
@router.get("/sessions/{session_id}")
def get_kyc_session(
session_id: str,
request: Request,
auth: AdvisorAuthContext = KYC_READ_DEP,
):
result = kyc_session_service.get_session(session_id, auth=auth)
return _advisor_ok(request, result.model_dump(mode="json"))
@router.post("/sessions/{session_id}/chat")
def chat_kyc_session(
session_id: str,
request: Request,
payload: KycChatRequest,
auth: AdvisorAuthContext = KYC_CHAT_DEP,
):
result = kyc_session_service.chat_session(
session_id,
payload,
auth=auth,
trace_id=request.state.trace_id,
)
return _advisor_ok(request, result.model_dump(mode="json"))
@router.post("/sessions/{session_id}/complete")
def complete_kyc_session(
session_id: str,
request: Request,
auth: AdvisorAuthContext = KYC_COMPLETE_DEP,
):
result = kyc_session_service.complete_session(
session_id,
auth=auth,
trace_id=request.state.trace_id,
)
return _advisor_ok(request, result.model_dump(mode="json"))