""" 模板渲染节点 """ import logging from typing import Any, Dict from ..base import BaseNode, NodeContext, NodeResult from ..registry import NodeRegistry logger = logging.getLogger(__name__) @NodeRegistry.register class TemplateNode(BaseNode): """ 模板渲染节点 使用变量渲染模板字符串 """ node_type = 'template' node_name = '模板' node_category = 'data' node_icon = 'file-text' node_description = '使用变量渲染模板字符串' inputs = [ { 'name': 'template', 'type': 'string', 'description': '模板字符串', }, ] outputs = [ { 'name': 'result', 'type': 'string', 'description': '渲染结果', }, ] def execute(self, context: NodeContext) -> NodeResult: """执行模板渲染""" try: template = self.config.get('template', '') output_variable = self.config.get('output_variable', 'template_result') # 渲染模板 result = context.resolve_template(template) return NodeResult( success=True, output=result, output_variables={output_variable: result}, ) except Exception as e: logger.exception(f'模板节点执行失败: {e}') return NodeResult( success=False, error=str(e), ) @classmethod def get_config_schema(cls) -> Dict[str, Any]: """获取配置 Schema""" return { 'type': 'object', 'properties': { 'template': { 'type': 'string', 'title': '模板', 'description': '支持变量引用,如 {{variable_name}}', 'format': 'textarea', }, 'output_variable': { 'type': 'string', 'title': '输出变量名', 'default': 'template_result', }, }, 'required': ['template'], }