rebuild(runtime): govern market operations and job truth

This commit is contained in:
leefer
2026-07-30 10:14:29 +08:00
parent 4fc8691eee
commit d8f0dd930c
39 changed files with 2224 additions and 79 deletions
+23
View File
@@ -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]: