rebuild(stage-6): deliver emotion and market pools

This commit is contained in:
leefer
2026-07-30 03:03:53 +08:00
parent 889963862a
commit 59f6011ae8
30 changed files with 1751 additions and 9 deletions
+10 -2
View File
@@ -5,12 +5,14 @@ from typing import Any
from backend.data.gateway import DataGateway, MarketDataUnavailable
from backend.data.providers.base import ProviderError
from backend.data.quality import DataQualityError
from backend.features.market.sync import MarketSnapshotService, SnapshotSyncError
from backend.http.errors import AppError
class MarketService:
def __init__(self, gateway: DataGateway) -> None:
def __init__(self, gateway: DataGateway, snapshots: MarketSnapshotService) -> None:
self._gateway = gateway
self._snapshots = snapshots
def context(self, requested_date: str | None = None) -> dict[str, Any]:
context = self._call(self._gateway.trade_context, requested_date)
@@ -76,11 +78,17 @@ class MarketService:
def refresh_reference(self) -> dict[str, int | str]:
return self._call(self._gateway.refresh_reference)
def sync_snapshot(self, requested_date: str | None = None) -> dict[str, Any]:
return self._call(self._snapshots.sync, requested_date)
def workspace(self, key: str, requested_date: str | None = None) -> dict[str, Any]:
return self._call(self._snapshots.workspace, key, requested_date)
@staticmethod
def _call(function, *args):
try:
return function(*args)
except (MarketDataUnavailable, ProviderError, DataQualityError) as exc:
except (MarketDataUnavailable, ProviderError, DataQualityError, SnapshotSyncError) as exc:
raise AppError("market_data_unavailable", str(exc), 503) from exc