Files
operating-room-monitor-server/app/dependencies.py
Kevin 0c05463617 feat: 语音确认、联调与运维增强
- 语音:序数解析(第一个/第二个等)、解析失败计数与 API detail.retry_remaining;
  百度 ASR 固定 dev_pid 为普通话;SurgeryPipelineError 支持 extra 并入 HTTP detail。
- Demo:demo 路由与假 RTSP、客户端 index 与 README;BackendResolver 与配置调整。
- 可观测:消耗 TSV 日志、语音文件日志、终端 Markdown 辅助;相关测试与依赖更新。
- 注意:.env 仍被 gitignore,本地密钥不会进入本提交。

Made-with: Cursor
2026-04-23 14:24:20 +08:00

66 lines
2.3 KiB
Python

from loguru import logger
from app.config import settings
from app.repositories.surgery_results import SurgeryResultRepository
from app.repositories.voice_audits import VoiceAuditRepository
from app.services.baidu_speech import BaiduSpeechService
from app.services.consumable_vision_algorithm import ConsumableVisionAlgorithmService
from app.services.minio_audio_storage import MinioAudioStorageService
from app.services.surgery_pipeline import SurgeryPipeline
from app.services.voice_resolution import VoiceConfirmationService
from app.services.video.hikvision_runtime import HikvisionRuntime
from app.services.video.session_manager import CameraSessionManager
consumable_vision_algorithm_service = ConsumableVisionAlgorithmService()
hikvision_runtime = HikvisionRuntime.try_load(settings.hikvision_lib_dir)
if settings.hikvision_sdk_enabled and hikvision_runtime is None:
logger.warning(
"HIKVISION_SDK_ENABLED=true but no HCNetSDK library loaded "
"(check HIKVISION_LIB_DIR / mount /opt/hikvision/lib)"
)
surgery_result_repository = SurgeryResultRepository()
voice_audit_repository = VoiceAuditRepository()
baidu_speech_service = BaiduSpeechService()
minio_audio_storage_service = MinioAudioStorageService(settings)
camera_session_manager = CameraSessionManager(
settings=settings,
vision_algorithm=consumable_vision_algorithm_service,
hikvision_runtime=hikvision_runtime,
result_repository=surgery_result_repository,
)
voice_confirmation_service = VoiceConfirmationService(
settings=settings,
sessions=camera_session_manager,
baidu=baidu_speech_service,
minio=minio_audio_storage_service,
audits=voice_audit_repository,
)
surgery_pipeline = SurgeryPipeline(
camera_session_manager,
result_repository=surgery_result_repository,
voice_confirmation=voice_confirmation_service,
)
def get_consumable_vision_algorithm_service() -> ConsumableVisionAlgorithmService:
return consumable_vision_algorithm_service
def get_surgery_pipeline() -> SurgeryPipeline:
return surgery_pipeline
def get_camera_session_manager() -> CameraSessionManager:
return camera_session_manager
def get_surgery_result_repository() -> SurgeryResultRepository:
return surgery_result_repository
def get_voice_confirmation_service() -> VoiceConfirmationService:
return voice_confirmation_service