Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Programming exercises: Add feedback discussion feature to feedback analysis table #9810

Open
wants to merge 30 commits into
base: develop
Choose a base branch
from

Conversation

az108
Copy link
Contributor

@az108 az108 commented Nov 17, 2024

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) and too complex database calls.
  • I strictly followed the principle of data economy for all database calls.
  • I strictly followed the server coding and design guidelines.
  • I added multiple integration tests (Spring) related to the features (with a high test coverage).
  • I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
  • I documented the Java code using JavaDoc style.

Client

  • Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data (e.g. using paging).
  • I strictly followed the principle of data economy for all client-server REST calls.
  • I strictly followed the client coding and design guidelines.
  • Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
  • I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
  • I added authorities to all new routes and checked the course groups for displaying navigation elements (links, buttons).
  • I documented the TypeScript code using JSDoc style.
  • I added multiple screenshots/screencasts of my UI changes.
  • I translated all newly inserted strings into English and German.

Motivation and Context

This is a follow-up to the feature I’m working on: #9728. The goal is to provide instructors with clearer insights into the feedback given to students. In this PR, a “Feedback Discussion” modal has been introduced. This feature allows instructors to select specific feedback and open a communication channel for it, provided the course has one. For example, during an exam review, instructors can use this functionality to send messages that clarify certain mistakes, offering students a better understanding and clearer insights.

Description

A new server-side query has been implemented, which takes a feedbackDetailText input and creates a channel based on it, automatically adding all students who encountered the corresponding error. On the client side, instructors can now create these channels via a modal accessible on the far-right side of each feedback entry. This modal provides two options: instructors can either navigate directly to the newly created channel or remain on the feedback analysis page. Additionally, the modal allows instructors to specify the channel type, name, and description.

Steps for Testing

Prerequisites:

  • 1 Instructor
  • Student Sumbissions
  • 1 Programming Exercise
  1. Log in to Artemis
  2. Navigate to a Course with Instructor rights
  3. Create a Programming Exercise or use an existing one
  4. Solve the Programming Exercise as Students, ideally with different kinds of Progress (You can use artemis test users for this)
  5. Navigate as Instructor to the Grading of an Exercise
  6. Navigate to the Feedback Analysis section
  7. Verify that the table displays data correctly, and press the icon in a feedback table entry on the far right side to see the feedback-channel modal
  8. Verify that the channel is created as specified and both creation methods work as intended. Also make sure that all affected students are added to the corresponding channel when creating it.

Testserver States

Note

These badges show the state of the test servers.
Green = Currently available, Red = Currently locked
Click on the badges to get to the test servers.







Review Progress

Performance Review

  • I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance even for very large courses with more than 2000 students.
  • I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance even for very large courses with more than 2000 students.

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Performance Tests

  • Test 1
  • Test 2

Test Coverage

(Will be updated after Code Reviews)

Class/File Line Coverage Confirmation (expect)
feedback-analysis.component.ts 98%
feedback-analysis.service.ts 100%
feedback-affected-students-modal.component.ts 93.54%
Methods in ResultService 100%
Methods in ResultResource 100%

Screenshots

Before:
image

After:
image
image

Summary by CodeRabbit

Release Notes

  • New Features

    • Introduced functionality to count students affected by specific feedback details.
    • Added endpoints for creating feedback-specific channels and managing feedback discussions.
    • New modals for confirming feedback channel creation and managing feedback details.
  • Enhancements

    • Improved user interface with new labels and messages for feedback channels.
    • Enhanced feedback analysis component to support communication features.
  • Bug Fixes

    • Various improvements to ensure robust error handling and user notifications.
  • Documentation

    • Updated translations and user guidance for new features.

az108 and others added 26 commits November 10, 2024 21:43
…g-exercises/add-affected-students-to-analysis-table
…d-affected-students-to-analysis-table' into feature/programming-exercises/add-affected-students-to-analysis-table
…d-affected-students-to-analysis-table' into feature/programming-exercises/add-affected-students-to-analysis-table
…g-exercises/add-communication-feature-to-analysis-table

