Skip to content

Conversation

@alken1t15
Copy link

@alken1t15 alken1t15 commented Dec 10, 2025

Создание задачи и добавление критериев оценивания

  • На форме создания новой задачи добавлен блок критериев оценивания (чек-лист).

  • Если критерии ещё не заданы, отображается подсказка и кнопка «Добавить критерий оценивания».

  • Поле «Баллы» связано с критериями: при отсутствии критериев значение равно 0 и далее автоматически пересчитывается как сумма баллов по добавленным критериям.

1

Создание задачи и добавление критериев оценивания

  • В форме создания задачи можно добавлять несколько критериев: для каждого задаётся название и количество баллов.

  • Для удаления критерия предусмотрена кнопка с иконкой крестика справа от строки критерия.

  • Поле «Баллы» пересчитывается автоматически как сумма баллов по всем добавленным критериям (на скриншоте: 3 + 1 = 4).

2

Создание задачи и добавление критериев оценивания

  • Для каждого критерия можно указать название и количество баллов.

  • Блок «Критерии оценивания» сворачивается/разворачивается, чтобы не перегружать форму создания задачи.

  • Итоговое поле «Баллы» отображает суммарный балл задачи, вычисляемый на основе критериев.

3

Редактирование задачи: критерии по умолчанию свёрнуты

  • При открытии страницы редактирования/просмотра задачи блок с критериями оценивания отображается в свёрнутом виде по умолчанию.

  • Это уменьшает визуальную нагрузку на страницу и позволяет раскрывать критерии только при необходимости.

  • Доступ к блоку с критериями осуществляется через элемент раскрытия в шапке/панели задачи.

4

Страница решения с критериями оценивания

  • Если у задачи задан список критериев, на странице решения отображается отдельный блок с перечнем критериев и элементами для выставления оценки по каждому из них.

  • Для разных диапазонов баллов используются разные элементы ввода: «звёзды» для небольших значений, «лайк/дизлайк» для бинарной оценки и числовое поле для ввода произвольного значения.

  • Под списком критериев отображается суммарный балл по критериям (например, «Сумма по критериям: 0 из 4»), а также доступно поле для комментария преподавателя.

5

Оценивание решения по критериям

  • При выставлении оценки по критерию отображается визуальный индикатор выполнения (галочка слева от соответствующего критерия).

  • Суммарный балл пересчитывается автоматически и показывается в формате «Сумма по критериям: X из Y» (на скриншоте: 4 из 4).

  • Дополнительно доступно поле «Доп. оценка» для ручного ввода значения.

6

Отображение выставленной оценки по критериям

  • После сохранения оценки на странице решения отображается итоговый результат и таблица с детализацией по критериям.

  • В таблице показывается оценка по каждому критерию в формате «получено / максимум» (например, 2/3 и 1/1), а также значение «Доп. оценки».

  • Предусмотрена возможность пересмотра выставленных баллов через действие «Изменить оценку».

7

Краткое техническое описание изменений

  • Данные и связи:

    • Добавлена сущность/таблица Criterion для критериев оценивания.

    • Каждый критерий привязан к задаче по TaskId (связь «1 задача → N критериев»).

    • При удалении задачи связанные критерии удаляются каскадно.

  • Backend (API / модели):

    • Расширены модели задачи: теперь задача может возвращаться вместе со списком критериев (название, баллы и т.п.).

    • В получение задачи добавлен флаг, чтобы подгружать критерии только по запросу (не всегда).

    • Обновление задачи поддерживает сохранение критериев вместе с остальными полями задачи (добавление/удаление/изменение).

  • Frontend (интерфейс):

    • В редакторе задачи добавлен UI для критериев: добавить/удалить, задать название и баллы.

    • Итоговые «Баллы» задачи пересчитываются автоматически как сумма баллов всех критериев.

    • На странице решения отображается блок оценивания по критериям с суммой «X из Y» и возможностью изменить выставленную оценку.

UML: модель данных (Task — Criterion)

classDiagram
direction LR

class HomeworkTask {
  +long Id
  +List~Criterion~ Criterias
}

class Criterion {
  +long Id
  +long TaskId
  +string Name
  +int Points
  +string? Type
}

HomeworkTask "1" --> "0..*" Criterion : TaskId
Loading

UML: ViewModel / DTO для задач и критериев

classDiagram
direction LR

class HomeworkTaskViewModel {
  +long Id
  +List~CriterionViewModel~ Criterias
}

class CriterionViewModel {
  +long Id
  +string Name
  +int Points
  +string? Type
}

class CreateTaskViewModel {
  +List~CriterionViewModel~ Criterias
}

class EditTaskViewModel

CreateTaskViewModel <|-- EditTaskViewModel
HomeworkTaskViewModel "1" --> "0..*" CriterionViewModel
Loading

ER-диаграмма базы данных

erDiagram
  HOMEWORK_TASK ||--o{ CRITERION : has

  HOMEWORK_TASK {
    bigint Id PK
  }

  CRITERION {
    bigint Id PK
    bigint TaskId FK
    string Name
    int Points
    string Type "nullable"
  }
Loading

Sequence: получение задачи с критериями (withCriterias)

sequenceDiagram
  autonumber
  participant UI as Frontend
  participant GW as API Gateway
  participant CS as CoursesService

  UI->>GW: GET /tasks/get/{taskId}?withCriterias=true
  GW->>CS: GET /tasks/get/{taskId}?withCriterias=true
  CS->>CS: GetTaskAsync(taskId, withCriterias=true)
  CS-->>GW: HomeworkTaskViewModel (+Criterias)
  GW-->>UI: HomeworkTaskViewModel (+Criterias)
Loading

Sequence: обновление задачи вместе с критериями

sequenceDiagram
  autonumber
  participant UI as Frontend
  participant GW as API Gateway
  participant CS as CoursesService
  participant DB as Database

  UI->>GW: PUT /tasks/update/{taskId} (EditTaskViewModel + Criterias)
  GW->>CS: PUT /tasks/update/{taskId} (EditTaskViewModel + Criterias)
  CS->>DB: Update task fields
  CS->>DB: Upsert criterias (add/update)
  CS->>DB: Delete removed criterias
  DB-->>CS: OK
  CS-->>GW: 200 OK
  GW-->>UI: 200 OK
Loading

@DedSec256
Copy link
Contributor

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