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

Learning analytics: Add student course dashboard with integrated Iris chatbot #8598

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

Conversation

FelixTJDietrich
Copy link
Contributor

@FelixTJDietrich FelixTJDietrich commented May 15, 2024

Warning

This PR contains migration(s)
Don't deploy! Except for TS3

Checklist

General

Server

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

Client

  • Important: We 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. [some where not avoidable without refactoring]
  • We strictly followed the client coding and design guidelines.
  • Following the theming guidelines, we specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
  • We added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
  • We added authorities to all new routes and checked the course groups for displaying navigation elements (links, buttons).
  • We documented the TypeScript code using JSDoc style.
  • We added multiple screenshots/screencasts of my UI changes.
  • We translated all newly inserted strings into English and German.

Motivation and Context

HybridD3 project that tries to investigate how the student behavior changes when they are presented with a dashboard with progress over the whole course. It also investigates how interactions with Iris and students judging their own mastery of a competency and comparing it against Artemis' judgement.

Description

  • Add feature toggle for course dashboard
  • Add course toggle for course dashboard
  • Add course dashboard
    • Exercise statistics
      • Line chart over performance in the exercises with course average
      • Line chart over the lateness of the submissions with course average
    • List of course competencies
      • Next lecture units
      • Next exercises
      • Judgement of learning (self-assess your mastery -> compare with Artemis' assessment afterwards)
    • Iris integration to chat about the dashboard
  • Hide progress of competency until student has judged it
    • Course dashboard
    • Course competencies
    • Course competency details

Steps for Testing

Prerequisites:

  • 1 Instructor
  • 2 Students
  • 1 Course with Iris and Course enabled
  • Exercises with all exercise types
  1. Log in to Artemis
  2. Click HD3 Test Course (test server 3)
  3. Should redirect to the course dashboard
  4. Observe the exercise statistics section make sure it makes sense, same with competencies
  5. Participate in some exercises
  6. Move deadline (as instructor)
  7. Complete some lectures
  8. Observe the exercise statistics section make sure it makes sense, same with competencies
  9. Open a competency and judge it
  10. Progress should not be visible if a competency is not rated
  11. On Course > dashboard
  12. On Course > Competencies
  13. On Course > Competencies > Competency Detail
  14. On dashboard try out the Iris integration

Testserver States

Note

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






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
  • I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Exam Mode Test

  • Test 1
  • Test 2

Test Coverage

Screenshots

Server Administration > Feature Toggle

image

Course Management > Course > Create/Edit

image

Course Dashboard

image

Course Competencies

image

Competency Detail

Hidden progress when competency not judged:
image

Show progress when competency judged:
image

julian-christl and others added 30 commits March 20, 2024 16:11
# Conflicts:
#	src/main/java/de/tum/in/www1/artemis/service/connectors/pyris/PyrisConnectorService.java
#	src/main/java/de/tum/in/www1/artemis/service/iris/session/IrisChatSessionService.java
#	src/main/java/de/tum/in/www1/artemis/service/iris/session/IrisCompetencyGenerationSessionService.java
#	src/main/java/de/tum/in/www1/artemis/service/iris/session/IrisHestiaSessionService.java
# Conflicts:
#	build.gradle
#	gradle.properties
#	src/main/java/de/tum/in/www1/artemis/config/EurekaClientRestTemplateConfiguration.java
#	src/main/java/de/tum/in/www1/artemis/config/SAML2Configuration.java
#	src/main/java/de/tum/in/www1/artemis/config/SecurityConfiguration.java
#	src/main/java/de/tum/in/www1/artemis/repository/LectureUnitRepository.java
#	src/main/java/de/tum/in/www1/artemis/repository/UserRepository.java
#	src/main/java/de/tum/in/www1/artemis/repository/specs/UserSpecs.java
#	src/main/java/de/tum/in/www1/artemis/service/connectors/iris/IrisConnectorService.java
#	src/main/java/de/tum/in/www1/artemis/service/iris/session/IrisChatSessionService.java
#	src/main/java/de/tum/in/www1/artemis/service/iris/session/IrisCompetencyGenerationSessionService.java
#	src/main/java/de/tum/in/www1/artemis/service/iris/session/IrisHestiaSessionService.java
#	src/main/java/de/tum/in/www1/artemis/web/rest/dto/pageablesearch/UserPageableSearchDTO.java
#	src/main/java/org/eclipse/jgit/http/server/AsIsFileFilter.java
#	src/main/java/org/eclipse/jgit/http/server/FileSender.java
#	src/main/java/org/eclipse/jgit/http/server/GitFilter.java
#	src/main/java/org/eclipse/jgit/http/server/GitServlet.java
#	src/main/java/org/eclipse/jgit/http/server/GitSmartHttpTools.java
#	src/main/java/org/eclipse/jgit/http/server/HttpServerText.java
#	src/main/java/org/eclipse/jgit/http/server/InfoPacksServlet.java
#	src/main/java/org/eclipse/jgit/http/server/InfoRefsServlet.java
#	src/main/java/org/eclipse/jgit/http/server/IsLocalFilter.java
#	src/main/java/org/eclipse/jgit/http/server/NoCacheFilter.java
#	src/main/java/org/eclipse/jgit/http/server/ObjectFileServlet.java
#	src/main/java/org/eclipse/jgit/http/server/ReceivePackErrorHandler.java
#	src/main/java/org/eclipse/jgit/http/server/ReceivePackServlet.java
#	src/main/java/org/eclipse/jgit/http/server/RepositoryFilter.java
#	src/main/java/org/eclipse/jgit/http/server/ServletUtils.java
#	src/main/java/org/eclipse/jgit/http/server/SmartOutputStream.java
#	src/main/java/org/eclipse/jgit/http/server/SmartServiceInfoRefs.java
#	src/main/java/org/eclipse/jgit/http/server/TextFileServlet.java
#	src/main/java/org/eclipse/jgit/http/server/UploadPackErrorHandler.java
#	src/main/java/org/eclipse/jgit/http/server/UploadPackServlet.java
#	src/main/java/org/eclipse/jgit/http/server/glue/ErrorServlet.java
#	src/main/java/org/eclipse/jgit/http/server/glue/MetaFilter.java
#	src/main/java/org/eclipse/jgit/http/server/glue/MetaServlet.java
#	src/main/java/org/eclipse/jgit/http/server/glue/NoParameterFilterConfig.java
#	src/main/java/org/eclipse/jgit/http/server/glue/RegexGroupFilter.java
#	src/main/java/org/eclipse/jgit/http/server/glue/RegexPipeline.java
#	src/main/java/org/eclipse/jgit/http/server/glue/ServletBinderImpl.java
#	src/main/java/org/eclipse/jgit/http/server/glue/SuffixPipeline.java
#	src/main/java/org/eclipse/jgit/http/server/glue/UrlPipeline.java
#	src/main/java/org/eclipse/jgit/http/server/glue/WrappedRequest.java
#	src/main/java/org/eclipse/jgit/http/server/resolver/AsIsFileService.java
#	src/main/java/org/eclipse/jgit/http/server/resolver/DefaultReceivePackFactory.java
#	src/main/java/org/eclipse/jgit/http/server/resolver/DefaultUploadPackFactory.java
#	src/test/java/de/tum/in/www1/artemis/ClientForwardTest.java
#	src/test/java/de/tum/in/www1/artemis/authentication/UserJenkinsGitlabIntegrationTest.java
#	src/test/java/de/tum/in/www1/artemis/user/UserTestService.java
#	src/test/java/de/tum/in/www1/artemis/util/RequestUtilService.java
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
client Pull requests that update TypeScript code. (Added Automatically!) database Pull requests that update the database. (Added Automatically!). Require a CRITICAL deployment. lock:artemis-test3 ready for review server Pull requests that update Java code. (Added Automatically!) tests
Projects
Status: Ready For Review
Development

Successfully merging this pull request may close these issues.

None yet