feat: улучшил синхронизацию лекций
🚀 Create and publish a Docker image / Detect changes in backend and frontend (push) Failing after 10m14s
Frontend CI / build-and-check (push) Failing after 16m12s
🚀 Create and publish a Docker image / Build & publish frontend image (push) Failing after 14m7s
🚀 Create and publish a Docker image / Build & publish backend image (push) Failing after 14m59s
🚀 Create and publish a Docker image / Update stack on Portainer (push) Failing after 14m57s
Backend CI / build-and-test (push) Failing after 13m27s

This commit is contained in:
2026-05-24 23:47:23 +03:00
parent a8a20f9b0b
commit 85ef2a1c22
7 changed files with 492 additions and 132 deletions
@@ -19,10 +19,11 @@ public class SyncController : ControllerBase
/// <summary>Запустить синхронизацию расписания лекций из Modeus.</summary>
/// <remarks>
/// Только Admin. Выполняет upsert лекций и связанных курсов на основе данных
/// из внешнего API `schedule.rdcenter.ru`. Поддерживает фильтрацию по специальности,
/// периоду и типу занятий.
/// из внешнего API `schedule.rdcenter.ru`. Поддерживает фильтрацию по периоду,
/// размеру выборки, аудиториям, участникам, реализациям курсов/циклов,
/// специальностям, годам набора, профилям, учебным планам и типам занятий.
/// </remarks>
/// <param name="req">Параметры синхронизации: specialtyCode, timeMin/timeMax, typeId.</param>
/// <param name="req">Параметры поиска событий во внешнем сервисе расписания.</param>
/// <response code="200">Результат синхронизации: кол-во созданных, обновлённых и пропущенных записей.</response>
/// <response code="401">Требуется аутентификация.</response>
/// <response code="403">Требуется роль Admin.</response>
+61 -3
View File
@@ -2994,9 +2994,9 @@
"Sync"
],
"summary": "Запустить синхронизацию расписания лекций из Modeus.",
"description": "Только Admin. Выполняет upsert лекций и связанных курсов на основе данных\nиз внешнего API `schedule.rdcenter.ru`. Поддерживает фильтрацию по специальности,\nпериоду и типу занятий.\n\n**Required roles:** Admin",
"description": "Только Admin. Выполняет upsert лекций и связанных курсов на основе данных\nиз внешнего API `schedule.rdcenter.ru`. Поддерживает фильтрацию по периоду,\nразмеру выборки, аудиториям, участникам, реализациям курсов/циклов,\nспециальностям, годам набора, профилям, учебным планам и типам занятий.\n\n**Required roles:** Admin",
"requestBody": {
"description": "Параметры синхронизации: specialtyCode, timeMin/timeMax, typeId.",
"description": "Параметры поиска событий во внешнем сервисе расписания.",
"content": {
"application/json": {
"schema": {
@@ -5725,7 +5725,10 @@
"type": "object",
"properties": {
"specialtyCode": {
"type": "string",
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"timeMin": {
@@ -5744,6 +5747,61 @@
"type": "string"
},
"nullable": true
},
"size": {
"type": "integer",
"format": "int32",
"nullable": true
},
"roomId": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"attendeePersonId": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"courseUnitRealizationId": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"cycleRealizationId": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"learningStartYear": {
"type": "array",
"items": {
"type": "integer",
"format": "int32"
},
"nullable": true
},
"profileName": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
},
"curriculumId": {
"type": "array",
"items": {
"type": "string"
},
"nullable": true
}
},
"additionalProperties": false