-
Notifications
You must be signed in to change notification settings - Fork 0
Review Request API
by DEnFUrt
Модуль rev-req-api.js
для работы с сущностью Review request. Основные методы модуля не отличаются от аналогичных модулей API.
Специальные методы:
getRevReqByAuthor(nameAuthor)
- выводит все review request созданные автором, требуется передача в аргументе поля author, возвращает полные данные в виде массива объектов.
getRevReqByCrossCheckId(crossCheckSessionId)
- выводит все review request созданные в рамках кросс-чек-сессии, требуется передача в аргументе поля crossCheckSessionId, возвращает полные данные в виде массива объектов.
getRevReqByStateNoDraft()
- выводит все review request в статусе отличном от DRAFT
getRevReqByStateDraft()
- выводит все review request в статусе DRAFT
createRevReq({ githubId, data })
- создание review request, аргументы метода передаются объектом!
Структура сущности review request в которую нужно передать в метод createRevReq параметром data.
{
id: "rev-req-", // префикс id желательно передавать это свойство
crossCheckSessionId: null, // or id cross-check-session for example "rss2020Q3react-xcheck", может быть null если создается не в рамках кросс-чек сессии
author: githubId, // пользователь из свойства **user.githubId** Внимание! Обязательное поле!
task: taskId, // id задачи из свойства **task.id** Внимание! Обязательное поле!
url_pr: 'https://github...', // ссылка на пулл реквест
url_deploy: 'https://app...', // ссылка на деплой
selfGrade: [ // в этот массив передаются id пунктов задачи, самооценка и комментарий студента
{id: basic_p1, score: 20, comment: "Well done!"},
{id: extra_p1, score: 15, comment: "Some things are done, some are not"},
{id: fines_p1, score: 0, comment: "No ticket today"},
]
}
Для того, чтобы сформировать свойство selfGrade нужно в форму создания review request загрузить список id пунктов из задачи на которую создают review request. Список пунктов хранится в свойстве task.items. Получить items можно использовав метод getTask(id) из модуля tasks-api.js,
taskApi.getTask(id).then((res) => {
res.items);
или использовать метод getItemsTask(taskId) из модуля items-tasks-api.js
itemsTasksApi.getItemsTask(taskId)
.then((items) => items);
}
После того как пользователь проставит баллы самопроверки и прокомментирует своё решение, необходимо сформировать объект в свойстве selfGrade
selfGrade: [
{id: basic_p1, score: 20, comment: "Well done!"},
{id: extra_p1, score: 15, comment: "Some things are done, some are not"},
{id: fines_p1, score: 0, comment: "No ticket today"},
]
где // basic_p1 и тп. - id пунктов задачи (task) из свойства
items: [
{
**id: "basic_p1"**
...}
{score: 20, comment: "Well done!"}
- самооценка и комментарий студента
При создании review request свойство статус записи - DRAFT - state: DRAFT,
Предполагается, что записи в этом статусе видны только автору записи и пользователю с ролью supervisor
Для того, чтобы review request стал доступен другим пользователям его необходимо перевести в статус PUBLISHED
editRevReq({ githubId, revReqId, data })
- редактирование review request, редактируются только те поля которые переданы в data, аргументы метода передаются объектом!
toggleRevReqState({
githubId,
revReqId,
requiredState
})
Этот метод необходим для переключение статуса DRAFT, PUBLISHED, COMPLETED Аргумент requiredState формализован и может принимать только значения - DRAFT_TO_PUBLISHED, PUBLISHED_TO_DRAFT, PUBLISHED_TO_COMPLETED, COMPLETED_TO_PUBLISHED
Последние 3 метода возвращают объект идентичный переданному в случае успеха, или сообщение об ошибке. Формат сообщения - объект вида {error: true, message: 'text ...'}
Экземпляры сущности Review request могут находится в статусах DRAFT, PUBLISHED, COMPLETED. В каждом статусе существует свой набор доступных действий пользователя для определенных ролей. При осуществлении манипуляций с набором данных проводятся проверки по матрице доступа:
В статусе CREATE, DRAFT - пользователь с ролью "student" - имеет право создавать и редактировать, удалять и изменить статус DRAFT_TO_PUBLISHED review request созданные самим пользователем. При создании review request проводятся проверки на существование tsak на который ссылается review request.
В статусе PUBLISHED доступно изменение статуса:
PUBLISHED_TO_DRAFT, PUBLISHED_TO_COMPLETED - только пользователю с ролью "supervisor"
В статусе COMPLETED: Изменение статуса: COMPLETED_TO_PUBLISHED - только пользователь с ролью "supervisor"
Предполагаемый алгоритм приложения:
- Пользователь выбирает task из списка и создает review request. При создании review request пользователь проставляет баллы самооценки и комментарии по пунктам задачи (свойство selfGrade review request)
- Когда review request готово, студент переводит его в статус PUBLISHED. В этом статусе его могут увидеть другие пользователи.
- Пользователь с правами supervisor видит все review request в статусе отличном от DRAFT. Любое review request из статуса PUBLISHED пользователь с правами supervisor может перевести в COMPLETED, DRAFT и обратно.
Предполагается, что review request в статусе COMPLETED недоступны для создания review и не участвуют в отборе в рамках cross-check-session