billing fix
This commit is contained in:
parent
92ee130c0a
commit
d88bacc4a9
2 changed files with 30 additions and 7 deletions
|
|
@ -412,9 +412,15 @@ async def bridgeAudioWebsocket(
|
||||||
logger.info(f"Bridge audio WebSocket config loaded: session={sessionId}")
|
logger.info(f"Bridge audio WebSocket config loaded: session={sessionId}")
|
||||||
|
|
||||||
from modules.datamodels.datamodelUam import User
|
from modules.datamodels.datamodelUam import User
|
||||||
systemUser = User(id="system", username="system", email="p.motsch@poweron.swiss")
|
systemUser = User(id="system", username="system", email="system@internal.local")
|
||||||
service = TeamsbotService(systemUser, None, instanceId, config)
|
|
||||||
logger.info(f"Bridge audio WebSocket service created: session={sessionId}")
|
# Look up mandateId from the session record (needed for AI billing context)
|
||||||
|
sessionInterface = interfaceDb.getInterface(systemUser, featureInstanceId=instanceId)
|
||||||
|
session = sessionInterface.getSession(sessionId)
|
||||||
|
mandateId = session.get("mandateId") if session else None
|
||||||
|
|
||||||
|
service = TeamsbotService(systemUser, mandateId, instanceId, config)
|
||||||
|
logger.info(f"Bridge audio WebSocket service created: session={sessionId}, mandateId={mandateId}")
|
||||||
|
|
||||||
await service.handleAudioStream(websocket, sessionId)
|
await service.handleAudioStream(websocket, sessionId)
|
||||||
except WebSocketDisconnect:
|
except WebSocketDisconnect:
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,22 @@ from .bridgeConnector import BridgeConnector
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
# =========================================================================
|
||||||
|
# Minimal Service Context (for AI billing in bridge callbacks)
|
||||||
|
# =========================================================================
|
||||||
|
|
||||||
|
class _ServiceContext:
|
||||||
|
"""Minimal context providing user/mandate info for AiService billing.
|
||||||
|
Used by bridge callbacks where a full Services instance is not available."""
|
||||||
|
|
||||||
|
def __init__(self, user, mandateId, featureInstanceId=None):
|
||||||
|
self.user = user
|
||||||
|
self.mandateId = mandateId
|
||||||
|
self.featureInstanceId = featureInstanceId
|
||||||
|
self.featureCode = "teamsbot"
|
||||||
|
|
||||||
|
|
||||||
# =========================================================================
|
# =========================================================================
|
||||||
# Session Event Queues (for SSE streaming to frontend)
|
# Session Event Queues (for SSE streaming to frontend)
|
||||||
# =========================================================================
|
# =========================================================================
|
||||||
|
|
@ -377,9 +393,9 @@ class TeamsbotService:
|
||||||
try:
|
try:
|
||||||
from modules.services.serviceAi.mainServiceAi import AiService
|
from modules.services.serviceAi.mainServiceAi import AiService
|
||||||
|
|
||||||
# Create AiService with service center context
|
# Create minimal service context for AI billing
|
||||||
# Note: In production, serviceCenter should be passed properly
|
serviceContext = _ServiceContext(self.currentUser, self.mandateId, self.instanceId)
|
||||||
aiService = AiService(serviceCenter=None)
|
aiService = AiService(serviceCenter=serviceContext)
|
||||||
await aiService.ensureAiObjectsInitialized()
|
await aiService.ensureAiObjectsInitialized()
|
||||||
|
|
||||||
request = AiCallRequest(
|
request = AiCallRequest(
|
||||||
|
|
@ -528,7 +544,8 @@ class TeamsbotService:
|
||||||
|
|
||||||
from modules.services.serviceAi.mainServiceAi import AiService
|
from modules.services.serviceAi.mainServiceAi import AiService
|
||||||
|
|
||||||
aiService = AiService(serviceCenter=None)
|
serviceContext = _ServiceContext(self.currentUser, self.mandateId, self.instanceId)
|
||||||
|
aiService = AiService(serviceCenter=serviceContext)
|
||||||
await aiService.ensureAiObjectsInitialized()
|
await aiService.ensureAiObjectsInitialized()
|
||||||
|
|
||||||
request = AiCallRequest(
|
request = AiCallRequest(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue