gateway/modules/workflows/methods/methodChatbot/methodChatbot.py
2026-04-25 01:13:01 +02:00

55 lines
2.2 KiB
Python

# Copyright (c) 2025 Patrick Motsch
# All rights reserved.
import logging
from modules.workflows.methods.methodBase import MethodBase
from modules.datamodels.datamodelWorkflowActions import WorkflowActionDefinition, WorkflowActionParameter
from modules.shared.frontendTypes import FrontendType
# Import actions
from .actions.queryDatabase import queryDatabase
logger = logging.getLogger(__name__)
class MethodChatbot(MethodBase):
"""Chatbot operations methods."""
def __init__(self, services):
super().__init__(services)
self.name = "chatbot"
self.description = "Chatbot operations"
# RBAC-Integration: Action-Definitionen mit actionId
self._actions = {
"queryDatabase": WorkflowActionDefinition(
actionId="chatbot.queryDatabase",
description="Execute a SQL SELECT query via the preprocessor connector. Returns formatted query results.",
dynamicMode=False,
outputType="QueryResult",
parameters={
"sqlQuery": WorkflowActionParameter(
name="sqlQuery",
type="str",
uiHint="textarea",
frontendType=FrontendType.TEXTAREA,
required=False,
description="SQL SELECT query to execute. If not provided, will attempt to extract from analysis_result document in documentList."
),
"documentList": WorkflowActionParameter(
name="documentList",
type="DocumentList",
frontendType=FrontendType.DOCUMENT_REFERENCE,
required=False,
description="Document reference(s) containing analysis_result with sqlQuery field. Used if sqlQuery parameter is not provided."
)
},
execute=queryDatabase.__get__(self, self.__class__)
)
}
# Validate actions after definition
self._validateActions()
# Register actions as methods (optional, für direkten Zugriff)
self.queryDatabase = queryDatabase.__get__(self, self.__class__)