fix: 修复ComfyUI V2工作流创建接口参数不匹配问题

- 修复前端CreateWorkflowRequest接口定义,使用workflow_json而不是workflow_data
- 更新WorkflowV2Creator组件以匹配后端接口参数
- 移除不必要的category字段,与后端保持一致
- 修复所有相关的字段引用和错误处理
- 确保前后端接口参数完全匹配
This commit is contained in:
root 2025-08-08 21:51:06 +08:00
parent ada3eb94ed
commit 733506cd70
2 changed files with 14 additions and 31 deletions

View File

@ -40,8 +40,7 @@ export const WorkflowV2Creator: React.FC<WorkflowV2CreatorProps> = ({
const [formData, setFormData] = useState<CreateWorkflowRequest>({ const [formData, setFormData] = useState<CreateWorkflowRequest>({
name: '', name: '',
description: '', description: '',
category: '', workflow_json: {},
workflow_data: {},
tags: [], tags: [],
}); });
const [errors, setErrors] = useState<Record<string, string>>({}); const [errors, setErrors] = useState<Record<string, string>>({});
@ -55,8 +54,7 @@ export const WorkflowV2Creator: React.FC<WorkflowV2CreatorProps> = ({
setFormData({ setFormData({
name: editingWorkflow.name || '', name: editingWorkflow.name || '',
description: editingWorkflow.description || '', description: editingWorkflow.description || '',
category: editingWorkflow.category || '', workflow_json: editingWorkflow.workflow_data || {},
workflow_data: editingWorkflow.workflow_data || {},
tags: editingWorkflow.tags || [], tags: editingWorkflow.tags || [],
}); });
setWorkflowJsonText(JSON.stringify(editingWorkflow.workflow_data || {}, null, 2)); setWorkflowJsonText(JSON.stringify(editingWorkflow.workflow_data || {}, null, 2));
@ -65,8 +63,7 @@ export const WorkflowV2Creator: React.FC<WorkflowV2CreatorProps> = ({
setFormData({ setFormData({
name: '', name: '',
description: '', description: '',
category: '', workflow_json: {},
workflow_data: {},
tags: [], tags: [],
}); });
setWorkflowJsonText('{}'); setWorkflowJsonText('{}');
@ -98,15 +95,15 @@ export const WorkflowV2Creator: React.FC<WorkflowV2CreatorProps> = ({
} }
if (!workflowJsonText.trim() || workflowJsonText.trim() === '{}') { if (!workflowJsonText.trim() || workflowJsonText.trim() === '{}') {
newErrors.workflow_data = '工作流数据不能为空'; newErrors.workflow_json = '工作流数据不能为空';
} else { } else {
try { try {
const parsed = JSON.parse(workflowJsonText); const parsed = JSON.parse(workflowJsonText);
if (typeof parsed !== 'object' || parsed === null) { if (typeof parsed !== 'object' || parsed === null) {
newErrors.workflow_data = '工作流数据必须是有效的JSON对象'; newErrors.workflow_json = '工作流数据必须是有效的JSON对象';
} }
} catch (error) { } catch (error) {
newErrors.workflow_data = 'JSON格式错误请检查语法'; newErrors.workflow_json = 'JSON格式错误请检查语法';
} }
} }
@ -125,7 +122,7 @@ export const WorkflowV2Creator: React.FC<WorkflowV2CreatorProps> = ({
const workflowData = JSON.parse(workflowJsonText); const workflowData = JSON.parse(workflowJsonText);
const requestData: CreateWorkflowRequest = { const requestData: CreateWorkflowRequest = {
...formData, ...formData,
workflow_data: workflowData, workflow_json: workflowData,
}; };
await onSave(requestData); await onSave(requestData);
@ -150,10 +147,10 @@ export const WorkflowV2Creator: React.FC<WorkflowV2CreatorProps> = ({
try { try {
const workflow = JSON.parse(e.target?.result as string); const workflow = JSON.parse(e.target?.result as string);
setWorkflowJsonText(JSON.stringify(workflow, null, 2)); setWorkflowJsonText(JSON.stringify(workflow, null, 2));
updateField('workflow_data', workflow); updateField('workflow_json', workflow);
} catch (error) { } catch (error) {
console.error('解析ComfyUI工作流失败:', error); console.error('解析ComfyUI工作流失败:', error);
setErrors({ workflow_data: '文件格式错误请选择有效的JSON文件' }); setErrors({ workflow_json: '文件格式错误请选择有效的JSON文件' });
} }
}; };
reader.readAsText(file); reader.readAsText(file);
@ -250,18 +247,7 @@ export const WorkflowV2Creator: React.FC<WorkflowV2CreatorProps> = ({
)} )}
</div> </div>
<div>
<label className="block text-sm font-medium text-gray-700 mb-1">
</label>
<input
type="text"
value={formData.category || ''}
onChange={(e) => updateField('category', e.target.value)}
className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent"
placeholder="例如:图像处理"
/>
</div>
</div> </div>
<div> <div>
@ -316,12 +302,12 @@ export const WorkflowV2Creator: React.FC<WorkflowV2CreatorProps> = ({
onChange={(e) => setWorkflowJsonText(e.target.value)} onChange={(e) => setWorkflowJsonText(e.target.value)}
rows={20} rows={20}
className={`w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent font-mono text-sm ${ className={`w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent font-mono text-sm ${
errors.workflow_data ? 'border-red-300' : 'border-gray-300' errors.workflow_json ? 'border-red-300' : 'border-gray-300'
}`} }`}
placeholder="粘贴ComfyUI导出的工作流JSON..." placeholder="粘贴ComfyUI导出的工作流JSON..."
/> />
{errors.workflow_data && ( {errors.workflow_json && (
<p className="mt-1 text-sm text-red-600">{errors.workflow_data}</p> <p className="mt-1 text-sm text-red-600">{errors.workflow_json}</p>
)} )}
<p className="mt-1 text-sm text-gray-500"> <p className="mt-1 text-sm text-gray-500">
ComfyUI界面导出工作流JSON并粘贴到这里 ComfyUI界面导出工作流JSON并粘贴到这里

View File

@ -61,10 +61,7 @@ export interface WorkflowV2 {
export interface CreateWorkflowRequest { export interface CreateWorkflowRequest {
name: string; name: string;
description?: string; description?: string;
category?: string; workflow_json: any;
workflow_data: any;
input_schema?: any;
output_schema?: any;
tags?: string[]; tags?: string[];
} }