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 type { Node } from "@xyflow/react";
|
||||||
import { NodeBaseData } from "../types";
|
import { NodeBaseData } from "../types";
|
||||||
|
import { AppNode } from "..";
|
||||||
|
|
||||||
export type PDFParserNodeData = NodeBaseData & {
|
export type PDFParserNodeData = NodeBaseData & {
|
||||||
fileUrl: string;
|
fileUrl: string;
|
||||||
@@ -15,3 +16,7 @@ export const pdfParserNodeDefaultData: PDFParserNodeData = {
|
|||||||
continueOnFailure: false,
|
continueOnFailure: false,
|
||||||
jsonSchema: "null",
|
jsonSchema: "null",
|
||||||
} as const;
|
} 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 type { Node } from "@xyflow/react";
|
||||||
import { NodeBaseData } from "../types";
|
import { NodeBaseData } from "../types";
|
||||||
|
import { AppNode } from "..";
|
||||||
|
|
||||||
export type TextPromptNodeData = NodeBaseData & {
|
export type TextPromptNodeData = NodeBaseData & {
|
||||||
prompt: string;
|
prompt: string;
|
||||||
@@ -17,3 +18,7 @@ export const textPromptNodeDefaultData: TextPromptNodeData = {
|
|||||||
continueOnFailure: false,
|
continueOnFailure: false,
|
||||||
parameterKeys: [],
|
parameterKeys: [],
|
||||||
} as const;
|
} as const;
|
||||||
|
|
||||||
|
export function isTextPromptNode(node: AppNode): node is TextPromptNode {
|
||||||
|
return node.type === "textPrompt";
|
||||||
|
}
|
||||||
|
|||||||
@@ -67,7 +67,10 @@ import {
|
|||||||
StartNodeData,
|
StartNodeData,
|
||||||
} from "./nodes/StartNode/types";
|
} from "./nodes/StartNode/types";
|
||||||
import { isTaskNode, taskNodeDefaultData } from "./nodes/TaskNode/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 { NodeBaseData } from "./nodes/types";
|
||||||
import { uploadNodeDefaultData } from "./nodes/UploadNode/types";
|
import { uploadNodeDefaultData } from "./nodes/UploadNode/types";
|
||||||
import {
|
import {
|
||||||
@@ -87,7 +90,10 @@ import { loginNodeDefaultData } from "./nodes/LoginNode/types";
|
|||||||
import { isWaitNode, waitNodeDefaultData } from "./nodes/WaitNode/types";
|
import { isWaitNode, waitNodeDefaultData } from "./nodes/WaitNode/types";
|
||||||
import { fileDownloadNodeDefaultData } from "./nodes/FileDownloadNode/types";
|
import { fileDownloadNodeDefaultData } from "./nodes/FileDownloadNode/types";
|
||||||
import { ProxyLocation } from "@/api/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 { taskv2NodeDefaultData } from "./nodes/Taskv2Node/types";
|
||||||
import { urlNodeDefaultData } from "./nodes/URLNode/types";
|
import { urlNodeDefaultData } from "./nodes/URLNode/types";
|
||||||
|
|
||||||
@@ -1898,6 +1904,29 @@ function getWorkflowErrors(nodes: Array<AppNode>): Array<string> {
|
|||||||
if (node.data.dataExtractionGoal.length === 0) {
|
if (node.data.dataExtractionGoal.length === 0) {
|
||||||
errors.push(`${node.data.label}: Data extraction goal is required.`);
|
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);
|
const waitNodes = nodes.filter(isWaitNode);
|
||||||
|
|||||||
Reference in New Issue
Block a user