default.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import { BlockEnum, type NodeDefault } from '../../types'
  2. import { type IfElseNodeType, LogicalOperator } from './types'
  3. import { isEmptyRelatedOperator } from './utils'
  4. import { ALL_CHAT_AVAILABLE_BLOCKS, ALL_COMPLETION_AVAILABLE_BLOCKS } from '@/app/components/workflow/constants'
  5. const i18nPrefix = 'workflow.errorMsg'
  6. const nodeDefault: NodeDefault<IfElseNodeType> = {
  7. defaultValue: {
  8. _targetBranches: [
  9. {
  10. id: 'true',
  11. name: 'IF',
  12. },
  13. {
  14. id: 'false',
  15. name: 'ELSE',
  16. },
  17. ],
  18. cases: [
  19. {
  20. case_id: 'true',
  21. logical_operator: LogicalOperator.and,
  22. conditions: [],
  23. },
  24. ],
  25. },
  26. getAvailablePrevNodes(isChatMode: boolean) {
  27. const nodes = isChatMode
  28. ? ALL_CHAT_AVAILABLE_BLOCKS
  29. : ALL_COMPLETION_AVAILABLE_BLOCKS.filter(type => type !== BlockEnum.End)
  30. return nodes
  31. },
  32. getAvailableNextNodes(isChatMode: boolean) {
  33. const nodes = isChatMode ? ALL_CHAT_AVAILABLE_BLOCKS : ALL_COMPLETION_AVAILABLE_BLOCKS
  34. return nodes
  35. },
  36. checkValid(payload: IfElseNodeType, t: any) {
  37. let errorMessages = ''
  38. const { cases } = payload
  39. if (!cases || cases.length === 0)
  40. errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: 'IF' })
  41. cases.forEach((caseItem, index) => {
  42. if (!caseItem.conditions.length)
  43. errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: index === 0 ? 'IF' : 'ELIF' })
  44. caseItem.conditions.forEach((condition) => {
  45. if (!errorMessages && (!condition.variable_selector || condition.variable_selector.length === 0))
  46. errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t(`${i18nPrefix}.fields.variable`) })
  47. if (!errorMessages && !condition.comparison_operator)
  48. errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t('workflow.nodes.ifElse.operator') })
  49. if (!errorMessages && !isEmptyRelatedOperator(condition.comparison_operator!) && !condition.value)
  50. errorMessages = t(`${i18nPrefix}.fieldRequired`, { field: t(`${i18nPrefix}.fields.variableValue`) })
  51. })
  52. })
  53. return {
  54. isValid: !errorMessages,
  55. errorMessage: errorMessages,
  56. }
  57. },
  58. }
  59. export default nodeDefault