23 lines
823 B
Python
23 lines
823 B
Python
"""Read-only portfolio-analysis endpoint."""
|
|||
|
|
|
||
|
|
from fastapi import APIRouter, Depends
|
||
|
|
|
||
|
|
from app.api.dependencies.auth import build_request_context
|
||
|
|
from app.api.dependencies.rate_limit import enforce_rate_limit
|
||
|
|
from app.api.schemas.portfolio_analysis import PortfolioAnalysisQuery
|
||
|
|
from app.core.contracts import RequestContext
|
||
|
|
from app.service.portfolio_analysis_service import PortfolioAnalysisService
|
||
|
|
|
||
|
|
router = APIRouter(
|
||
|
|
prefix="/api/v1/advisor", tags=["advisor-portfolio-analysis"],
|
||
|
|
dependencies=[Depends(enforce_rate_limit)],
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
@router.post("/portfolio-analysis")
|
||
|
|
async def analyze_portfolio(
|
||
|
|
payload: PortfolioAnalysisQuery,
|
||
|
|
context: RequestContext = Depends(build_request_context), # noqa: B008
|
||
|
|
) -> dict[str, object]:
|
||
|
|
return await PortfolioAnalysisService().analyze_for_agent(payload, context)
|