feat: migrate advisor risk questionnaire
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
"""Mandatory customer onboarding endpoints."""
|
||||
|
||||
from fastapi import APIRouter, Depends, Header, status
|
||||
|
||||
from app.api.dependencies.auth import build_request_context
|
||||
from app.api.schemas.risk_questionnaire import RiskQuestionnaireSubmission
|
||||
from app.core.contracts import RequestContext
|
||||
from app.service.risk_questionnaire_service import RiskQuestionnaireService
|
||||
|
||||
router = APIRouter(prefix="/api/v1/onboarding", tags=["customer-onboarding"])
|
||||
|
||||
|
||||
@router.get("/risk-questionnaire")
|
||||
async def get_risk_questionnaire(
|
||||
context: RequestContext = Depends(build_request_context), # noqa: B008
|
||||
) -> dict[str, object]:
|
||||
return await RiskQuestionnaireService().questionnaire(context)
|
||||
|
||||
|
||||
@router.post("/risk-questionnaire/submissions", status_code=status.HTTP_201_CREATED)
|
||||
async def submit_risk_questionnaire(
|
||||
payload: RiskQuestionnaireSubmission,
|
||||
context: RequestContext = Depends(build_request_context), # noqa: B008
|
||||
key: str | None = Header(default=None, alias="Idempotency-Key"),
|
||||
) -> dict[str, object]:
|
||||
return await RiskQuestionnaireService().submit(payload, context, key)
|
||||
|
||||
@@ -54,4 +54,11 @@ async def build_request_context(
|
||||
# 令牌非法、账号停用、角色读取失败一律按 401 处理,形态完全一致。
|
||||
raise unauthorized() from exc
|
||||
request.state.request_context = context
|
||||
if not request.url.path.startswith("/api/v1/onboarding/"):
|
||||
from app.service.risk_questionnaire_service import RiskQuestionnaireService
|
||||
|
||||
if await RiskQuestionnaireService().is_required(context):
|
||||
from app.core.errors import OnboardingRequiredError
|
||||
|
||||
raise OnboardingRequiredError("请先完成开户风险测评问卷")
|
||||
return context
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
"""HTTP DTOs for customer opening risk questionnaires."""
|
||||
|
||||
from app.core.risk_questionnaire_contracts import RiskQuestionnaireSubmission
|
||||
|
||||
__all__ = ["RiskQuestionnaireSubmission"]
|
||||
|
||||
Reference in New Issue
Block a user