|
|
@@ -8,7 +8,7 @@ import {
|
|
|
editAgentCard as _editAgentCard,
|
|
|
editAgentCharacter as _editAgentCharacter,
|
|
|
editAgentWebsite as _editAgentWebsite,
|
|
|
- createNewAgent as _createNewAgent,
|
|
|
+ createNewAgent,
|
|
|
editAgent as _editAgent,
|
|
|
getNewAgentInfo,
|
|
|
} from "@/service/agent";
|
|
|
@@ -59,15 +59,17 @@ export interface AgentStoreState {
|
|
|
deleteAgent: (agentId: string) => Promise<void>;
|
|
|
updateEditAgent: (updates: Partial<TAgentDetail>) => void;
|
|
|
saveAgent: (agentFields?: Partial<TAgentDetail>) => Promise<Partial<TAgentDetail> | null>;
|
|
|
+ createAgent: (agentFields?: Partial<TAgentDetail>) => Promise<Partial<TAgentDetail> | null>;
|
|
|
resetData: () => void;
|
|
|
clearEditAgent: () => void;
|
|
|
- setCurrentEditAvatar: (avatar: TAvatarItem|null) => void;
|
|
|
+ setCurrentEditAvatar: (avatar: TAvatarItem | null) => void;
|
|
|
};
|
|
|
}
|
|
|
|
|
|
export const useAgentStore = create<AgentStoreState>((set, get) => ({
|
|
|
agents: [],
|
|
|
agent: null,
|
|
|
+ // agentEdit 编辑时临时存储的智能体信息, 如果直接用 agent 存储,则切页面时会有空白数据的瞬间
|
|
|
agentEdit: null,
|
|
|
agentProfile: null,
|
|
|
agentContactCard: null,
|
|
|
@@ -106,6 +108,7 @@ export const useAgentStore = create<AgentStoreState>((set, get) => ({
|
|
|
const agent = response.data;
|
|
|
set({
|
|
|
agent: agent,
|
|
|
+ agentEdit: agent,
|
|
|
});
|
|
|
|
|
|
return response.data;
|
|
|
@@ -151,7 +154,7 @@ export const useAgentStore = create<AgentStoreState>((set, get) => ({
|
|
|
}
|
|
|
return null;
|
|
|
},
|
|
|
- saveAgent: async (agentFields = {} ) => {
|
|
|
+ saveAgent: async (agentFields = {}) => {
|
|
|
const { agentEdit } = get();
|
|
|
|
|
|
// 如果当前agent有agentId,则执行编辑操作
|
|
|
@@ -161,6 +164,7 @@ export const useAgentStore = create<AgentStoreState>((set, get) => ({
|
|
|
...agentEdit,
|
|
|
...agentFields,
|
|
|
};
|
|
|
+ console.log(mixedAgent,3333333)
|
|
|
const cleanAgent = {
|
|
|
...mixedAgent,
|
|
|
address: mixedAgent.address ?? undefined,
|
|
|
@@ -183,56 +187,63 @@ export const useAgentStore = create<AgentStoreState>((set, get) => ({
|
|
|
const response = await _editAgent(updateData);
|
|
|
const result = isSuccess(response.status);
|
|
|
|
|
|
- if (result && response.data) {
|
|
|
- // 更新当前agent数据
|
|
|
- set({ agent: response.data });
|
|
|
+ if (result) {
|
|
|
+ // 重新获取 agent 详情
|
|
|
+ const response = await get().actions.fetchAgent(updateData.agentId)
|
|
|
// 重新获取agents列表以更新缓存
|
|
|
await get().actions.fetchAgents();
|
|
|
- return response.data;
|
|
|
+ return response;
|
|
|
}
|
|
|
return null;
|
|
|
- } else {
|
|
|
- // 如果没有agentId,则创建新智能体
|
|
|
- if (!agentEdit) {
|
|
|
- return null;
|
|
|
- }
|
|
|
+ }
|
|
|
+ return null
|
|
|
+ },
|
|
|
+ createAgent: async (agentFields = {}) => {
|
|
|
+ const { agentEdit } = get();
|
|
|
+ if (!agentEdit) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ const mixedAgent = {
|
|
|
+ ...agentFields,
|
|
|
+ ...agentEdit,
|
|
|
+ }
|
|
|
|
|
|
- const createData: Omit<TAgentRequiredData, 'agentId'> = {
|
|
|
- address: agentEdit.address ?? undefined,
|
|
|
- avatarLogo: agentEdit.avatarLogo ?? undefined,
|
|
|
- avatarUrl: agentEdit.avatarUrl ?? undefined,
|
|
|
- email: agentEdit.email ?? undefined,
|
|
|
- enabledChatBg: agentEdit.enabledChatBg ?? undefined,
|
|
|
- enabledPersonalKb: agentEdit.enabledPersonalKb ?? undefined,
|
|
|
- entId: agentEdit.entId ? Number(agentEdit.entId) : undefined,
|
|
|
- entName: agentEdit.entName ?? undefined,
|
|
|
- greeting: agentEdit.greeting ?? undefined,
|
|
|
- mobile: agentEdit.mobile ?? undefined,
|
|
|
- name: agentEdit.name ?? undefined,
|
|
|
- personality: agentEdit.personality ?? undefined,
|
|
|
- position: agentEdit.position ?? undefined,
|
|
|
- qrCodeUrl: agentEdit.qrCodeUrl ?? undefined,
|
|
|
- questionGuides: agentEdit.questionGuides ?? undefined,
|
|
|
- voiceId: agentEdit.voiceId ?? undefined,
|
|
|
- voiceName: agentEdit.voiceName ?? undefined,
|
|
|
- };
|
|
|
+ const createData: Omit<TAgentRequiredData, 'agentId'> = {
|
|
|
+ address: mixedAgent.address ?? undefined,
|
|
|
+ avatarLogo: mixedAgent.avatarLogo ?? undefined,
|
|
|
+ avatarUrl: mixedAgent.avatarUrl ?? undefined,
|
|
|
+ email: mixedAgent.email ?? undefined,
|
|
|
+ enabledChatBg: mixedAgent.enabledChatBg ?? false,
|
|
|
+ enabledPersonalKb: mixedAgent.enabledPersonalKb ?? true,
|
|
|
+ entId: mixedAgent.entId ? Number(mixedAgent.entId) : undefined,
|
|
|
+ entName: mixedAgent.entName ?? undefined,
|
|
|
+ greeting: mixedAgent.greeting ?? undefined,
|
|
|
+ mobile: mixedAgent.mobile ?? undefined,
|
|
|
+ name: mixedAgent.name ?? undefined,
|
|
|
+ personality: mixedAgent.personality ?? undefined,
|
|
|
+ position: mixedAgent.position ?? undefined,
|
|
|
+ qrCodeUrl: mixedAgent.qrCodeUrl ?? undefined,
|
|
|
+ questionGuides: mixedAgent.questionGuides ?? undefined,
|
|
|
+ voiceId: mixedAgent.voiceId ?? undefined,
|
|
|
+ voiceName: mixedAgent.voiceName ?? undefined,
|
|
|
+ };
|
|
|
|
|
|
- const response = await _createNewAgent(createData);
|
|
|
- const result = isSuccess(response.status);
|
|
|
+ const response = await createNewAgent(createData);
|
|
|
+ const result = isSuccess(response.status);
|
|
|
|
|
|
- if (result && response.data) {
|
|
|
- const newAgent = await get().actions.fetchAgent(response.data.agentId);
|
|
|
- if (newAgent) {
|
|
|
- set((state) => ({
|
|
|
- agents: [...state.agents, newAgent as TAgent],
|
|
|
- agent: newAgent,
|
|
|
- defaultAgent: newAgent,
|
|
|
- }));
|
|
|
- return newAgent;
|
|
|
- }
|
|
|
+ if (result) {
|
|
|
+ // 创建成功后立即设置为当前默认智能体
|
|
|
+ const newAgent = await get().actions.setDefaultAgent(response.data.agentId);
|
|
|
+ if (newAgent) {
|
|
|
+ set((state) => ({
|
|
|
+ agents: [...state.agents, newAgent as TAgent],
|
|
|
+ agent: newAgent,
|
|
|
+ agentEdit: newAgent, // 创建成功后,将新智能体数据回填至 agentEdit
|
|
|
+ }));
|
|
|
+ return newAgent;
|
|
|
}
|
|
|
- return null;
|
|
|
}
|
|
|
+ return null;
|
|
|
},
|
|
|
// 更新 agent 字段
|
|
|
updateEditAgent: async (updates: Partial<TAgentDetail>) => {
|