billing integration into ai workflow

This commit is contained in:
ValueOn AG 2026-02-04 22:10:45 +01:00
parent 919f6e4b7d
commit 46e58bf019
2 changed files with 11 additions and 7 deletions

View file

@ -30,6 +30,7 @@ export function useDashboardInputForm(instanceId: string) {
const [optimisticMessage, setOptimisticMessage] = useState<WorkflowMessage | null>(null); const [optimisticMessage, setOptimisticMessage] = useState<WorkflowMessage | null>(null);
const [selectedPromptId, setSelectedPromptId] = useState<string | null>(null); const [selectedPromptId, setSelectedPromptId] = useState<string | null>(null);
const [workflowMode, setWorkflowMode] = useState<'Dynamic' | 'Automation' | null>(null); const [workflowMode, setWorkflowMode] = useState<'Dynamic' | 'Automation' | null>(null);
const [selectedProvider, setSelectedProvider] = useState<string>(''); // AI provider selection
const { checkPermission, canView } = usePermissions(); const { checkPermission, canView } = usePermissions();
const [playgroundUIPermission, setPlaygroundUIPermission] = useState<boolean>(false); const [playgroundUIPermission, setPlaygroundUIPermission] = useState<boolean>(false);
@ -594,7 +595,8 @@ export function useDashboardInputForm(instanceId: string) {
const requestBody = { const requestBody = {
prompt: trimmedInput, prompt: trimmedInput,
listFileId: fileIdsToSend.length > 0 ? fileIdsToSend : undefined, listFileId: fileIdsToSend.length > 0 ? fileIdsToSend : undefined,
userLanguage: 'en' userLanguage: 'en',
preferredProvider: selectedProvider || undefined // AI provider selection
}; };
const result = await startWorkflow(requestBody, workflowOptions); const result = await startWorkflow(requestBody, workflowOptions);
@ -636,7 +638,7 @@ export function useDashboardInputForm(instanceId: string) {
setWorkflowStatusOptimistic('idle'); setWorkflowStatusOptimistic('idle');
} }
} }
}, [inputValue, pendingFiles, isRunning, workflowId, startingWorkflow, startWorkflow, stopWorkflow, resetWorkflow, refetchWorkflows, selectWorkflowFromContext, selectWorkflow, chatWorkflowPermission, workflowMode, setWorkflowStatusOptimistic]); }, [inputValue, pendingFiles, isRunning, workflowId, startingWorkflow, startWorkflow, stopWorkflow, resetWorkflow, refetchWorkflows, selectWorkflowFromContext, selectWorkflow, chatWorkflowPermission, workflowMode, selectedProvider, setWorkflowStatusOptimistic]);
useEffect(() => { useEffect(() => {
const handleWorkflowCleared = () => { const handleWorkflowCleared = () => {
@ -820,7 +822,10 @@ export function useDashboardInputForm(instanceId: string) {
allUserFiles: fileContext.files || [], allUserFiles: fileContext.files || [],
handleFileAttach, handleFileAttach,
handleFileUploadAndAttach, handleFileUploadAndAttach,
latestStats latestStats,
// AI Provider selection
selectedProvider,
onProviderSelect: setSelectedProvider
}; };
} }

View file

@ -58,6 +58,8 @@ export const PlaygroundPage: React.FC = () => {
deletingFiles, deletingFiles,
previewingFiles, previewingFiles,
downloadingFiles, downloadingFiles,
selectedProvider,
onProviderSelect,
} = hookData; } = hookData;
const { prompts, refetch: refetchPrompts } = usePrompts(); const { prompts, refetch: refetchPrompts } = usePrompts();
@ -93,9 +95,6 @@ export const PlaygroundPage: React.FC = () => {
// Prompts dropdown state // Prompts dropdown state
const [selectedPromptId, setSelectedPromptId] = useState<string>(''); const [selectedPromptId, setSelectedPromptId] = useState<string>('');
// AI Provider selection state
const [selectedProvider, setSelectedProvider] = useState<string>('');
// Load prompts on mount // Load prompts on mount
useEffect(() => { useEffect(() => {
refetchPrompts(); refetchPrompts();
@ -788,7 +787,7 @@ export const PlaygroundPage: React.FC = () => {
</button> </button>
<ProviderSelect <ProviderSelect
value={selectedProvider} value={selectedProvider}
onChange={setSelectedProvider} onChange={onProviderSelect}
showLabel={false} showLabel={false}
/> />
<VoiceLanguageSelect <VoiceLanguageSelect