feat(trace): improve session workbench review
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
package com.superbiz.agent.controller;
|
||||
|
||||
import org.springframework.http.CacheControl;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
import java.time.Duration;
|
||||
|
||||
@Controller
|
||||
public class FaviconController {
|
||||
|
||||
@GetMapping("/favicon.ico")
|
||||
public ResponseEntity<Void> favicon() {
|
||||
return ResponseEntity.noContent()
|
||||
.cacheControl(CacheControl.maxAge(Duration.ofDays(1)))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,11 @@ public interface AgentStepRepository extends JpaRepository<AgentStep, Long> {
|
||||
*/
|
||||
List<AgentStep> findBySessionIdOrderByStepIndex(String sessionId);
|
||||
|
||||
/**
|
||||
* 根据会话ID查询所有步骤,调用方负责按具体视图语义排序。
|
||||
*/
|
||||
List<AgentStep> findBySessionId(String sessionId);
|
||||
|
||||
/**
|
||||
* 统计某个会话的步骤数
|
||||
*/
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.superbiz.agent.repository.ToolInvocationRepository;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -31,7 +32,7 @@ public class DiagnosisTraceService {
|
||||
public DiagnosisTraceResponse getTrace(String sessionId) {
|
||||
DiagnosisSession session = diagnosisSessionRepository.findBySessionId(sessionId)
|
||||
.orElseThrow(() -> new SessionNotFoundException(sessionId));
|
||||
List<AgentStep> steps = agentStepRepository.findBySessionIdOrderByStepIndex(sessionId);
|
||||
List<AgentStep> steps = orderStepsForTrace(agentStepRepository.findBySessionId(sessionId));
|
||||
List<ToolInvocation> toolInvocations = toolInvocationRepository.findBySessionIdOrderByIdAsc(sessionId);
|
||||
|
||||
return DiagnosisTraceResponse.builder()
|
||||
@@ -42,6 +43,15 @@ public class DiagnosisTraceService {
|
||||
.build();
|
||||
}
|
||||
|
||||
private List<AgentStep> orderStepsForTrace(List<AgentStep> steps) {
|
||||
return steps.stream()
|
||||
.sorted(Comparator
|
||||
.comparing(AgentStep::getCreatedAt, Comparator.nullsLast(Comparator.naturalOrder()))
|
||||
.thenComparing(AgentStep::getId, Comparator.nullsLast(Comparator.naturalOrder()))
|
||||
.thenComparing(AgentStep::getStepIndex, Comparator.nullsLast(Comparator.naturalOrder())))
|
||||
.toList();
|
||||
}
|
||||
|
||||
private DiagnosisTraceResponse.SessionTrace toSessionTrace(DiagnosisSession session) {
|
||||
return DiagnosisTraceResponse.SessionTrace.builder()
|
||||
.id(session.getId())
|
||||
|
||||
Reference in New Issue
Block a user