| | |
| | | import com.zy.ai.service.AutoTuneApplyService; |
| | | import com.zy.ai.service.AutoTuneCoordinatorService; |
| | | import com.zy.ai.service.AutoTuneSnapshotService; |
| | | import com.zy.ai.utils.AutoTuneWriteBehaviorUtils; |
| | | import com.zy.common.web.BaseController; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | |
| | | item.put("completionTokens", job.getCompletionTokens()); |
| | | item.put("totalTokens", job.getTotalTokens()); |
| | | List<AiAutoTuneMcpCall> mcpCalls = listMcpCalls(job.getId()); |
| | | List<Map<String, Object>> mcpCallSummaries = toMcpCallSummaries(mcpCalls); |
| | | List<Map<String, Object>> changeSummaries = listChangeSummaries(job, mcpCalls); |
| | | AutoTuneWriteBehaviorUtils.addWriteBehavior(item, |
| | | AutoTuneWriteBehaviorUtils.resolveJobWriteBehavior(job, mcpCallSummaries, changeSummaries)); |
| | | item.put("mcpCallCount", mcpCalls.size()); |
| | | item.put("mcpCalls", toMcpCallSummaries(mcpCalls)); |
| | | item.put("changes", listChangeSummaries(mcpCalls)); |
| | | item.put("mcpCalls", mcpCallSummaries); |
| | | item.put("changes", changeSummaries); |
| | | return item; |
| | | } |
| | | |
| | |
| | | item.put("responseJson", mcpCall.getResponseJson()); |
| | | item.put("errorMessage", mcpCall.getErrorMessage()); |
| | | item.put("createTime", mcpCall.getCreateTime()); |
| | | AutoTuneWriteBehaviorUtils.addWriteBehavior(item, |
| | | AutoTuneWriteBehaviorUtils.resolveMcpWriteBehavior(mcpCall)); |
| | | return item; |
| | | } |
| | | |
| | |
| | | return value == 1; |
| | | } |
| | | |
| | | private List<Map<String, Object>> listChangeSummaries(List<AiAutoTuneMcpCall> mcpCalls) { |
| | | private List<Map<String, Object>> listChangeSummaries(AiAutoTuneJob job, List<AiAutoTuneMcpCall> mcpCalls) { |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | List<Long> applyJobIds = collectApplyJobIds(mcpCalls); |
| | | Map<Long, String> ownerTriggerTypes = collectChangeOwnerTriggerTypes(job, mcpCalls); |
| | | List<Long> applyJobIds = new ArrayList<>(ownerTriggerTypes.keySet()); |
| | | if (applyJobIds.isEmpty()) { |
| | | return result; |
| | | } |
| | |
| | | return result; |
| | | } |
| | | for (AiAutoTuneChange change : changes) { |
| | | result.add(toChangeSummary(change)); |
| | | result.add(toChangeSummary(change, ownerTriggerTypes.get(change.getJobId()))); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private List<Long> collectApplyJobIds(List<AiAutoTuneMcpCall> mcpCalls) { |
| | | List<Long> result = new ArrayList<>(); |
| | | private Map<Long, String> collectChangeOwnerTriggerTypes(AiAutoTuneJob job, List<AiAutoTuneMcpCall> mcpCalls) { |
| | | LinkedHashMap<Long, String> result = new LinkedHashMap<>(); |
| | | if (job != null && job.getId() != null) { |
| | | result.put(job.getId(), job.getTriggerType()); |
| | | } |
| | | if (mcpCalls == null || mcpCalls.isEmpty()) { |
| | | return result; |
| | | } |
| | | for (AiAutoTuneMcpCall mcpCall : mcpCalls) { |
| | | Long applyJobId = mcpCall.getApplyJobId(); |
| | | if (applyJobId != null && !result.contains(applyJobId)) { |
| | | result.add(applyJobId); |
| | | if (applyJobId == null || result.containsKey(applyJobId)) { |
| | | continue; |
| | | } |
| | | result.put(applyJobId, resolveMcpApplyJobTriggerType(mcpCall)); |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private Map<String, Object> toChangeSummary(AiAutoTuneChange change) { |
| | | private String resolveMcpApplyJobTriggerType(AiAutoTuneMcpCall mcpCall) { |
| | | if (mcpCall == null || mcpCall.getToolName() == null) { |
| | | return null; |
| | | } |
| | | String toolName = mcpCall.getToolName().toLowerCase(); |
| | | return toolName.contains("revert_last_auto_tune_job") || toolName.contains("rollback") ? "rollback" : null; |
| | | } |
| | | |
| | | private Map<String, Object> toChangeSummary(AiAutoTuneChange change, String ownerTriggerType) { |
| | | LinkedHashMap<String, Object> item = new LinkedHashMap<>(); |
| | | item.put("id", change.getId()); |
| | | item.put("jobId", change.getJobId()); |
| | | item.put("targetType", change.getTargetType()); |
| | | item.put("targetId", change.getTargetId()); |
| | | item.put("targetKey", change.getTargetKey()); |
| | |
| | | item.put("rejectReason", change.getRejectReason()); |
| | | item.put("cooldownExpireTime", change.getCooldownExpireTime()); |
| | | item.put("createTime", change.getCreateTime()); |
| | | AutoTuneWriteBehaviorUtils.addWriteBehavior(item, |
| | | AutoTuneWriteBehaviorUtils.resolveChangeWriteBehavior(change, ownerTriggerType)); |
| | | return item; |
| | | } |
| | | } |