52 lines
2.1 KiB
Python
52 lines
2.1 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.",
|
|
parameters={
|
|
"sqlQuery": WorkflowActionParameter(
|
|
name="sqlQuery",
|
|
type="str",
|
|
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="List[str]",
|
|
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__)
|
|
|