Skip to content

Commit 48beb34

Browse files
Merge branch 'develop' into chore/development/increase-exam-domain-test-coverage
2 parents d08d1a3 + 8d76e06 commit 48beb34

File tree

1,294 files changed

+23263
-16586
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,294 files changed

+23263
-16586
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
/src/test/javascript/coverage/
88
/src/test/javascript/PhantomJS*/
99
/uploads
10+
/local
1011
/test-results.xml
1112

1213
######################
@@ -222,3 +223,4 @@ data-exports/
222223
##############################
223224
/supporting_scripts/**/*.ini
224225
/legal
226+
/src/test/resources/config/application-local.yml

.husky/pre-commit

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
lint-staged --shell
1+
lint-staged

.idea/runConfigurations/Artemis__Server__LocalVC___LocalCI_.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations/Artemis__Server__LocalVC___LocalCI__Iris_.xml

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations/Artemis__Server__LocalVC___LocalCI__Theia_.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Artemis brings interactive learning to life with instant, individual feedback on
4343
* **Multiple diagram types**: Artemis supports 7 UML diagram types (e.g. class diagrams) and 4 additional diagrams (e.g. flow charts)
4444
* **Easy to use**: Students can create models easily using drag and drop, they can explain the models using additional text.
4545
* **Integrated feedback**: Reviews can provide feedback and points directly next to the model elements.
46-
6. **[Text exercises](https://docs.artemis.cit.tum.de/user/exercises/textual/)** with manual, semi-automatic assessment based on supervised machine learning and natural language processing (NLP) using [Athena](https://github.com/ls1intum/Athena)
46+
6. **[Text exercises](https://docs.artemis.cit.tum.de/user/exercises/textual/)** with manual, semi-automatic assessment based on supervised machine learning and natural language processing (NLP) using [Athena](https://github.com/ls1intum/edutelligence/tree/main/athena)
4747
* **Integrated feedback**: Reviews can provide feedback and points directly next to the text segments.
4848
* **Language detection**: Artemis detects the language of the submission and shows the word and character count.
4949
7. **[File upload exercises](https://docs.artemis.cit.tum.de/user/exercises/file-upload/)** allow full flexibility to instructors. Students can create any kind of file (e.g. PDF, PNG) and submit it to Artemis when they have completed their work. Artemis allows instructors and tutors to download the files and assess them manually based on structured grading criteria (see below in the section Assessment).
@@ -59,14 +59,25 @@ Artemis brings interactive learning to life with instant, individual feedback on
5959
* **[Adaptive learning](https://docs.artemis.cit.tum.de/user/adaptive-learning)**: Artemis allows instructors and students to define and track competencies. Students can monitor their progress towards these goals, while instructors can provide tailored feedback. This approach integrates lectures and exercises under overarching learning objectives.
6060
* **[Learning analytics](https://docs.artemis.cit.tum.de/user/learning-analytics)**: Artemis integrated different statistics for students to compare themselves to the course average. It allows instructors to evaluate the average student performance based on exercises and competencies.
6161
* **[Learning paths](https://docs.artemis.cit.tum.de/user/adaptive-learning/adaptive-learning-student.html#learning-paths)**: Based on the competency model and students' individual progress, Artemis creates learning paths that guide students through the course content.
62-
13. **[Iris](https://artemis.tum.de/about-iris)**: Artemis integrates Iris, a LLM based virtual assistant that supports students and instructors with common questions and tasks.
62+
13. **[Iris](https://github.com/ls1intum/edutelligence/tree/main/iris)**: Artemis integrates Iris, a LLM based virtual assistant that supports students and instructors with common questions and tasks.
6363
* **Questions**: Iris supports students with answering questions about exercises, lectures, and the learning performance instantly.
6464
* **Pro-active assistance**: Iris can pro-actively communicate with the students, help them with the next steps in their learning experience and motivate them to continue.
65-
14. **[Athena](https://github.com/ls1intum/Athena)**: Artemis integrates Athena, a machine learning-based tool that supports instructors with the assessment of text, modeling and programming exercises. Athena offers different modules including automatic feedback suggestions based on generate AI.
65+
14. **[Athena](https://github.com/ls1intum/edutelligence/tree/main/athena)**: Artemis integrates Athena, a machine learning-based tool that supports instructors with the assessment of text, modeling and programming exercises. Athena offers different modules including automatic feedback suggestions based on generative AI.
6666
15. **[Tutorial groups](https://docs.artemis.cit.tum.de/user/tutorialgroups/)**: Artemis supports the management of tutorial groups of a course. This includes planning the sessions, assigning responsible tutors, registering students and tracking the attendance.
6767
16. **[Plagiarism checks](https://docs.artemis.cit.tum.de/user/plagiarism-check/)**: Artemis integrates plagiarism checks for programming exercises (based on [JPlag](https://github.com/jplag/JPlag)), text exercises, and modeling exercises in courses and exams. It allows notifying students about identified plagiarism. Students can review and comment on the allegation.
6868
17. **[LTI](https://docs.artemis.cit.tum.de/user/lti)**: Artemis supports the Learning Tools Interoperability (LTI) standard to integrate Artemis into other learning management systems (LMS) such as Moodle and edX.
6969

70+
## EduTelligence Integration
71+
72+
Artemis integrates with the [EduTelligence suite](https://github.com/ls1intum/edutelligence), a comprehensive collection of AI-powered microservices designed to enhance educational technology platforms. EduTelligence provides:
73+
74+
* **Iris** - AI Virtual Tutor powered by Pyris for intelligent student assistance
75+
* **Athena** - Automated assessment system for text, modeling, and programming exercises
76+
77+
Additional services are available in the EduTelligence suite for advanced deployments. For detailed information about all available services, please refer to the [EduTelligence repository](https://github.com/ls1intum/edutelligence).
78+
79+
**Compatibility**: EduTelligence maintains compatibility with different versions of Artemis. Please refer to the [compatibility matrix](https://github.com/ls1intum/edutelligence#-artemis-compatibility) to ensure you're using compatible versions for optimal integration and functionality.
80+
7081
## Additional features and aspects
7182

7283
1. **[Integrated markdown editor](https://docs.artemis.cit.tum.de/user/markdown-support/)**: Markdown is used to format text content across the platform using an integrated markdown editor.
@@ -191,7 +202,7 @@ Refer to [Using JHipster in production](http://www.jhipster.tech/production) for
191202
The following command can automate the deployment to a server. The example shows the deployment to the main Artemis test server (which runs a virtual machine):
192203

193204
```shell
194-
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-8.0.8.war
205+
./artemis-server-cli deploy [email protected] -w build/libs/Artemis-8.1.4.war
195206
```
196207

197208
## Architecture

build.gradle

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ buildscript {
33
classpath "com.diffplug.spotless:spotless-plugin-gradle:${spotless_plugin_version}"
44
// This is required so that the latest version of the liquibase gradle plugin works
55
classpath("org.liquibase:liquibase-core:${liquibase_version}") {
6-
exclude group: 'com.opencsv', module: 'opencsv'
6+
exclude group: "com.opencsv", module: "opencsv"
77
}
88
}
99
}
@@ -28,7 +28,7 @@ plugins {
2828
}
2929

3030
group = "de.tum.cit.aet.artemis"
31-
version = "8.0.8"
31+
version = "8.1.4"
3232
description = "Interactive Learning with Individual Feedback"
3333

3434
java {
@@ -147,6 +147,9 @@ configurations.configureEach {
147147
// JPlag depends on those, but they are not really needed
148148
exclude group: "org.jgrapht", module: "jgrapht-core"
149149
exclude group: "org.apfloat", module: "apfloat"
150+
exclude group: "xom", module: "xom"
151+
152+
exclude group: "commons-configuration", module: "commons-configuration"
150153

151154
// only support one csv parser org.apache.commons:commons-csv
152155
// exclude group: "com.opencsv", module: "opencsv"
@@ -155,7 +158,7 @@ configurations.configureEach {
155158
dependencies {
156159

157160
// Required by Spring cloud
158-
implementation "org.apache.httpcomponents.client5:httpclient5:5.4.4"
161+
implementation "org.apache.httpcomponents.client5:httpclient5:5.5"
159162
implementation "org.apache.httpcomponents.core5:httpcore5:5.3.4"
160163
implementation "org.apache.httpcomponents:httpmime:4.5.14"
161164

@@ -276,16 +279,20 @@ dependencies {
276279
runtimeOnly "com.hazelcast:hazelcast-hibernate53:5.2.0"
277280

278281
implementation "org.hibernate.orm:hibernate-core:${hibernate_version}"
282+
implementation "org.hibernate.orm:hibernate-envers:${hibernate_version}"
279283

280284
// Required for jdbc connection pooling to databases
281285
implementation "com.zaxxer:HikariCP:6.3.0"
282286

283287
// Required for several dependencies
284288
implementation "org.apache.commons:commons-text:1.13.1"
285289
implementation "org.apache.commons:commons-math3:3.6.1"
290+
implementation "org.apache.commons:commons-lang3:3.17.0"
291+
// required by eureka, but actually superseded by commons-lang3 above
292+
implementation "commons-lang:commons-lang:2.6"
286293

287294
implementation("org.liquibase:liquibase-core:${liquibase_version}") {
288-
exclude group: 'com.opencsv', module: 'opencsv'
295+
exclude group: "com.opencsv", module: "opencsv"
289296
}
290297

291298
implementation "org.springframework.boot:spring-boot-starter-validation:${spring_boot_version}"
@@ -306,29 +313,29 @@ dependencies {
306313
implementation "org.springframework.boot:spring-boot-starter-oauth2-client:${spring_boot_version}"
307314

308315
implementation "org.springframework.data:spring-data-ldap:${spring_boot_version}"
309-
implementation "org.springframework.ldap:spring-ldap-core:3.2.12"
316+
implementation "org.springframework.ldap:spring-ldap-core:3.3.0"
310317

311318
implementation "org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:${spring_cloud_version}"
312319
implementation "org.springframework.cloud:spring-cloud-starter-config:4.2.2"
313320
implementation "org.springframework.cloud:spring-cloud-commons:${spring_cloud_version}"
314321

315322
// required by the Websocket Broker Connection in WebsocketConfiguration (due to multi node setup support)
316-
implementation "io.projectreactor.netty:reactor-netty-core:1.2.5"
323+
implementation "io.projectreactor.netty:reactor-netty-core:1.2.6"
317324
implementation "org.springframework:spring-messaging:${spring_framework_version}"
318325
// required for the connection to Hermes (push notifications)
319-
implementation "org.springframework.retry:spring-retry:2.0.11"
326+
implementation "org.springframework.retry:spring-retry:2.0.12"
320327

321328
// passkey functionality to simplify login
322-
implementation "com.webauthn4j:webauthn4j-spring-security-core:0.11.0.RELEASE"
323-
implementation 'com.webauthn4j:webauthn4j-core:0.29.1.RELEASE'
329+
implementation "com.webauthn4j:webauthn4j-spring-security-core:0.11.2.RELEASE"
330+
implementation "com.webauthn4j:webauthn4j-core:0.29.2.RELEASE"
324331

325332
implementation "org.springframework.security:spring-security-config:${spring_security_version}"
326333
implementation "org.springframework.security:spring-security-data:${spring_security_version}"
327334
implementation "org.springframework.security:spring-security-core:${spring_security_version}"
328335
implementation "org.springframework.security:spring-security-oauth2-core:${spring_security_version}"
329336
implementation "org.springframework.security:spring-security-oauth2-client:${spring_security_version}"
330337
// use newest version of nimbus-jose-jwt to avoid security issues through outdated dependencies
331-
implementation "com.nimbusds:nimbus-jose-jwt:10.2"
338+
implementation "com.nimbusds:nimbus-jose-jwt:10.3"
332339

333340
implementation "org.springframework.security:spring-security-oauth2-jose:${spring_security_version}"
334341
implementation "org.springframework.security:spring-security-crypto:${spring_security_version}"
@@ -378,7 +385,7 @@ dependencies {
378385
implementation "com.google.code.gson:gson:2.13.1"
379386

380387
// explicitly only use this at runtime, because developers should prefer org.apache.commons:csv
381-
runtimeOnly "com.opencsv:opencsv:5.10"
388+
runtimeOnly "com.opencsv:opencsv:5.11"
382389

383390

384391
implementation "com.google.errorprone:error_prone_annotations:2.38.0"
@@ -390,7 +397,8 @@ dependencies {
390397
implementation("net.bytebuddy:byte-buddy-agent") { version { strictly byte_buddy_version } }
391398
annotationProcessor("net.bytebuddy:byte-buddy-agent") { version { strictly byte_buddy_version } }
392399

393-
annotationProcessor "org.hibernate:hibernate-jpamodelgen:${hibernate_version}"
400+
annotationProcessor "org.hibernate.orm:hibernate-jpamodelgen:${hibernate_version}"
401+
annotationProcessor "org.hibernate.orm:hibernate-core:${hibernate_version}"
394402
annotationProcessor "org.glassfish.jaxb:jaxb-runtime:${jaxb_runtime_version}"
395403
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor:${spring_boot_version}"
396404

@@ -419,17 +427,17 @@ dependencies {
419427
testImplementation "io.github.classgraph:classgraph:4.8.179"
420428
testImplementation "org.awaitility:awaitility:4.3.0"
421429
testImplementation "org.apache.maven.shared:maven-invoker:3.3.0"
422-
testImplementation "org.gradle:gradle-tooling-api:8.14"
430+
testImplementation "org.gradle:gradle-tooling-api:8.14.1"
423431
testImplementation "org.apache.maven.surefire:surefire-report-parser:3.5.3"
424432
testImplementation "io.zonky.test:embedded-database-spring-test:2.6.0"
425433

426-
testImplementation "com.tngtech.archunit:archunit:1.4.0"
434+
testImplementation "com.tngtech.archunit:archunit:1.4.1"
427435
testImplementation "org.skyscreamer:jsonassert:1.5.3"
428436

429437
testImplementation "com.h2database:h2:2.3.232"
430438

431439
// Lightweight JSON library needed for the internals of the MockRestServiceServer
432-
testImplementation "org.json:json:20250107"
440+
testImplementation "org.json:json:20250517"
433441

434442
testImplementation "org.junit.jupiter:junit-jupiter:${junit_version}"
435443
testImplementation "org.junit.jupiter:junit-jupiter-api:${junit_version}"
@@ -442,7 +450,7 @@ dependencies {
442450
testRuntimeOnly "org.junit.platform:junit-platform-launcher:${junit_platform_version}"
443451
}
444452

445-
// we have to apply the test.gradle file after the dependencies block, otherwise we get the error Cannot change dependencies of dependency configuration ':mockitoAgent' after it has been resolved
453+
// we have to apply the test.gradle file after the dependencies block, otherwise we get the error Cannot change dependencies of dependency configuration ":mockitoAgent" after it has been resolved
446454
apply from: "gradle/test.gradle"
447455

448456

@@ -478,8 +486,8 @@ checkstyle {
478486
}
479487

480488
gradleLint {
481-
rules = ['dependency-parentheses']
482-
// criticalRules = ['unused-dependency'] // <-- this will fail the build in the event of a violation
489+
rules = ["dependency-parentheses"]
490+
// criticalRules = ["unused-dependency"] // <-- this will fail the build in the event of a violation
483491
}
484492

485493

docker/artemis/config/playwright.env

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ JHIPSTER_SECURITY_AUTHENTICATION_JWT_TOKENVALIDITYINSECONDSFORREMEMBERME="259200
3535

3636
# Properties to be exposed on the /info management endpoint
3737

38-
INFO_IMPRINT="https://ase.in.tum.de/lehrstuhl_1/component/content/article/179-imprint"
3938
INFO_TESTSERVER="true"
4039
INFO_TEXTASSESSMENTANALYTICSENABLED="true"
4140
INFO_STUDENTEXAMSTORESESSIONDATA="true"

docker/nginx.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ services:
66
nginx:
77
# nginx setup based on artemis prod ansible repository
88
container_name: artemis-nginx
9-
image: docker.io/library/nginx:1.27.4
9+
image: docker.io/library/nginx:1.28.0-alpine-slim
1010
pull_policy: missing
1111
volumes:
1212
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro

docker/nginx/nginx.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# default config /etc/nginx/nginx.conf from the nginx:1.27.3 docker image
1+
# default config /etc/nginx/nginx.conf from the nginx:1.28.0-alpine-slim docker image
22
# comment specific Artemis changes!
33

44
user nginx;

docs/admin/extension-services.rst

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,33 @@
33
Setup of Extension Services
44
===========================
55

6-
This section describes the required setup for various extension services like 'Athena', 'Hermes', 'Iris',
7-
and 'Apollon' that can be used to activate additional functionality in your Artemis instance.
6+
This section describes the required setup for various extension services that can be used to activate additional functionality in your Artemis instance.
7+
8+
EduTelligence Suite
9+
-------------------
10+
11+
EduTelligence is a comprehensive suite of AI-powered microservices designed to enhance Artemis with intelligent features. Some of the AI-powered services that integrate with Artemis are now part of this unified suite.
12+
13+
**Compatibility**: EduTelligence maintains compatibility with different versions of Artemis. Please refer to the `compatibility matrix <https://github.com/ls1intum/edutelligence#-artemis-compatibility>`_ to ensure you're using compatible versions for optimal integration and functionality.
14+
15+
**Repository**: `https://github.com/ls1intum/edutelligence <https://github.com/ls1intum/edutelligence>`_
816

917
.. toctree::
1018
:includehidden:
1119
:maxdepth: 2
1220

13-
setup/text-assessment-analytics
21+
setup/iris
22+
setup/pyris
1423
setup/athena
24+
25+
Other Extension Services
26+
------------------------
27+
28+
.. toctree::
29+
:includehidden:
30+
:maxdepth: 2
31+
32+
setup/text-assessment-analytics
1533
setup/apollon
1634
setup/hermes
17-
setup/iris
18-
setup/pyris
1935
setup/aeolus

0 commit comments

Comments
 (0)