_handlers.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from __future__ import annotations
  2. from typing import Any, Awaitable, Callable, Dict
  3. from app.core.config import GlobalConfigSettings
  4. from app.core.database import DatabaseManager
  5. from app.core.observability import LogService
  6. from ._mapper import LongArticlesMcpMapper
  7. from ._utils import LongArticlesMcpUtils
  8. class LongArticlesMcpHandlers:
  9. """MCP 处理层:每个 task_name 对应一个同名 handler 方法。"""
  10. def __init__(self, pool: DatabaseManager, log_service: LogService, config: GlobalConfigSettings):
  11. self.log_service = log_service
  12. self.config = config
  13. self.tools = LongArticlesMcpUtils()
  14. self.mapper = LongArticlesMcpMapper(pool=pool)
  15. def get_handler(self, task_name: str) -> Callable[[Dict[str, Any]], Awaitable[Dict[str, Any]]]:
  16. """根据 task_name 查找同名方法,未找到时抛出 KeyError。"""
  17. method = getattr(self, task_name, None)
  18. if method is None or not callable(method):
  19. raise KeyError(task_name)
  20. return method
  21. # ---- 下面是各 task_name 对应的 handler 方法,统一签名 ----
  22. async def get_decode_response(self, params: Dict[str, Any]) -> Dict[str, Any]:
  23. """get_decode_response 处理逻辑(待实现)。"""
  24. pass
  25. __all__ = ["LongArticlesMcpHandlers"]