Files
admin-ui/src/api/settings/creation/index.ts
2910410219 e32b01337a feat: 增强模型配置与创建表单功能
- 在 NodeLibraryFormItem 和 WorkflowItem 接口中添加了新的字段,如 value、options、expand 和 outputParams,以支持更复杂的表单配置。
- 新增 getOperatorList 函数以获取服务商列表,并在 editModule.vue 中集成了运营商选择功能。
- 更新了模型创建和编辑逻辑,支持 tokenConfig 的 JSON 格式配置,确保更灵活的模型设置。
- 优化了文件上传处理,增加了上传状态管理,提升用户体验。
2026-05-22 13:22:45 +08:00

347 lines
7.2 KiB
TypeScript

import request, { type RequestOptions } from '/@/utils/request';
export interface CreationListParams {
pageNum: number;
pageSize: number;
keyword?: string;
}
export interface NodeLibraryFormItem {
field: string;
label: string;
type: 'input' | 'number' | 'textarea' | 'switch' | string;
required: boolean;
default?: string | number | boolean;
value?: unknown;
options?: Array<{ label: string; value: string | number }> | null;
expand?: NodeLibraryFormItem[] | Record<string, unknown> | null;
fieldConstraint?: {
fileTypes?: string;
maxFileSize?: number;
maxFileCount?: number;
minLength?: number;
maxLength?: number;
numberType?: 'integer' | 'decimal' | string;
minValue?: number;
maxValue?: number;
} | null;
}
export interface NodeLibraryModelConfig {
modelName: string;
modelForm: NodeLibraryFormItem[];
}
export interface NodeLibraryItem {
nodeCode: string;
nodeName: string;
modelType: number;
skillOption: boolean;
formConfig: NodeLibraryFormItem[];
modelConfig: NodeLibraryModelConfig[];
}
export interface NodeLibraryGroup {
group: string;
label: string;
items: NodeLibraryItem[];
}
export interface NodeLibraryListResponse {
code: number;
message: string;
data: {
groups: NodeLibraryGroup[];
};
}
export interface CreationImageItem {
name: string;
url: string;
}
export interface CreationTitleItem {
title: string;
htmlFileUrl: string;
imageUrls: CreationImageItem[] | null;
}
export interface CreationThemeItem {
theme: string;
titles: CreationTitleItem[];
}
export interface CreationContentTypeItem {
contentType: string;
themes: CreationThemeItem[];
}
export interface CreationTreeItem {
createdDate: string;
contentTypes: CreationContentTypeItem[];
}
// 新的执行列表数据结构
export interface ExecutionItem {
timestamp: string;
content: string;
label: string;
}
export interface ExecutionFlowItem {
flowName: string;
Id?: number | string;
sessionId?: string;
items: ExecutionItem[];
}
export interface ExecutionTreeItem {
createDate: string;
flows: ExecutionFlowItem[];
}
export interface CreationListData {
list: unknown[] | null;
total: number;
Tree: CreationTreeItem[];
imgAddressPrefix: string;
}
export interface ExecutionListData {
tree: ExecutionTreeItem[];
imgAddressPrefix: string;
}
export interface CreationListResponse {
code: number;
message: string;
data: CreationListData;
}
export interface ExecutionListResponse {
code: number;
message: string;
data: ExecutionListData;
}
export interface CreationSubmitParams {
mode: string;
content_type: string;
theme: string;
title: string;
description?: string;
style: string;
count: number;
image_per_post: number;
image_ratio: string;
}
export interface DownloadToFileParams {
fileURL: string;
}
export function getCreationList(params: CreationListParams, requestOptions?: RequestOptions) {
return request({
url: '/black-deacon/creation/info/list',
method: 'get',
params,
requestOptions,
}) as Promise<CreationListResponse>;
}
export function getExecutionList(requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/flow/execution/list',
method: 'get',
requestOptions,
}) as Promise<ExecutionListResponse>;
}
export function getNodeLibraryList(requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/node/library/list',
method: 'get',
requestOptions,
}) as Promise<NodeLibraryListResponse>;
}
export function createCreation(data: CreationSubmitParams, requestOptions?: RequestOptions) {
return request({
url: '/black-deacon/creation/info/creation',
method: 'post',
data,
timeout: 0,
requestOptions,
});
}
export function downloadToFile(data: DownloadToFileParams, requestOptions?: RequestOptions) {
return request({
url: '/oss/file/downloadToBrowser',
method: 'post',
data,
responseType: 'blob',
requestOptions,
});
}
export function saveWorkflow(data: { flowName: string; description: string; flowContent: any }, requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/flow/user/create',
method: 'post',
data,
requestOptions,
});
}
export interface WorkflowItem {
id: string;
flowName?: string;
flowTemplateName?: string;
description: string;
flowContent: any;
nodeInputParams?: any[];
outputParams?: Array<Record<string, string>>;
imgAddressPrefix?: string;
fileUrls?: string[];
resultUrl?: string;
sessionId?: string;
}
export interface WorkflowListResponse {
code: number;
message: string;
data: {
listFlowUserRes: {
list: WorkflowItem[];
total: number;
};
listFlowTemplateRes: {
list: WorkflowItem[];
total: number;
};
isAdmin?: boolean;
};
}
export function getWorkflowList(requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/flow/user/list',
method: 'get',
requestOptions,
}) as Promise<WorkflowListResponse>;
}
export interface WorkflowDetailResponse {
code: number;
message: string;
data: WorkflowItem;
}
export function getWorkflowDetail(id: string, requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/flow/user/get',
method: 'get',
params: { id },
requestOptions,
}) as Promise<WorkflowDetailResponse>;
}
export function getExecutionDetail(id: string, requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/flow/execution/get',
method: 'get',
params: { id },
requestOptions,
}) as Promise<WorkflowDetailResponse>;
}
export function updateWorkflow(data: { id: string; flowName: string; description: string; flowContent: any }, requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/flow/user/update',
method: 'put',
data,
requestOptions,
});
}
export function deleteWorkflow(id: string, requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/flow/user/delete',
method: 'delete',
params: { id },
requestOptions,
});
}
// 执行工作流相关类型定义
export interface FlowNodeFormField {
default?: any;
field?: string;
label?: string;
options?: { label?: string; value?: string }[];
required?: boolean;
type?: string;
value?: string;
}
export interface FlowNodeInputSource {
field?: string[];
nodeId?: string;
quoteOutput?: boolean;
}
export interface FlowNodeModelItem {
modelApiKey?: string;
modelForm?: FlowNodeFormField[];
modelName?: string;
}
export interface FlowNode {
config?: { [key: string]: any };
formConfig?: FlowNodeFormField[];
id?: string;
inputSource?: FlowNodeInputSource[];
modelConfig?: FlowNodeModelItem;
name?: string;
nodeCode?: string;
outputResult?: FlowNodeFormField[];
skillName?: string;
}
export interface FlowEdge {
from?: string;
id?: string;
to?: string;
}
export interface FlowInfo {
edges?: FlowEdge[];
nodes?: FlowNode[];
startNodeId?: string;
version?: string;
}
export interface ExecuteFlowParams {
desc?: string;
fileUrl?: string[];
flowContent?: FlowInfo;
flowId?: string;
flowName?: string;
nodeInputParams?: FlowNode[];
sessionId?: string;
skillName?: string;
resultUrl?: string;
}
export function executeFlow(data: ExecuteFlowParams | FormData, requestOptions?: RequestOptions) {
return request({
url: '/ai-agent/flow/execution/execute',
method: 'post',
data,
headers: data instanceof FormData ? { 'Content-Type': 'multipart/form-data' } : undefined,
timeout: 0,
requestOptions,
});
}