# Conflicts:
#	src/main/java/de/tum/cit/aet/artemis/assessment/web/ResultResource.java
#	src/main/java/de/tum/cit/aet/artemis/exercise/repository/StudentParticipationRepository.java
#	src/main/webapp/app/exercises/programming/manage/grading/feedback-analysis/feedback-analysis.component.html
#	src/main/webapp/app/exercises/programming/manage/grading/feedback-analysis/feedback-analysis.component.ts
#	src/main/webapp/app/exercises/programming/manage/grading/feedback-analysis/feedback-analysis.service.ts
#	src/main/webapp/i18n/de/programmingExercise.json
#	src/main/webapp/i18n/en/programmingExercise.json
…g-exercises/add-communication-feature-to-analysis-table
@az108 az108 self-assigned this Nov 17, 2024
@github-actions github-actions bot added tests server Pull requests that update Java code. (Added Automatically!) client Pull requests that update TypeScript code. (Added Automatically!) labels Nov 17, 2024
@b-fein
Copy link
Contributor

b-fein commented Nov 18, 2024

There can also be test cases that are hidden to students (visibility NEVER or AFTER_DUE_DATE). From the screenshots it looks like the channel name and description are empty by default and completely up to the instructor. Can the channel metadata itself leak information otherwise? Should there be a warning note that this is secret test case in the confirmation dialogue to remind instructors to not accidentally reveal stuff in the channel name/description when creating the channel?

(We don’t use the communication feature, so I’m not familiar what potential revealing metadata a channel could have besides name and description.)

Copy link
Contributor

@raffifasaro raffifasaro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems like the ParticipantScoreIntegrationTest server test is failing

Copy link
Contributor

@raffifasaro raffifasaro left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code LGTM

Copy link

⚠️ Unable to deploy to test servers ⚠️

Testserver "artemis-test3.artemis.cit.tum.de" is already in use by PR #9815.

@github-actions github-actions bot added the deployment-error Added by deployment workflows if an error occured label Nov 18, 2024
@sachmii sachmii added deploy:artemis-test6 and removed deployment-error Added by deployment workflows if an error occured labels Nov 18, 2024
@sachmii sachmii temporarily deployed to artemis-test6.artemis.cit.tum.de November 18, 2024 17:01 — with GitHub Actions Inactive
@az108
Copy link
Contributor Author

az108 commented Nov 18, 2024

@b-fein That is a good question, but I made sure to consider this by not adding too much default information to the channel itself and therefore forcing the instructors to fully decide on channel name and description. This only real information which is shown is which students are encountering a similar feedback error but not which testcase or taks its related to keeping the data anonymous.

@az108
Copy link
Contributor Author

az108 commented Nov 18, 2024

@b-fein And for the concern to leak testcases which are marked with visibility NEVER or AFTER_DUE_DATE. These testcases will not be part of the feedback analysis table in the first place as the students do not receive any feedback for such tests. The table only summarizes active feedback which was provided to the students and for that to happen, test cases must have ran over sumbissions and graded them. As this is not the case for after due date test cases thus no feedback for students is really generated and will not be part of the table till the test case eventually runs after the due date. Thus instructors can not leak any informations really. :)

Copy link

@sachmii sachmii left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested on TS6, the features worked just fine.

Copy link

@HawKhiem HawKhiem left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested on TS6. Everything works as described

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
assessment Pull requests that affect the corresponding module client Pull requests that update TypeScript code. (Added Automatically!) communication Pull requests that affect the corresponding module exercise Pull requests that affect the corresponding module ready for review server Pull requests that update Java code. (Added Automatically!) tests
Projects
Status: Ready For Review
Status: In review
Development

Successfully merging this pull request may close these issues.

7 participants