New dto
This commit is contained in:
@@ -5,16 +5,22 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import com.olympus.hermione.dto.ScenarioExecutionInput;
|
||||
import com.olympus.hermione.dto.ScenarioOutput;
|
||||
import com.olympus.hermione.models.Scenario;
|
||||
import com.olympus.hermione.repository.ScenarioRepository;
|
||||
import com.olympus.hermione.services.ScenarioExecutionService;
|
||||
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
@RestController
|
||||
public class ScenarioController {
|
||||
|
||||
@Autowired
|
||||
ScenarioRepository scenarioRepository;
|
||||
@Autowired
|
||||
ScenarioExecutionService scenarioExecutionService;
|
||||
|
||||
@GetMapping("/scenarios")
|
||||
public Iterable<Scenario> getScenarios() {
|
||||
@@ -25,4 +31,16 @@ public class ScenarioController {
|
||||
public Scenario createScenario(@RequestBody Scenario scenario) {
|
||||
return scenarioRepository.save(scenario);
|
||||
}
|
||||
|
||||
@GetMapping("/scenarios/{id}")
|
||||
public Scenario getScenario(@RequestParam String id) {
|
||||
return scenarioRepository.findById(id).get();
|
||||
}
|
||||
|
||||
@PostMapping("scenarios/execute")
|
||||
public ScenarioOutput executeScenario(@RequestBody ScenarioExecutionInput scenarioExecutionInput) {
|
||||
return scenarioExecutionService.executeScenario(scenarioExecutionInput);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.olympus.hermione.dto;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class ScenarioExecutionInput {
|
||||
private String scenario_id;
|
||||
private HashMap<String,String> inputs;
|
||||
}
|
||||
12
src/main/java/com/olympus/hermione/dto/ScenarioOutput.java
Normal file
12
src/main/java/com/olympus/hermione/dto/ScenarioOutput.java
Normal file
@@ -0,0 +1,12 @@
|
||||
package com.olympus.hermione.dto;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
public class ScenarioOutput {
|
||||
private String stringOutput;
|
||||
private String status;
|
||||
private String message;
|
||||
}
|
||||
@@ -14,5 +14,6 @@ public class Scenario {
|
||||
@Id
|
||||
private String id;
|
||||
private String name;
|
||||
private String description;
|
||||
private List<ScenarioStep> steps;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,8 @@ import org.springframework.ai.vectorstore.VectorStore;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.olympus.hermione.dto.ScenarioExecutionInput;
|
||||
import com.olympus.hermione.dto.ScenarioOutput;
|
||||
import com.olympus.hermione.models.Scenario;
|
||||
import com.olympus.hermione.models.ScenarioExecution;
|
||||
import com.olympus.hermione.models.ScenarioStep;
|
||||
@@ -74,6 +76,48 @@ public class ScenarioExecutionService {
|
||||
return "";
|
||||
}
|
||||
|
||||
public ScenarioOutput executeScenario(ScenarioExecutionInput scenarioExecutionInput){
|
||||
|
||||
String scenarioId = scenarioExecutionInput.getScenario_id();
|
||||
HashMap<String,String> inputs = scenarioExecutionInput.getInputs();
|
||||
ScenarioOutput scenarioOutput = new ScenarioOutput();
|
||||
|
||||
Optional<Scenario> o_scenario = scenarioRepository.findById(scenarioId);
|
||||
|
||||
if(o_scenario.isPresent()){
|
||||
Scenario scenario = o_scenario.get();
|
||||
logger.info("Executing scenario: " + scenario.getName());
|
||||
|
||||
ScenarioExecution scenarioExecution = new ScenarioExecution();
|
||||
scenarioExecution.setScenario(scenario);
|
||||
|
||||
HashMap<String, Object> execSharedMap = new HashMap<String, Object>();
|
||||
execSharedMap.put("user_input", inputs);
|
||||
scenarioExecution.setExecSharedMap(execSharedMap);
|
||||
scenarioExecutionRepository.save(scenarioExecution);
|
||||
|
||||
List<ScenarioStep> steps = scenario.getSteps();
|
||||
|
||||
steps.sort(Comparator.comparingInt(ScenarioStep::getOrder));
|
||||
for (ScenarioStep step : steps) {
|
||||
executeScenarioStep(step, scenarioExecution, step.getOrder());
|
||||
}
|
||||
|
||||
scenarioOutput.setStringOutput(scenarioExecution.getExecSharedMap().get("scenario_output").toString());
|
||||
scenarioOutput.setStatus("OK");
|
||||
return scenarioOutput;
|
||||
|
||||
}else{
|
||||
logger.error("Scenario not found with id: " + scenarioId);
|
||||
scenarioOutput.setStatus("ERROR");
|
||||
scenarioOutput.setMessage("Scenario not found");
|
||||
}
|
||||
|
||||
return scenarioOutput;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void executeScenarioStep(ScenarioStep step, ScenarioExecution scenarioExecution, int stepIndex){
|
||||
logger.info("Executing step: " + step.getName());
|
||||
StepSolver solver=new StepSolver();
|
||||
@@ -99,5 +143,4 @@ public class ScenarioExecutionService {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -15,7 +15,6 @@ import lombok.Setter;
|
||||
public class StepSolver {
|
||||
|
||||
|
||||
|
||||
protected ScenarioExecution scenarioExecution;
|
||||
protected ScenarioStep step;
|
||||
protected VectorStore vectorStore;
|
||||
@@ -31,5 +30,5 @@ public class StepSolver {
|
||||
this.vectorStore = vectorStore;
|
||||
this.chatModel = chatModel;
|
||||
System.out.println("Initializing StepSolver");
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"folders": [
|
||||
{
|
||||
"path": "../../../../../../../../apollo"
|
||||
},
|
||||
{
|
||||
"name": "hermione",
|
||||
"path": "../../../../../../.."
|
||||
},
|
||||
{
|
||||
"name": "hermione-fe",
|
||||
"path": "../../../../../../../../hermione-fe"
|
||||
}
|
||||
],
|
||||
"settings": {}
|
||||
}
|
||||
Reference in New Issue
Block a user