fix: minor bug fixes to chatbot to work with service center
This commit is contained in:
parent
47340e6949
commit
9d1a8d53fc
3 changed files with 33 additions and 7 deletions
|
|
@ -204,7 +204,7 @@ def getChatStreamingHelper():
|
||||||
def __get_placeholder_user():
|
def __get_placeholder_user():
|
||||||
"""Placeholder user for contexts that only need service resolution (e.g. ChatStreamingHelper)."""
|
"""Placeholder user for contexts that only need service resolution (e.g. ChatStreamingHelper)."""
|
||||||
from modules.datamodels.datamodelUam import User
|
from modules.datamodels.datamodelUam import User
|
||||||
return User(id="system", email="system@placeholder", firstName="System", lastName="Placeholder")
|
return User(id="system", username="system", email=None, fullName="System Placeholder")
|
||||||
|
|
||||||
|
|
||||||
def getEventManager(user, mandateId: Optional[str] = None, featureInstanceId: Optional[str] = None):
|
def getEventManager(user, mandateId: Optional[str] = None, featureInstanceId: Optional[str] = None):
|
||||||
|
|
@ -333,6 +333,22 @@ def getChatbotServices(
|
||||||
hub.ai = PublicService(AiService(hub), functionsOnly=False)
|
hub.ai = PublicService(AiService(hub), functionsOnly=False)
|
||||||
hub.streaming = PublicService(StreamingService(hub))
|
hub.streaming = PublicService(StreamingService(hub))
|
||||||
|
|
||||||
|
# Resolve billing from service center (required for _preflight_billing_check and billing callback)
|
||||||
|
try:
|
||||||
|
from modules.serviceCenter import getService
|
||||||
|
from modules.serviceCenter.context import ServiceCenterContext
|
||||||
|
_workflow = workflow or type("_Placeholder", (), {"featureCode": FEATURE_CODE})()
|
||||||
|
ctx = ServiceCenterContext(
|
||||||
|
user=user,
|
||||||
|
mandate_id=mandateId,
|
||||||
|
feature_instance_id=featureInstanceId,
|
||||||
|
workflow=_workflow,
|
||||||
|
)
|
||||||
|
hub.billing = getService("billing", ctx, legacy_hub=None)
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"Could not resolve billing service for chatbot: {e}")
|
||||||
|
hub.billing = None
|
||||||
|
|
||||||
return hub
|
return hub
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -358,6 +374,7 @@ class _ChatbotServiceHub:
|
||||||
return self._interfaceDbComponent_val
|
return self._interfaceDbComponent_val
|
||||||
chat = None
|
chat = None
|
||||||
ai = None
|
ai = None
|
||||||
|
billing = None
|
||||||
streaming = None
|
streaming = None
|
||||||
featureCode = "chatbot"
|
featureCode = "chatbot"
|
||||||
allowedProviders = None
|
allowedProviders = None
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ from modules.datamodels.datamodelUam import User
|
||||||
from modules.datamodels.datamodelAi import AiCallRequest, AiCallOptions, OperationTypeEnum, ProcessingModeEnum
|
from modules.datamodels.datamodelAi import AiCallRequest, AiCallOptions, OperationTypeEnum, ProcessingModeEnum
|
||||||
from modules.datamodels.datamodelDocref import DocumentReferenceList, DocumentItemReference
|
from modules.datamodels.datamodelDocref import DocumentReferenceList, DocumentItemReference
|
||||||
from modules.shared.timeUtils import getUtcTimestamp, parseTimestamp
|
from modules.shared.timeUtils import getUtcTimestamp, parseTimestamp
|
||||||
from modules.features.chatbot.mainChatbot import getChatbotServices
|
from modules.features.chatbot.mainChatbot import getChatbotServices, getChatStreamingHelper
|
||||||
from modules.features.chatbot.chatbot import Chatbot
|
from modules.features.chatbot.chatbot import Chatbot
|
||||||
from modules.features.chatbot.bridges.ai import AICenterChatModel, clear_workflow_allowed_providers
|
from modules.features.chatbot.bridges.ai import AICenterChatModel, clear_workflow_allowed_providers
|
||||||
from modules.features.chatbot.bridges.memory import DatabaseCheckpointer
|
from modules.features.chatbot.bridges.memory import DatabaseCheckpointer
|
||||||
|
|
@ -1391,9 +1391,9 @@ async def _processChatbotMessageLangGraph(
|
||||||
)
|
)
|
||||||
|
|
||||||
# Create chatbot instance with config for dynamic tool configuration
|
# Create chatbot instance with config for dynamic tool configuration
|
||||||
chat_streaming_helper = None
|
# Use mainChatbot.getChatStreamingHelper() - resolves from service center (legacy hub.streaming has no getChatStreamingHelper)
|
||||||
if services.streaming:
|
from modules.features.chatbot.mainChatbot import getChatStreamingHelper
|
||||||
chat_streaming_helper = services.streaming.getChatStreamingHelper()
|
chat_streaming_helper = getChatStreamingHelper()
|
||||||
if not chat_streaming_helper:
|
if not chat_streaming_helper:
|
||||||
logger.warning("ChatStreamingHelper not available from streaming service; message normalization may fail")
|
logger.warning("ChatStreamingHelper not available from streaming service; message normalization may fail")
|
||||||
chatbot = await Chatbot.create(
|
chatbot = await Chatbot.create(
|
||||||
|
|
|
||||||
|
|
@ -199,8 +199,17 @@ def getRecordsetWithRBAC(
|
||||||
# Add additional record filters
|
# Add additional record filters
|
||||||
if recordFilter:
|
if recordFilter:
|
||||||
for field, value in recordFilter.items():
|
for field, value in recordFilter.items():
|
||||||
whereConditions.append(f'"{field}" = %s')
|
if isinstance(value, (list, tuple)):
|
||||||
whereValues.append(value)
|
if len(value) == 0:
|
||||||
|
whereConditions.append("1 = 0") # Empty IN -> no matches
|
||||||
|
else:
|
||||||
|
whereConditions.append(f'"{field}" = ANY(%s)')
|
||||||
|
whereValues.append(list(value))
|
||||||
|
elif value is None:
|
||||||
|
whereConditions.append(f'"{field}" IS NULL')
|
||||||
|
else:
|
||||||
|
whereConditions.append(f'"{field}" = %s')
|
||||||
|
whereValues.append(value)
|
||||||
|
|
||||||
# Build the query
|
# Build the query
|
||||||
whereClause = ""
|
whereClause = ""
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue