@@ -63,6 +63,7 @@ def _bootstrap_dev_entry() -> None:
6363from app .server .bootstrap import GrpcServers , start_grpc_servers , stop_grpc_servers
6464from app .server .handboard .audio .service import AudioService
6565from app .server .handboard .audio .store import MaterialsStore , create_materials_store
66+ from app .server .somni .audio .catalog import AudioCatalogService as SomniAudioService
6667from app .server .somni .quiz .service import QuizService as SomniQuizService
6768from app .server .somni .report .service import ReportService as SomniReportService
6869from app .services .retrieval import RetrievalService
@@ -73,6 +74,7 @@ def _bootstrap_dev_entry() -> None:
7374class AppState :
7475 settings : Settings
7576 es_client : AsyncElasticsearch | None = None
77+ somni_es_client : AsyncElasticsearch | None = None
7678 encoder : Encoder | None = None
7779 materials_store : MaterialsStore | None = None
7880 somni_mongo_client : AsyncIOMotorClient | None = None
@@ -82,6 +84,7 @@ class AppState:
8284 audio_service : AudioService | None = None
8385 somni_quiz_service : SomniQuizService | None = None
8486 somni_report_service : SomniReportService | None = None
87+ somni_audio_service : SomniAudioService | None = None
8588 search_cache : AudioSearchCache | None = None
8689 sleep_stage_cache : SleepStageCandidateCache | None = None
8790 grpc_servers : GrpcServers | None = None
@@ -171,10 +174,27 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]:
171174 somni_mongo = AsyncIOMotorClient (settings .somni_mongo_uri )
172175 _app_state .somni_mongo_client = somni_mongo
173176 else :
174- logger .warning ("未配置 SOMNI_MONGO_URI,量产问卷将不可用 " )
177+ logger .warning ("未配置 SOMNI_MONGO_URI,量产问卷与音频查询将不可用 " )
175178
176179 _app_state .somni_quiz_service = SomniQuizService (somni_mongo , settings )
177180 _app_state .somni_report_service = SomniReportService ()
181+ somni_es_client = create_es_client (
182+ settings ,
183+ node = settings .effective_somni_es_node ,
184+ )
185+ _app_state .somni_es_client = somni_es_client
186+ somni_es_search = EsSearch (
187+ somni_es_client ,
188+ settings ,
189+ audio_index = settings .somni_es_audio_index ,
190+ tag_dictionary_index = settings .somni_es_tag_vectors_index ,
191+ )
192+ _app_state .somni_audio_service = SomniAudioService (
193+ somni_mongo ,
194+ settings ,
195+ es_search = somni_es_search ,
196+ encoder = encoder ,
197+ )
178198
179199 start_sync_scheduler (_app_state , settings )
180200 _app_state .grpc_servers = await start_grpc_servers (_app_state , settings )
@@ -191,6 +211,7 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]:
191211 materials_store .close ()
192212 if somni_mongo is not None :
193213 somni_mongo .close ()
214+ await somni_es_client .close ()
194215 await es_client .close ()
195216
196217
0 commit comments