42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
"""
|
|
组件服务
|
|
"""
|
|
# services/component_service.py
|
|
from typing import Dict, Any, List
|
|
from core.component import ComponentFactory
|
|
from utils.logger import get_logger
|
|
|
|
# 获取日志记录器
|
|
logger = get_logger(__name__)
|
|
|
|
class ComponentService:
|
|
"""组件服务,负责组件的注册和管理"""
|
|
|
|
def __init__(self):
|
|
self.component_factory = ComponentFactory
|
|
|
|
def get_all_component_types(self) -> List[str]:
|
|
"""获取所有组件类型"""
|
|
return self.component_factory.get_component_types()
|
|
|
|
def register_component(self, component_type: str, component_class) -> bool:
|
|
"""注册组件"""
|
|
try:
|
|
# 使用装饰器注册组件
|
|
decorated_class = self.component_factory.register(component_type)(component_class)
|
|
|
|
logger.info(f"注册组件: {component_type} -> {decorated_class.__name__}")
|
|
|
|
return True
|
|
except Exception as e:
|
|
logger.error(f"注册组件失败: {component_type}, 错误: {str(e)}")
|
|
return False
|
|
|
|
def auto_discover_components(self, package_name: str = "components") -> None:
|
|
"""自动发现并注册组件"""
|
|
try:
|
|
self.component_factory.auto_discover(package_name)
|
|
logger.info(f"自动发现组件完成: {package_name}")
|
|
except Exception as e:
|
|
logger.error(f"自动发现组件失败: {package_name}, 错误: {str(e)}")
|
|
raise |