Skip to content

Review Request API

Denis edited this page Sep 24, 2020 · 3 revisions

Модуль 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"

Предполагаемый алгоритм приложения:

  1. Пользователь выбирает task из списка и создает review request. При создании review request пользователь проставляет баллы самооценки и комментарии по пунктам задачи (свойство selfGrade review request)
  2. Когда review request готово, студент переводит его в статус PUBLISHED. В этом статусе его могут увидеть другие пользователи.
  3. Пользователь с правами supervisor видит все review request в статусе отличном от DRAFT. Любое review request из статуса PUBLISHED пользователь с правами supervisor может перевести в COMPLETED, DRAFT и обратно.

Предполагается, что review request в статусе COMPLETED недоступны для создания review и не участвуют в отборе в рамках cross-check-session

Clone this wiki locally