| 
									
										
										
										
											2025-05-15 22:39:35 +08:00
										 |  |  | import type { NodeDefault } from '../../types' | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | import { BlockEnum } from '../../types' | 
					
						
							|  |  |  | import type { QuestionClassifierNodeType } from './types' | 
					
						
							| 
									
										
										
										
											2025-02-04 03:26:01 +02:00
										 |  |  | import { ALL_CHAT_AVAILABLE_BLOCKS, ALL_COMPLETION_AVAILABLE_BLOCKS } from '@/app/components/workflow/blocks' | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | const i18nPrefix = 'workflow' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const nodeDefault: NodeDefault<QuestionClassifierNodeType> = { | 
					
						
							|  |  |  |   defaultValue: { | 
					
						
							|  |  |  |     query_variable_selector: [], | 
					
						
							|  |  |  |     model: { | 
					
						
							|  |  |  |       provider: '', | 
					
						
							|  |  |  |       name: '', | 
					
						
							|  |  |  |       mode: 'chat', | 
					
						
							|  |  |  |       completion_params: { | 
					
						
							|  |  |  |         temperature: 0.7, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     classes: [ | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         id: '1', | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         id: '2', | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2024-12-11 14:21:38 +08:00
										 |  |  |     _targetBranches: [ | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         id: '1', | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         id: '2', | 
					
						
							|  |  |  |         name: '', | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |     ], | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  |     vision: { | 
					
						
							|  |  |  |       enabled: false, | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |   }, | 
					
						
							|  |  |  |   getAvailablePrevNodes(isChatMode: boolean) { | 
					
						
							|  |  |  |     const nodes = isChatMode | 
					
						
							|  |  |  |       ? ALL_CHAT_AVAILABLE_BLOCKS | 
					
						
							|  |  |  |       : ALL_COMPLETION_AVAILABLE_BLOCKS.filter(type => type !== BlockEnum.End) | 
					
						
							|  |  |  |     return nodes | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   getAvailableNextNodes(isChatMode: boolean) { | 
					
						
							|  |  |  |     const nodes = isChatMode ? ALL_CHAT_AVAILABLE_BLOCKS : ALL_COMPLETION_AVAILABLE_BLOCKS | 
					
						
							| 
									
										
										
										
											2024-05-27 21:57:08 +08:00
										 |  |  |     return nodes | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |   }, | 
					
						
							|  |  |  |   checkValid(payload: QuestionClassifierNodeType, t: any) { | 
					
						
							|  |  |  |     let errorMessages = '' | 
					
						
							|  |  |  |     if (!errorMessages && (!payload.query_variable_selector || payload.query_variable_selector.length === 0)) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.questionClassifiers.inputVars`) }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!errorMessages && !payload.model.provider) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.questionClassifiers.model`) }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!errorMessages && (!payload.classes || payload.classes.length === 0)) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.questionClassifiers.class`) }) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (!errorMessages && (payload.classes.some(item => !item.name))) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.nodes.questionClassifiers.topicName`) }) | 
					
						
							| 
									
										
										
										
											2024-10-21 10:32:37 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if (!errorMessages && payload.vision?.enabled && !payload.vision.configs?.variable_selector?.length) | 
					
						
							|  |  |  |       errorMessages = t(`${i18nPrefix}.errorMsg.fieldRequired`, { field: t(`${i18nPrefix}.errorMsg.fields.visionVariable`) }) | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |     return { | 
					
						
							|  |  |  |       isValid: !errorMessages, | 
					
						
							|  |  |  |       errorMessage: errorMessages, | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default nodeDefault |