- 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.
78 lines
2.4 KiB
Python
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")) |