Поддержка чек-листов для задач в сервисе hwproj#641
Closed
alken1t15 wants to merge 12 commits intoInteIIigeNET:masterfrom
Closed
Поддержка чек-листов для задач в сервисе hwproj#641alken1t15 wants to merge 12 commits intoInteIIigeNET:masterfrom
alken1t15 wants to merge 12 commits intoInteIIigeNET:masterfrom
Conversation
Contributor
Contributor
|
вмержено тут 5df91ba спасибо! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Создание задачи и добавление критериев оценивания
На форме создания новой задачи добавлен блок критериев оценивания (чек-лист).
Если критерии ещё не заданы, отображается подсказка и кнопка «Добавить критерий оценивания».
Поле «Баллы» связано с критериями: при отсутствии критериев значение равно 0 и далее автоматически пересчитывается как сумма баллов по добавленным критериям.
Создание задачи и добавление критериев оценивания
В форме создания задачи можно добавлять несколько критериев: для каждого задаётся название и количество баллов.
Для удаления критерия предусмотрена кнопка с иконкой крестика справа от строки критерия.
Поле «Баллы» пересчитывается автоматически как сумма баллов по всем добавленным критериям (на скриншоте: 3 + 1 = 4).
Создание задачи и добавление критериев оценивания
Для каждого критерия можно указать название и количество баллов.
Блок «Критерии оценивания» сворачивается/разворачивается, чтобы не перегружать форму создания задачи.
Итоговое поле «Баллы» отображает суммарный балл задачи, вычисляемый на основе критериев.
Редактирование задачи: критерии по умолчанию свёрнуты
При открытии страницы редактирования/просмотра задачи блок с критериями оценивания отображается в свёрнутом виде по умолчанию.
Это уменьшает визуальную нагрузку на страницу и позволяет раскрывать критерии только при необходимости.
Доступ к блоку с критериями осуществляется через элемент раскрытия в шапке/панели задачи.
Страница решения с критериями оценивания
Если у задачи задан список критериев, на странице решения отображается отдельный блок с перечнем критериев и элементами для выставления оценки по каждому из них.
Для разных диапазонов баллов используются разные элементы ввода: «звёзды» для небольших значений, «лайк/дизлайк» для бинарной оценки и числовое поле для ввода произвольного значения.
Под списком критериев отображается суммарный балл по критериям (например, «Сумма по критериям: 0 из 4»), а также доступно поле для комментария преподавателя.
Оценивание решения по критериям
При выставлении оценки по критерию отображается визуальный индикатор выполнения (галочка слева от соответствующего критерия).
Суммарный балл пересчитывается автоматически и показывается в формате «Сумма по критериям: X из Y» (на скриншоте: 4 из 4).
Дополнительно доступно поле «Доп. оценка» для ручного ввода значения.
Отображение выставленной оценки по критериям
После сохранения оценки на странице решения отображается итоговый результат и таблица с детализацией по критериям.
В таблице показывается оценка по каждому критерию в формате «получено / максимум» (например, 2/3 и 1/1), а также значение «Доп. оценки».
Предусмотрена возможность пересмотра выставленных баллов через действие «Изменить оценку».
Краткое техническое описание изменений
Данные и связи:
Добавлена сущность/таблица 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 : TaskIdUML: 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..*" CriterionViewModelER-диаграмма базы данных
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" }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)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