| """ |
| FastAPI 依赖注入 |
| 提供服务实例的创建和管理 |
| """ |
| from fastapi import Depends |
| from src.services.task_service import TaskService |
| from src.services.notification_service import NotificationService |
| from src.services.ai_service import AIAnalysisService |
| from src.services.process_service import ProcessService |
| from src.infrastructure.persistence.json_task_repository import JsonTaskRepository |
| from src.infrastructure.external.ai_client import AIClient |
| from src.infrastructure.external.notification_clients.ntfy_client import NtfyClient |
| from src.infrastructure.external.notification_clients.bark_client import BarkClient |
| from src.infrastructure.external.notification_clients.telegram_client import TelegramClient |
| from src.infrastructure.config.settings import notification_settings |
|
|
|
|
| |
| _process_service_instance = None |
|
|
|
|
| def set_process_service(service: ProcessService): |
| """设置全局 ProcessService 实例""" |
| global _process_service_instance |
| _process_service_instance = service |
|
|
|
|
| |
| def get_task_service() -> TaskService: |
| """获取任务管理服务实例""" |
| repository = JsonTaskRepository() |
| return TaskService(repository) |
|
|
|
|
| def get_notification_service() -> NotificationService: |
| """获取通知服务实例""" |
| clients = [ |
| NtfyClient(notification_settings.ntfy_topic_url), |
| BarkClient(notification_settings.bark_url), |
| TelegramClient( |
| notification_settings.telegram_bot_token, |
| notification_settings.telegram_chat_id |
| ) |
| ] |
| return NotificationService(clients) |
|
|
|
|
| def get_ai_service() -> AIAnalysisService: |
| """获取AI分析服务实例""" |
| ai_client = AIClient() |
| return AIAnalysisService(ai_client) |
|
|
|
|
| def get_process_service() -> ProcessService: |
| """获取进程管理服务实例""" |
| if _process_service_instance is None: |
| raise RuntimeError("ProcessService 未初始化") |
| return _process_service_instance |
|
|