Регулярное обновление данных в проекте
Пользовательские сценарии
Техническое описание
График обновления данных проекта устанавливается пользователем при нажатии на соответствующую кнопку на странице скрипта загрузки и подтверждении графика
При подтверждении (кнопка изменить), на Nest.js сервис отправляется POST запрос, содержащий информацию по графику обновления данных и флаг (поле isActive), контролирующий активно ли обновление или нет.
Идентификатор задачи на обновление равен идентификатору проекта и добавляется как параметр в запросе
https://fastbord-back-dev4.fb-dev.winsolutions.ru/api/v1/cronjob/{cronId}, где cronId – идентификатор задачи (соответствует id проекта)
Тело запроса:
{
"isActive": false,
"cron": {
"type": "hour",
"minutes": 0,
"hours": 0
}
}
Ответ:
{
"kind": "cronjobItemWithId",
"cronjobItemWithId": {
"name": "111222113",
"cron": {
"type": "hour",
"hours": 0,
"minutes": 0
},
"isActive": false,
"type": "project_import",
"message": "Error",
"duration": "00:00:09",
"startedTask": "2025-06-04T14:07:34.048Z",
"finishedTask": "2025-06-04T14:07:43.510Z",
"status": "aborted",
"nextStartAt": "2025-06-19T09:00:00.000Z",
"id": "b3d298c1-a58c-44e6-8a1a-1dad28ca0820"
}
}
Если по каким-либо причина проекта не существует, будет возвращена ошибка 604 (проект не найден)
Последовательность выполнения запроса
- инициация POST запроса от пользователя, с указанием периода обновления
- регистрация (прием) запроса в контроллере Nest.js (проверка лицензии, роли). Если роль не админ, разработчик или нет лицензии пользователю возвращается ошибка
- проверка существования проекта по id из запроса. Если проекта нет, возвращается ошибка
- отправка внутреннего запроса (в пределах сервера) от микросервиса обрабатывающего пользовательские запросы микросервису планировки задач (cron), через брокер (rabbitMQ). микросервис принимающий запросы клиентов à брокер (rabbitMq) à микросервис планировки задач
- в микросервисе планировки (cron) создается задача и её метаданные сохраняются в базу данных postgress.
Если задача активна, она будет запускаться в соответствии с указанным временным периодом.
Обновление проекта – это функция cron, которая с помощью брокера отправляет в микросервис, отвечающий за скрипт загрузки, команду запускающую соответствующий проекту скрипт