Skip to content

LTI: поддержка протокола LTI 1.3 для интеграции с внешними инструментами. - #655

Open
KirillBorisovich wants to merge 45 commits into
InteIIigeNET:masterfrom
KirillBorisovich:feat/lti-development
Open

KirillBorisovich wants to merge 45 commits into
InteIIigeNET:masterfrom
KirillBorisovich:feat/lti-development

Conversation

@KirillBorisovich

@KirillBorisovich KirillBorisovich commented Mar 2, 2026 •

Copy link
Copy Markdown
Contributor

Реализация поддержки протокола LTI 1.3 для интеграции с внешними инструментами.

LTI 1.3 (Learning Tools Interoperability) — современный индустриальный стандарт, разработанный консорциумом 1EdTech. Он позволяет бесшовно и безопасно интегрировать внешние обучающие инструменты в системы управления обучением.

Текущий статус и дальнейшие шаги

На данном этапе полностью завершена и отлажена базовая бизнес-логика. В частности, реализованы сценарии Deep Linking (выбор и добавление учебных задач преподавателем из LMS) и LTI Launch (переход студента к выполнению заданий и прохождению тестирования). Пуллреквест находится в статусе активной разработки.
Дальнейшие задачи в рамках интеграции:

  • Cоздание сервисной учётной записи для LTI-модуля, что позволит отказаться от временных обходов модели безопасности HwProj и обеспечит штатное разграничение прав доступа.

Демонстрация функциональности

Демонстрация_работы

@DedSec256 DedSec256 changed the title LTI LTI: поддержки протокола LTI 1.3 для интеграции с внешними инструментами. Mar 7, 2026
@DedSec256 DedSec256 changed the title LTI: поддержки протокола LTI 1.3 для интеграции с внешними инструментами. LTI: поддержка протокола LTI 1.3 для интеграции с внешними инструментами. Mar 7, 2026
Comment thread HwProj.CoursesService/HwProj.CoursesService.API/Repositories/ITasksRepository.cs Outdated
Comment thread HwProj.CoursesService/HwProj.CoursesService.API/Services/CoursesService.cs Outdated
Comment thread HwProj.CoursesService/HwProj.CoursesService.API/Services/CoursesService.cs Outdated
Comment thread HwProj.CoursesService/HwProj.CoursesService.API/Services/CoursesService.cs Outdated
Comment thread HwProj.CoursesService/HwProj.CoursesService.API/Services/CoursesService.cs Outdated
Comment thread HwProj.CoursesService/HwProj.CoursesService.API/Services/CoursesService.cs Outdated
Comment thread HwProj.CoursesService/HwProj.CoursesService.API/Services/ITasksService.cs Outdated
Comment on lines +118 to +126
public async Task<LtiLaunchData?> GetTaskLtiDataAsync(long taskId)
{
return await _tasksRepository.GetLtiDataAsync(taskId);
}

public async Task<Dictionary<long, LtiLaunchData>> GetLtiDataForTasksAsync(long[] taskIds)
{
return await _tasksRepository.GetLtiDataForTasksAsync(taskIds);
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Зачем нужны этим методы?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GetTaskLtiDataAsync используется в TasksController в GetTask, а GetLtiDataForTasksAsync в HomeworksController в FillLtiUrls

Comment on lines +48 to +50
var ltiLaunchData = await _tasksService.GetTaskLtiDataAsync(taskId);
var taskViewModel = task.ToHomeworkTaskViewModel();
taskViewModel.LtiLaunchData = ltiLaunchData.ToLtiLaunchData();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Должно быть спрятано в сервисе

Comment thread HwProj.CoursesService/HwProj.CoursesService.API/Controllers/TasksController.cs Outdated
Comment thread HwProj.CoursesService/HwProj.CoursesService.API/Controllers/TasksController.cs Outdated
Comment thread hwproj.front/src/components/Courses/Course.tsx Outdated
Comment thread hwproj.front/src/components/Courses/ICreateCourseState.tsx Outdated
Comment thread hwproj.front/src/components/Solutions/TaskSolutionsPage.tsx Outdated
Comment thread HwProj.NotificationsService/HwProj.NotificationsService.API/appsettings.json Outdated
Comment thread HwProj.SolutionsService/HwProj.SolutionsService.API/Services/SolutionsService.cs Outdated
@@ -0,0 +1,19 @@
namespace HwProj.APIGateway.API.Lti.Models;

public class LtiPlatformConfig

@DedSec256 DedSec256 Mar 7, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public class LtiPlatformConfig
internal class LtiPlatformConfig

@KirillBorisovich KirillBorisovich Mar 21, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А нужно ли? Я в конструкторах использую часто где IOptions options. Чтобы сделать внутренним, мне нужно пренести всю логику в сервисы и сделать их (сервисы) все внутренними, нужно ли так делать? Просто больше в проекте нигде так не делается

public LtiSigningKeyConfig SigningKey { get; set; }
}

public class LtiSigningKeyConfig

@DedSec256 DedSec256 Mar 7, 2026 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public class LtiSigningKeyConfig
internal class LtiSigningKeyConfig

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

см. ответ сверху

@@ -0,0 +1,14 @@
namespace HwProj.APIGateway.API.Lti.Models
{
public class LtiToolConfig

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public class LtiToolConfig
internal class LtiToolConfig

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

см. ответ сверху

Comment thread HwProj.APIGateway/HwProj.APIGateway.API/Lti/Models/LtiToolDto.cs Outdated
Comment thread HwProj.APIGateway/HwProj.APIGateway.API/Lti/Models/LtiDeepLinkingContentItem.cs Outdated
…pLinkingReturnController, added a check for matching toolId and course.LtiToolId
…uation of the LTI solution, and fixed a bug in the validation of the HW
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants