show error for invalid schema in extraction, text prompt, pdf parser (#1696)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import type { Node } from "@xyflow/react";
|
||||
import { NodeBaseData } from "../types";
|
||||
import { AppNode } from "..";
|
||||
|
||||
export type PDFParserNodeData = NodeBaseData & {
|
||||
fileUrl: string;
|
||||
@@ -15,3 +16,7 @@ export const pdfParserNodeDefaultData: PDFParserNodeData = {
|
||||
continueOnFailure: false,
|
||||
jsonSchema: "null",
|
||||
} as const;
|
||||
|
||||
export function isPdfParserNode(node: AppNode): node is PDFParserNode {
|
||||
return node.type === "pdfParser";
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { Node } from "@xyflow/react";
|
||||
import { NodeBaseData } from "../types";
|
||||
import { AppNode } from "..";
|
||||
|
||||
export type TextPromptNodeData = NodeBaseData & {
|
||||
prompt: string;
|
||||
@@ -17,3 +18,7 @@ export const textPromptNodeDefaultData: TextPromptNodeData = {
|
||||
continueOnFailure: false,
|
||||
parameterKeys: [],
|
||||
} as const;
|
||||
|
||||
export function isTextPromptNode(node: AppNode): node is TextPromptNode {
|
||||
return node.type === "textPrompt";
|
||||
}
|
||||
|
||||
@@ -67,7 +67,10 @@ import {
|
||||
StartNodeData,
|
||||
} from "./nodes/StartNode/types";
|
||||
import { isTaskNode, taskNodeDefaultData } from "./nodes/TaskNode/types";
|
||||
import { textPromptNodeDefaultData } from "./nodes/TextPromptNode/types";
|
||||
import {
|
||||
isTextPromptNode,
|
||||
textPromptNodeDefaultData,
|
||||
} from "./nodes/TextPromptNode/types";
|
||||
import { NodeBaseData } from "./nodes/types";
|
||||
import { uploadNodeDefaultData } from "./nodes/UploadNode/types";
|
||||
import {
|
||||
@@ -87,7 +90,10 @@ import { loginNodeDefaultData } from "./nodes/LoginNode/types";
|
||||
import { isWaitNode, waitNodeDefaultData } from "./nodes/WaitNode/types";
|
||||
import { fileDownloadNodeDefaultData } from "./nodes/FileDownloadNode/types";
|
||||
import { ProxyLocation } from "@/api/types";
|
||||
import { pdfParserNodeDefaultData } from "./nodes/PDFParserNode/types";
|
||||
import {
|
||||
isPdfParserNode,
|
||||
pdfParserNodeDefaultData,
|
||||
} from "./nodes/PDFParserNode/types";
|
||||
import { taskv2NodeDefaultData } from "./nodes/Taskv2Node/types";
|
||||
import { urlNodeDefaultData } from "./nodes/URLNode/types";
|
||||
|
||||
@@ -1898,6 +1904,29 @@ function getWorkflowErrors(nodes: Array<AppNode>): Array<string> {
|
||||
if (node.data.dataExtractionGoal.length === 0) {
|
||||
errors.push(`${node.data.label}: Data extraction goal is required.`);
|
||||
}
|
||||
try {
|
||||
JSON.parse(node.data.dataSchema);
|
||||
} catch {
|
||||
errors.push(`${node.data.label}: Data schema is not valid JSON.`);
|
||||
}
|
||||
});
|
||||
|
||||
const textPromptNodes = nodes.filter(isTextPromptNode);
|
||||
textPromptNodes.forEach((node) => {
|
||||
try {
|
||||
JSON.parse(node.data.jsonSchema);
|
||||
} catch {
|
||||
errors.push(`${node.data.label}: Data schema is not valid JSON.`);
|
||||
}
|
||||
});
|
||||
|
||||
const pdfParserNodes = nodes.filter(isPdfParserNode);
|
||||
pdfParserNodes.forEach((node) => {
|
||||
try {
|
||||
JSON.parse(node.data.jsonSchema);
|
||||
} catch {
|
||||
errors.push(`${node.data.label}: Data schema is not valid JSON.`);
|
||||
}
|
||||
});
|
||||
|
||||
const waitNodes = nodes.filter(isWaitNode);
|
||||
|
||||
Reference in New Issue
Block a user