fix: fetch dataset scope options from WorldQuant platform
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
"""Shared platform scope discovery for HTTP and AI consumers."""
|
||||
|
||||
from fastapi import HTTPException
|
||||
|
||||
from ..worldquant import WqError
|
||||
|
||||
|
||||
async def platform_options(client):
|
||||
"""Return live account choices, surfacing sanitized upstream failures to callers."""
|
||||
if client is None:
|
||||
raise HTTPException(409, "请先连接 WorldQuant")
|
||||
try:
|
||||
return await client.get_platform_setting_options()
|
||||
except WqError as exc:
|
||||
raise HTTPException(
|
||||
409 if exc.code in ("disconnected", "verification_required") else 502, str(exc)
|
||||
) from None
|
||||
|
||||
|
||||
async def validate_platform_scope(client, scope):
|
||||
"""Reject unsupported combinations before creating a synchronization job."""
|
||||
data = await platform_options(client)
|
||||
if not any(
|
||||
row["instrument_type"] == scope.instrument_type
|
||||
and row["region"] == scope.region
|
||||
and row["delay"] == scope.delay
|
||||
and scope.universe in row["universes"]
|
||||
for row in data["instrument_options"]
|
||||
):
|
||||
raise HTTPException(422, "平台不支持此 Instrument Type / Region / Delay / Universe 组合")
|
||||
Reference in New Issue
Block a user