rebuild(stage-10): deliver mentor and unified llm streaming

This commit is contained in:
leefer
2026-07-30 05:52:12 +08:00
parent 532f0cfc11
commit f1fa104641
62 changed files with 6880 additions and 7 deletions
+31 -4
View File
@@ -19,8 +19,14 @@ from backend.features.accounts.service import (
from backend.features.market import MarketService
from backend.features.market.insights import MarketInsightService
from backend.features.market.sync import MarketSnapshotService
from backend.features.mentor.context import MentorContextBuilder
from backend.features.mentor.repository import MentorRepository
from backend.features.mentor.service import MentorService
from backend.features.mentor.skills import MentorSkillRegistry
from backend.features.screener.repository import ScreenerRepository
from backend.features.screener.service import ScreenerService
from backend.llm import LLMGateway
from backend.llm.repository import LLMRepository
from backend.security import PasswordHasher, load_or_create_cipher
@@ -35,6 +41,8 @@ class ApplicationContainer:
model_pool: ModelPoolService
market: MarketService
screener: ScreenerService
llm: LLMGateway
mentor: MentorService
def build_container(settings: Settings) -> ApplicationContainer:
@@ -42,6 +50,7 @@ def build_container(settings: Settings) -> ApplicationContainer:
account_repository = AccountRepository()
credential_repository = SystemCredentialRepository()
model_pool_repository = ModelPoolRepository()
screener_repository = ScreenerRepository()
cipher = load_or_create_cipher(settings)
credentials = SystemCredentialService(database, credential_repository, cipher)
tushare = TushareProvider(lambda: credentials.get("tushare_token"))
@@ -64,14 +73,32 @@ def build_container(settings: Settings) -> ApplicationContainer:
MarketSnapshotService(database, market_repository, gateway),
MarketInsightService(database, market_repository, gateway),
)
accounts = AccountService(database, account_repository, PasswordHasher(), cipher)
memberships = MembershipService(database, account_repository)
model_pool = ModelPoolService(database, model_pool_repository, cipher)
screener = ScreenerService(database, screener_repository, market_repository, gateway)
llm = LLMGateway(database, LLMRepository(), memberships, model_pool)
mentor = MentorService(
database,
MentorRepository(),
MentorSkillRegistry(
settings.mentor_skills_directory,
settings.private_mentor_skills_directory,
),
MentorContextBuilder(database, market_repository, screener_repository, gateway),
gateway,
llm,
)
return ApplicationContainer(
settings=settings,
database=database,
database_status=DatabaseStatusRepository(database),
accounts=AccountService(database, account_repository, PasswordHasher(), cipher),
memberships=MembershipService(database, account_repository),
accounts=accounts,
memberships=memberships,
system_credentials=credentials,
model_pool=ModelPoolService(database, model_pool_repository, cipher),
model_pool=model_pool,
market=market,
screener=ScreenerService(database, ScreenerRepository(), market_repository, gateway),
screener=screener,
llm=llm,
mentor=mentor,
)