feat(agent): 补齐会话消息与工作台链路

This commit is contained in:
2026-06-01 04:07:31 +08:00
parent 041ed0b446
commit 5e0212d2a0
29 changed files with 1288 additions and 27 deletions

View File

@@ -1,9 +1,14 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import {
appendAgentMessage,
chatWithAgent,
createAgentSession,
deleteAgent,
getAgentById,
getAgentSessionById,
getAgentWorkspace,
listAgentMessages,
listAgents,
queryAgents,
saveAgent,
@@ -27,6 +32,11 @@ describe('agent api', () => {
saveAgent({ agentCode: 'agent_1', agentName: 'Agent 1', storeId: '2001', status: 'ENABLED' });
deleteAgent('1001');
chatWithAgent('1001', { messages: [{ role: 'user', content: '你好' }] });
createAgentSession({ agentId: '1001', sessionCode: 'session_001' });
getAgentSessionById('session-id');
listAgentMessages('session-id');
appendAgentMessage('session-id', { role: 'assistant', content: '收到' });
getAgentWorkspace('1001', 'session-id');
expect(post).toHaveBeenCalledWith('/agents/list');
expect(post).toHaveBeenCalledWith('/agents/query', { agentCode: 'demo' });
@@ -39,5 +49,10 @@ describe('agent api', () => {
});
expect(post).toHaveBeenCalledWith('/agents/delete', undefined, { params: { id: '1001' } });
expect(post).toHaveBeenCalledWith('/agents/1001/chat', { messages: [{ role: 'user', content: '你好' }] });
expect(post).toHaveBeenCalledWith('/agent-sessions/create', { agentId: '1001', sessionCode: 'session_001' });
expect(get).toHaveBeenCalledWith('/agent-sessions/detail', { params: { id: 'session-id' } });
expect(get).toHaveBeenCalledWith('/agent-sessions/session-id/messages');
expect(post).toHaveBeenCalledWith('/agent-sessions/session-id/messages', { role: 'assistant', content: '收到' });
expect(get).toHaveBeenCalledWith('/agent-sessions/workspace', { params: { agentId: '1001', sessionId: 'session-id' } });
});
});

View File

@@ -40,11 +40,53 @@ export interface AgentChatResponse {
agentName: string;
storeId: string;
storeName?: string;
sessionId?: string;
sessionCode?: string;
answer: string;
modelRequestId: string;
references: AgentReferenceChunk[];
}
export interface AgentSession {
id?: string;
agentId: string;
sessionCode: string;
workflowRunId?: string;
title?: string;
status?: string;
metadataJson?: string;
remark?: string;
}
export interface AgentMessageRecord {
id?: string;
sessionId: string;
role: 'system' | 'user' | 'assistant';
content: string;
citationJson?: string;
tokenCount?: number;
requestId?: string;
remark?: string;
}
export interface AgentWorkspace {
agentId: string;
agentCode: string;
agentName: string;
storeId: string;
status: string;
sessionId?: string;
sessionCode?: string;
sessionTitle?: string;
sessionStatus?: string;
workflowRunId?: string;
totalTokens?: number;
citationCount?: number;
latestRequestId?: string;
sessions: AgentSession[];
messages: AgentMessageRecord[];
}
export function listAgents() {
return post<AgentDefinition[]>('/agents/list');
}
@@ -68,3 +110,28 @@ export function deleteAgent(id: string) {
export function chatWithAgent(agentId: string, data: AgentChatRequest) {
return post<AgentChatResponse, AgentChatRequest>(`/agents/${agentId}/chat`, data);
}
export function createAgentSession(data: AgentSession) {
return post<boolean, AgentSession>('/agent-sessions/create', data);
}
export function getAgentSessionById(id: string) {
return get<AgentSession>('/agent-sessions/detail', { params: { id } });
}
export function listAgentMessages(sessionId: string) {
return get<AgentMessageRecord[]>(`/agent-sessions/${sessionId}/messages`);
}
export function appendAgentMessage(sessionId: string, data: Omit<AgentMessageRecord, 'sessionId'>) {
return post<boolean, Omit<AgentMessageRecord, 'sessionId'>>(`/agent-sessions/${sessionId}/messages`, data);
}
export function getAgentWorkspace(agentId: string, sessionId?: string) {
return get<AgentWorkspace>('/agent-sessions/workspace', {
params: {
agentId,
sessionId,
},
});
}