доработка запуска скрипта проверки
This commit is contained in:
parent
498ba86305
commit
a9640990b2
|
|
@ -144,6 +144,10 @@ public class TaskController {
|
|||
|
||||
return ResponseEntity
|
||||
.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;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* DTO для запроса проверки задачи
|
||||
*/
|
||||
public record CheckTaskRequest(
|
||||
UUID contextId,
|
||||
String clientId,
|
||||
String idToken
|
||||
) {}
|
||||
|
|
|
|||
|
|
@ -2,5 +2,11 @@ package ru.oa2.lti.application.service.results;
|
|||
|
||||
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
|
||||
public void setResult(String accessToken, String idTokenString) {
|
||||
public void setResult(String accessToken, String idTokenString, boolean passed) {
|
||||
|
||||
var idToken = jwtService.getTokenPayload(idTokenString);
|
||||
|
||||
try {
|
||||
var body = mapper.writeValueAsString(
|
||||
ResultRequest.builder()
|
||||
.scoreGiven(1L)
|
||||
.scoreGiven(passed ? 1L : 0L)
|
||||
.scoreMaximum(1L)
|
||||
.activityProgress(ProgressType.Completed)
|
||||
.gradingProgress(GradingType.FullyGraded)
|
||||
|
|
|
|||
|
|
@ -64,12 +64,32 @@ public class TaskServiceImpl implements TaskService {
|
|||
@Override
|
||||
@Transactional
|
||||
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());
|
||||
resultService.setResult(accessToken, request.idToken());
|
||||
resultService.setResult(accessToken, request.idToken(), verificationPassed);
|
||||
|
||||
return new ResultResponse("success");
|
||||
return new ResultResponse(verificationPassed ? "success" : "failed");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
Loading…
Reference in New Issue