rebuild(stage-5): establish market data gateway and charts

This commit is contained in:
leefer
2026-07-30 02:35:42 +08:00
parent 40ad5d6836
commit cf0ab7026f
45 changed files with 2701 additions and 46 deletions
+22 -1
View File
@@ -3,6 +3,10 @@ from __future__ import annotations
from dataclasses import dataclass
from backend.bootstrap.settings import Settings
from backend.data.gateway import DataGateway
from backend.data.policy import DataSourcePolicy
from backend.data.providers import EastmoneyProvider, IfindProvider, TushareProvider
from backend.data.repository import MarketRepository
from backend.database.connection import Database
from backend.database.repositories.status import DatabaseStatusRepository
from backend.features.accounts.credentials import SystemCredentialService
@@ -12,6 +16,7 @@ from backend.features.accounts.service import (
AccountService,
MembershipService,
)
from backend.features.market import MarketService
from backend.security import PasswordHasher, load_or_create_cipher
@@ -24,6 +29,7 @@ class ApplicationContainer:
memberships: MembershipService
system_credentials: SystemCredentialService
model_pool: ModelPoolService
market: MarketService
def build_container(settings: Settings) -> ApplicationContainer:
@@ -32,12 +38,27 @@ def build_container(settings: Settings) -> ApplicationContainer:
credential_repository = SystemCredentialRepository()
model_pool_repository = ModelPoolRepository()
cipher = load_or_create_cipher(settings)
credentials = SystemCredentialService(database, credential_repository, cipher)
gateway = DataGateway(
database,
MarketRepository(),
(
TushareProvider(lambda: credentials.get("tushare_token")),
IfindProvider(
lambda: credentials.get("ifind_refresh_token"),
lambda: credentials.get("ifind_access_token"),
),
EastmoneyProvider(),
),
DataSourcePolicy(),
)
return ApplicationContainer(
settings=settings,
database=database,
database_status=DatabaseStatusRepository(database),
accounts=AccountService(database, account_repository, PasswordHasher(), cipher),
memberships=MembershipService(database, account_repository),
system_credentials=SystemCredentialService(database, credential_repository, cipher),
system_credentials=credentials,
model_pool=ModelPoolService(database, model_pool_repository, cipher),
market=MarketService(gateway),
)