| 
									
										
										
										
											2025-05-15 22:39:35 +08:00
										 |  |  | import type { NodeDefault } from '../../types' | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | import type { QuestionClassifierNodeType } from './types' | 
					
						
							| 
									
										
										
										
											2025-04-24 16:29:58 +08:00
										 |  |  | import { genNodeMetaData } from '@/app/components/workflow/utils' | 
					
						
							|  |  |  | import { BlockEnum } from '@/app/components/workflow/types' | 
					
						
							|  |  |  | import { BlockClassificationEnum } from '@/app/components/workflow/block-selector/types' | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | const i18nPrefix = 'workflow' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-29 16:11:54 +08:00
										 |  |  | const metaData = genNodeMetaData({ | 
					
						
							|  |  |  |   classification: BlockClassificationEnum.QuestionUnderstand, | 
					
						
							|  |  |  |   sort: 1, | 
					
						
							|  |  |  |   type: BlockEnum.QuestionClassifier, | 
					
						
							|  |  |  | }) | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  | const nodeDefault: NodeDefault<QuestionClassifierNodeType> = { | 
					
						
							| 
									
										
										
										
											2025-04-29 16:11:54 +08:00
										 |  |  |   metaData, | 
					
						
							| 
									
										
										
										
											2024-04-08 18:51:46 +08:00
										 |  |  |   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
										 |  |  |   }, | 
					
						
							|  |  |  |   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 |