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

Plagiarism checks: Add possibility for continuous daily plagiarism checks #6666

Merged
merged 97 commits into from
Aug 12, 2023

Conversation

jakubriegel
Copy link
Contributor

@jakubriegel jakubriegel commented Jun 3, 2023

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) database calls.
  • I followed the coding and design guidelines.
  • I added multiple integration tests (Spring) related to the features (with a high test coverage).
  • 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.
  • I followed the coding and design guidelines.
  • I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
  • 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

Adds daily automated checks for onboarded exercises. The rest of the flow is unchanged.

This feature introduces continuous plagiarism control (cpc). Plagiarism checks for exercises with the cpc enables will be executed automatically every night. Implemented logic uses existing plagiarism mechanisms, so the core algorithm is untouched and the results of checks started by cpc are presented in the interface familiar to existing users. This feature doesn't open plagiarism cases automatically, but they can be opened manually just like with manual plagiarism checks.

This is the 1st milestone of continuous plagiarism control (cpc) implementation. More about it can be discovered in the thesis proposal: https://confluence.ase.in.tum.de/display/ArTEMiS/MA+Jakub+Riegel?preview=/157431627/166332701/riegel_proposal.pdf

Description

Changes:

  • automated daily plagiarism checks:
    • checks are triggered once a day at night
    • checks execute sequentially
    • subsequent submissions are checked automatically the next night
    • when cpc is enabled instructors can trigger plagiarism checks again manually
  • server-stored plagiarism configuration:
    • configuration fields added to the exercise form (creation & edit)
    • existing exercises will have configurations with default values created on the fly
    • manual plagiarism checks use server stored configuration

Above imposed some technical changes:

  • new boolean flag for enabling cpc in the exercise model
  • new ContinuousPlagiarismService - manages cpc
  • new PlagiarismChecksService - executes plagiarism checks logic for manual and automatic trigger
  • new entity for storing plagiarism checks configuration with 1:1 relationship with exercise
  • many changes in integration test not directly relevant to plagiarism in order to adapt to the new model and flow

Steps for Testing

Prerequisites:

  • 1 Instructor
  • 2 Students
  • 1 Course
  • for convenience use the automated-plagiarism-checks-5mins branch which triggers checks every 5 minutes
  1. Create programming, text or modelling exercise with continuous plagiarism control enabled (use Enabled checkbox on exercise creation form)
  2. Create two similar submission for the exercise
  3. Wait 6 minutes
  4. Open Check plagiarism page in the exercise manager and verify that plagiarism was detected
  5. Change one of submissions to something completely different
  6. Wait 6 minutes
  7. Open Check plagiarism page in the exercise manager and verify that plagiarism submissions disappeared
  8. Change one of submissions to plagiarism again
  9. Immediately after (before next automated checks are triggered) click on Check plagiarism now button on the Check plagiarism page
  10. Verify that manual trigger detected plagiarism

Review Progress

Performance Review

  • I confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance
  • I 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

Test Coverage

Class/File Line Coverage Confirmation (assert/expect)
ContinuousPlagiarismControlService.java 92%
PlagiarismChecksService.java 100%
programming-exercise-update.component.ts 80%
modeling-exercise-update.component.ts 84%
text-exercise-update.component.ts 85%

Screenshots

Exercise form

New fields (for programming, text and modelling):
image

Plagiarism page

The button for checking plagiarism has new copy with now word. It better communicates to the user that this will be on-demand check, independent from continuous plagiarism control.

Initial view:
image

View with all buttons visible:
image

@jakubriegel jakubriegel self-assigned this Jun 3, 2023
@github-actions github-actions bot added database Pull requests that update the database. (Added Automatically!). Require a CRITICAL deployment. server Pull requests that update Java code. (Added Automatically!) labels Jun 3, 2023
@github-actions github-actions bot added client Pull requests that update TypeScript code. (Added Automatically!) tests labels Jun 5, 2023
@jakubriegel jakubriegel changed the title [WIP] Continuos Plagiarism Control 1st milestone Plagiarism: Automated daily plagiarism checks Jun 8, 2023
@jakubriegel jakubriegel changed the title Plagiarism: Automated daily plagiarism checks Plagiarism: Add daily plagiarism checks Jun 8, 2023
@jakubriegel jakubriegel changed the title Plagiarism: Add daily plagiarism checks Plagiarism: Add possibility for continuous daily plagiarism checks Jun 8, 2023
@krusche krusche removed the maintainer-approved The feature maintainer has approved the PR label Jul 29, 2023
@github-actions github-actions bot added the docker label Aug 4, 2023
@github-actions github-actions bot removed the docker label Aug 4, 2023
@github-actions
Copy link

There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions.

@github-actions github-actions bot added the stale label Aug 12, 2023
@krusche krusche modified the milestones: 6.4.0, 6.4.1 Aug 12, 2023
@jakubriegel jakubriegel changed the base branch from develop to cpc August 12, 2023 16:07
@jakubriegel
Copy link
Contributor Author

This PR is merged to cpc due to issues with running it on test servers. New cpc related features will be targeting cpc branch and tested locally until issues with test servers are resolved.

@jakubriegel jakubriegel merged commit cb86590 into cpc Aug 12, 2023
16 of 19 checks passed
@jakubriegel jakubriegel deleted the automated-plagiarism-checks branch August 12, 2023 16:09
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!) config-change Pull requests that change the config in a way that they require a deployment via Ansible. database Pull requests that update the database. (Added Automatically!). Require a CRITICAL deployment. server Pull requests that update Java code. (Added Automatically!) stale tests
Projects
None yet
Development

Successfully merging this pull request may close these issues.