доработка запуска скрипта проверки
This commit is contained in:
parent
498ba86305
commit
a9640990b2
|
|
@ -144,6 +144,10 @@ public class TaskController {
|
||||||
|
|
||||||
return ResponseEntity
|
return ResponseEntity
|
||||||
.accepted()
|
.accepted()
|
||||||
.body(taskService.checkTask(new CheckTaskRequest(ltiLogin.getClientId(), idToken)));
|
.body(taskService.checkTask(new CheckTaskRequest(
|
||||||
|
payload.getContextId(),
|
||||||
|
ltiLogin.getClientId(),
|
||||||
|
idToken
|
||||||
|
)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
package ru.oa2.lti.application.dto.task;
|
package ru.oa2.lti.application.dto.task;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DTO для запроса проверки задачи
|
* DTO для запроса проверки задачи
|
||||||
*/
|
*/
|
||||||
public record CheckTaskRequest(
|
public record CheckTaskRequest(
|
||||||
|
UUID contextId,
|
||||||
String clientId,
|
String clientId,
|
||||||
String idToken
|
String idToken
|
||||||
) {}
|
) {}
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,11 @@ package ru.oa2.lti.application.service.results;
|
||||||
|
|
||||||
public interface ResultService {
|
public interface ResultService {
|
||||||
|
|
||||||
void setResult(String accessToken, String idToken);
|
/**
|
||||||
|
* Отправка результата проверки в LMS
|
||||||
|
* @param accessToken токен доступа к LMS
|
||||||
|
* @param idToken ID токен пользователя
|
||||||
|
* @param passed результат верификации (true - успех, false - неудача)
|
||||||
|
*/
|
||||||
|
void setResult(String accessToken, String idToken, boolean passed);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,14 +32,14 @@ public class ResultServiceImpl implements ResultService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setResult(String accessToken, String idTokenString) {
|
public void setResult(String accessToken, String idTokenString, boolean passed) {
|
||||||
|
|
||||||
var idToken = jwtService.getTokenPayload(idTokenString);
|
var idToken = jwtService.getTokenPayload(idTokenString);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var body = mapper.writeValueAsString(
|
var body = mapper.writeValueAsString(
|
||||||
ResultRequest.builder()
|
ResultRequest.builder()
|
||||||
.scoreGiven(1L)
|
.scoreGiven(passed ? 1L : 0L)
|
||||||
.scoreMaximum(1L)
|
.scoreMaximum(1L)
|
||||||
.activityProgress(ProgressType.Completed)
|
.activityProgress(ProgressType.Completed)
|
||||||
.gradingProgress(GradingType.FullyGraded)
|
.gradingProgress(GradingType.FullyGraded)
|
||||||
|
|
|
||||||
|
|
@ -64,12 +64,32 @@ public class TaskServiceImpl implements TaskService {
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public ResultResponse checkTask(CheckTaskRequest request) {
|
public ResultResponse checkTask(CheckTaskRequest request) {
|
||||||
log.info("Checking task for clientId: {}", request.clientId());
|
log.info("Checking task for contextId: {}, clientId: {}", request.contextId(), request.clientId());
|
||||||
|
|
||||||
|
// Получаем задачу для запуска скрипта верификации
|
||||||
|
Task task = taskRepository.findByContextId(request.contextId())
|
||||||
|
.orElseThrow(() -> new TaskNotFoundException(request.contextId()));
|
||||||
|
|
||||||
|
// Запускаем скрипт верификации
|
||||||
|
Script verificationScript = task.getVerificationScript();
|
||||||
|
boolean verificationPassed = false;
|
||||||
|
|
||||||
|
if (verificationScript.isExecutable()) {
|
||||||
|
verificationPassed = scriptExecutor.runVerificationScript(
|
||||||
|
request.contextId(),
|
||||||
|
verificationScript.content()
|
||||||
|
);
|
||||||
|
log.info("Verification script result for context {}: {}",
|
||||||
|
request.contextId(), verificationPassed ? "PASSED" : "FAILED");
|
||||||
|
} else {
|
||||||
|
log.warn("No verification script configured for context: {}", request.contextId());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Получаем токен доступа и отправляем результат в LMS
|
||||||
String accessToken = lmsGateway.exchangeForAccessToken(request.clientId());
|
String accessToken = lmsGateway.exchangeForAccessToken(request.clientId());
|
||||||
resultService.setResult(accessToken, request.idToken());
|
resultService.setResult(accessToken, request.idToken(), verificationPassed);
|
||||||
|
|
||||||
return new ResultResponse("success");
|
return new ResultResponse(verificationPassed ? "success" : "failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue