From cd2d1517a6c6bb3f47dda59f3644ce6816824862 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 23 Aug 2026 10:36:09 +0800 Subject: [PATCH] refactor(site): route runtime queries through explicit repository --- app/startup/modules_initializer.py | 5 ++++- app/startup/site.py | 32 ++++++++++++++++++++++++++++++ tests/conftest.py | 2 +- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/app/startup/modules_initializer.py b/app/startup/modules_initializer.py index 993bbdae8..a3af35fc2 100644 --- a/app/startup/modules_initializer.py +++ b/app/startup/modules_initializer.py @@ -723,7 +723,10 @@ async def init_modules() -> HostRuntime: ) configure_passkey_service(PasskeyService(repository=PassKeyOper())) configure_transfer_history_provider(lambda: TransferHistoryOper()) - configure_site_query_service(SiteQueryService(repository=SiteOper())) + configure_site_query_service(SiteQueryService(repository=TransactionalSiteRepository( + sync_session=SessionFactory, + async_session=async_session_scope, + ))) configure_site_health_service(SiteHealthService(repository=TransactionalSiteRepository( sync_session=SessionFactory, async_session=async_session_scope, diff --git a/app/startup/site.py b/app/startup/site.py index 8f07bb42b..f695d2425 100644 --- a/app/startup/site.py +++ b/app/startup/site.py @@ -88,6 +88,14 @@ class TransactionalSiteRepository: """查询全部站点。""" return self._read(lambda repository: repository.list()) + def list_order_by_pri(self) -> list[Any]: + """同步按优先级查询站点。""" + return self._read(lambda repository: repository.list_order_by_pri()) + + def get_userdata_latest(self) -> list[Any]: + """同步查询各站点最新用户数据。""" + return self._read(lambda repository: repository.get_userdata_latest()) + async def async_get(self, site_id: int) -> Any: """异步按 ID 查询站点。""" return await self._async_read(lambda repository: repository.async_get(site_id)) @@ -130,6 +138,30 @@ class TransactionalSiteRepository: lambda repository: repository.async_get_userdata_by_domain(domain, workdate) ) + async def async_get_userdata_latest(self) -> list[Any]: + """异步查询各站点最新用户数据。""" + return await self._async_read( + lambda repository: repository.async_get_userdata_latest() + ) + + async def async_get_icon_by_domain(self, domain: str) -> Any: + """异步按域名查询站点图标。""" + return await self._async_read( + lambda repository: repository.async_get_icon_by_domain(domain) + ) + + async def async_get_statistic_by_domain(self, domain: str) -> Any: + """异步按域名查询站点统计。""" + return await self._async_read( + lambda repository: repository.async_get_statistic_by_domain(domain) + ) + + async def async_list_statistics(self) -> list[Any]: + """异步查询全部站点统计。""" + return await self._async_read( + lambda repository: repository.async_list_statistics() + ) + def update(self, site_id: int, payload: dict[str, Any]) -> Any: """更新站点并提交事务。""" return self._write(lambda repository: repository.update(site_id, payload)) diff --git a/tests/conftest.py b/tests/conftest.py index f05d16fef..378b14565 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -238,7 +238,7 @@ def configure_plugin_system_services(): module_dispatcher_factory=ModuleInvocationDispatcher, configuration=build_chain_runtime_config(settings), )) - configure_site_query_service(SiteQueryService(repository=SiteOper())) + configure_site_query_service(SiteQueryService(repository=site_repository())) configure_site_health_service(SiteHealthService(repository=site_repository())) configure_workflow_query(WorkflowQueryService(repository=WorkflowOper())) from app.db.oper.agenttask import AgentTaskOper