mirror of
https://github.com/OpenSquawk/OpenSquawk
synced 2026-08-05 17:05:53 +08:00
Enable flow-aware decision routing
This commit is contained in:
@@ -6,9 +6,16 @@ import {
|
||||
sanitizeLayout,
|
||||
sanitizeLLMTemplate,
|
||||
sanitizeMetadata,
|
||||
sanitizeNodeCondition,
|
||||
sanitizeNodeTrigger,
|
||||
sanitizeTransition,
|
||||
} from '../../../../utils/decisionSanitizer'
|
||||
import { serializeNodeDocument } from '../../../../services/decisionFlowService'
|
||||
import type {
|
||||
DecisionNodeCondition,
|
||||
DecisionNodeTrigger,
|
||||
DecisionNodeTransition,
|
||||
} from '~~/shared/types/decision'
|
||||
|
||||
const ROLE_SET = new Set(['pilot', 'atc', 'system'])
|
||||
|
||||
@@ -47,9 +54,44 @@ export default defineEventHandler(async (event) => {
|
||||
throw createError({ statusCode: 400, statusMessage: 'phase is required' })
|
||||
}
|
||||
|
||||
const transitions = Array.isArray(body.transitions)
|
||||
? body.transitions.map((transition: any, index: number) => sanitizeTransition(transition, index))
|
||||
: []
|
||||
let transitions: DecisionNodeTransition[] = []
|
||||
try {
|
||||
transitions = Array.isArray(body.transitions)
|
||||
? body.transitions.map((transition: any, index: number) => sanitizeTransition(transition, index))
|
||||
: []
|
||||
} catch (error: any) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: error?.message || 'Transition ungültig',
|
||||
data: { formError: error?.message || 'Transition ungültig', field: 'transitions' },
|
||||
})
|
||||
}
|
||||
|
||||
let triggers: DecisionNodeTrigger[] = []
|
||||
try {
|
||||
triggers = Array.isArray(body.triggers)
|
||||
? body.triggers.map((trigger: any, index: number) => sanitizeNodeTrigger(trigger, index))
|
||||
: []
|
||||
} catch (error: any) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: error?.message || 'Trigger ungültig',
|
||||
data: { formError: error?.message || 'Trigger ungültig', field: 'triggers' },
|
||||
})
|
||||
}
|
||||
|
||||
let conditions: DecisionNodeCondition[] = []
|
||||
try {
|
||||
conditions = Array.isArray(body.conditions)
|
||||
? body.conditions.map((condition: any, index: number) => sanitizeNodeCondition(condition, index))
|
||||
: []
|
||||
} catch (error: any) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: error?.message || 'Bedingung ungültig',
|
||||
data: { formError: error?.message || 'Bedingung ungültig', field: 'conditions' },
|
||||
})
|
||||
}
|
||||
|
||||
const layout = sanitizeLayout(body.layout) || { x: 0, y: 0 }
|
||||
const metadata = sanitizeMetadata(body.metadata)
|
||||
@@ -89,6 +131,8 @@ export default defineEventHandler(async (event) => {
|
||||
frequency: typeof body.frequency === 'string' ? body.frequency.trim() || undefined : undefined,
|
||||
frequencyName:
|
||||
typeof body.frequencyName === 'string' ? body.frequencyName.trim() || undefined : undefined,
|
||||
triggers,
|
||||
conditions,
|
||||
transitions,
|
||||
layout,
|
||||
metadata,
|
||||
|
||||
@@ -6,9 +6,16 @@ import {
|
||||
sanitizeLayout,
|
||||
sanitizeLLMTemplate,
|
||||
sanitizeMetadata,
|
||||
sanitizeNodeCondition,
|
||||
sanitizeNodeTrigger,
|
||||
sanitizeTransition,
|
||||
} from '../../../../../../utils/decisionSanitizer'
|
||||
import { serializeNodeDocument } from '../../../../../../services/decisionFlowService'
|
||||
import type {
|
||||
DecisionNodeCondition,
|
||||
DecisionNodeTrigger,
|
||||
DecisionNodeTransition,
|
||||
} from '~~/shared/types/decision'
|
||||
|
||||
const ROLE_SET = new Set(['pilot', 'atc', 'system'])
|
||||
|
||||
@@ -113,7 +120,49 @@ export default defineEventHandler(async (event) => {
|
||||
}
|
||||
|
||||
if (Array.isArray(body.transitions)) {
|
||||
node.transitions = body.transitions.map((transition: any, index: number) => sanitizeTransition(transition, index))
|
||||
let sanitizedTransitions: DecisionNodeTransition[]
|
||||
try {
|
||||
sanitizedTransitions = body.transitions.map((transition: any, index: number) =>
|
||||
sanitizeTransition(transition, index)
|
||||
)
|
||||
} catch (error: any) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: error?.message || 'Transition ungültig',
|
||||
data: { formError: error?.message || 'Transition ungültig', field: 'transitions' },
|
||||
})
|
||||
}
|
||||
node.transitions = sanitizedTransitions
|
||||
}
|
||||
|
||||
if (Array.isArray(body.triggers)) {
|
||||
let sanitizedTriggers: DecisionNodeTrigger[]
|
||||
try {
|
||||
sanitizedTriggers = body.triggers.map((trigger: any, index: number) => sanitizeNodeTrigger(trigger, index))
|
||||
} catch (error: any) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: error?.message || 'Trigger ungültig',
|
||||
data: { formError: error?.message || 'Trigger ungültig', field: 'triggers' },
|
||||
})
|
||||
}
|
||||
node.triggers = sanitizedTriggers
|
||||
}
|
||||
|
||||
if (Array.isArray(body.conditions)) {
|
||||
let sanitizedConditions: DecisionNodeCondition[]
|
||||
try {
|
||||
sanitizedConditions = body.conditions.map((condition: any, index: number) =>
|
||||
sanitizeNodeCondition(condition, index)
|
||||
)
|
||||
} catch (error: any) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
statusMessage: error?.message || 'Bedingung ungültig',
|
||||
data: { formError: error?.message || 'Bedingung ungültig', field: 'conditions' },
|
||||
})
|
||||
}
|
||||
node.conditions = sanitizedConditions
|
||||
}
|
||||
|
||||
const layout = sanitizeLayout(body.layout)
|
||||
|
||||
Reference in New Issue
Block a user