rebuild(runtime): govern market operations and job truth
This commit is contained in:
@@ -115,6 +115,19 @@ class DataGateway:
|
||||
self._policy.assert_allowed(provider.source, DataUsage.CALCULATION)
|
||||
return provider.snapshot_inputs(trade_date, previous_trade_date)
|
||||
|
||||
def realtime_snapshot_inputs(
|
||||
self, trade_date: str, previous_trade_date: str
|
||||
) -> dict[str, Any]:
|
||||
provider = self._provider(DataSource.TUSHARE)
|
||||
self._policy.assert_allowed(provider.source, DataUsage.CALCULATION)
|
||||
directory = self.stock_directory()
|
||||
identifiers = tuple(sorted(directory))
|
||||
if not identifiers:
|
||||
raise MarketDataUnavailable("股票目录为空,无法读取盘中行情")
|
||||
return provider.realtime_market_inputs(
|
||||
trade_date, previous_trade_date, identifiers
|
||||
)
|
||||
|
||||
def trading_dates(self, through: str, limit: int = 2) -> tuple[str, ...]:
|
||||
requested = _date(through)
|
||||
with self._database.read() as connection:
|
||||
@@ -163,6 +176,16 @@ class DataGateway:
|
||||
raise MarketDataUnavailable("当前动态竞价快照暂不可用")
|
||||
return result
|
||||
|
||||
def event_reasons(self, trade_date: str) -> ProviderResult:
|
||||
provider = self._provider(DataSource.IFIND)
|
||||
self._policy.assert_allowed(provider.source, DataUsage.CALCULATION)
|
||||
result = provider.event_reasons(trade_date)
|
||||
if result.metadata.usage != DataUsage.CALCULATION:
|
||||
raise MarketDataUnavailable("事件补充来源未获准参与正式数据治理")
|
||||
if result.metadata.coverage <= 0:
|
||||
raise MarketDataUnavailable("事件原因补充服务暂不可用")
|
||||
return result
|
||||
|
||||
def sector_members(
|
||||
self, trade_date: str, sector_name: str, representative: str
|
||||
) -> dict[str, Any]:
|
||||
|
||||
Reference in New Issue
Block a user