Merged PR 4: updated step counter for user visualization while executing scenarios

updated step counter for user visualization while executing scenarios
This commit is contained in:
2024-11-21 15:40:48 +00:00

View File

@@ -3,6 +3,8 @@ package com.olympus.hermione.services;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
import java.util.OptionalInt;
import java.util.stream.IntStream;
import org.slf4j.LoggerFactory;
import org.springframework.ai.azure.openai.AzureOpenAiChatModel;
@@ -85,7 +87,7 @@ public class ScenarioExecutionService {
public ScenarioOutput getExecutionProgress(String scenarioExecutionId){
ScenarioOutput scenarioOutput = new ScenarioOutput();
Optional<ScenarioExecution> o_scenarioExecution = scenarioExecutionRepository.findById(scenarioExecutionId);
if(o_scenarioExecution.isPresent()){
ScenarioExecution scenarioExecution = o_scenarioExecution.get();
scenarioExecution.setCurrentStepId(scenarioExecution.getCurrentStepId());
@@ -98,10 +100,16 @@ public class ScenarioExecutionService {
}else{
scenarioOutput.setScenarioExecution_id(scenarioExecution.getId());
scenarioOutput.setStatus("IN_PROGRESS");
scenarioOutput.setCurrentStepId(scenarioExecution.getCurrentStepId());
scenarioOutput.setCurrentStepDescription(scenarioExecution.getCurrentStepDescription());
if (scenarioOutput.getCurrentStepId() != null){
scenarioOutput.setMessage("Executing "+scenarioOutput.getCurrentStepId()+"/"+scenarioExecution.getScenario().getSteps().size()+": "+scenarioOutput.getCurrentStepDescription()+".");
if (scenarioExecution.getCurrentStepId() != null){
OptionalInt indexOpt = IntStream.range(0, scenarioExecution.getScenario().getSteps().size())
.filter(i -> scenarioExecution.getScenario().getSteps().get(i).getStepId().equals(scenarioExecution.getCurrentStepId()))
.map(i -> i + 1)
.findFirst();
scenarioOutput.setCurrentStepId(scenarioExecution.getCurrentStepId());
scenarioOutput.setCurrentStepDescription(scenarioExecution.getCurrentStepDescription());
scenarioOutput.setMessage("Executing step "+indexOpt.getAsInt()+"/"+scenarioExecution.getScenario().getSteps().size()+": "+scenarioOutput.getCurrentStepDescription()+".");
}else {
scenarioOutput.setMessage("Starting execution...");
}