diff --git a/README.md b/README.md index 98ca45f5..90a8ffd5 100644 --- a/README.md +++ b/README.md @@ -1,68 +1,115 @@ -# 🍲 Meet@Mensa - ![Meet@Mensa logo](resources/img/meet@mensa.png "Meet@Mensa") -[![Continuous Integration (CI)](https://github.com/AET-DevOps25/team-devoops/actions/workflows/ci.yml/badge.svg)](https://github.com/AET-DevOps25/team-devoops/actions/workflows/ci.yml) - -Many students at TUM, particularly in the larger study programs, report feeling lonely and isolated despite having countless peers. One of the places where this is especially noticeable is the Mensa during lunchtime. It's common for students that don't have a strong network of friends at university to eat alone or avoid eating at the Mensa entirely to not feel socially awkward. - -Our tool - *Meet@Mensa* - focuses on transforming the potentially uncomfortable situation of eating alone at the Mensa into an opportunity to meet fellow students and make new friends. In order to enable this, our tool offers the following features: - -### 📝 - Signing Up -In order to match students, our tool needs to gather some basic information about them first. In order to do this, users can specify what times they plan to have lunch and at which Mensa, as well as some personal data, such as their name, age, language, gender, study program, current semester, courses they are taking, and hobbies they enjoy. All personal data fields are optional. +[![Continuous Integration](https://github.com/AET-DevOps25/team-devoops/actions/workflows/ci.yml/badge.svg)](https://github.com/AET-DevOps25/team-devoops/actions/workflows/ci.yml) -### ✨ - Matching -Our system randomly matches students into groups of 4 exactly 1 hour before their common lunchtime, and invites them to share a table. If the number of requests for a certain time slot is not divisible by 4, an additional group of 2-3 students is formed. If only 1 student is left out, they are added on top of a 4-student group. +[![Continuous Deployment](https://github.com/AET-DevOps25/team-devoops/actions/workflows/ci_cd.yml/badge.svg)](https://github.com/AET-DevOps25/team-devoops/actions/workflows/ci_cd.yml) -Users can also add preferences to their search by setting filters, e.g. if they are willing to meet up with people from the same degree. However, setting filters does not guarantee a 100% match - our system prioritises assigning everyone to a group one way or another over meeting everyone's preferences. +Many students at TUM, particularly in the larger study programs, report feeling lonely and isolated despite having countless peers. One of the places where this is especially noticeable is the Mensa during lunchtime. It's common for students that don't have a strong network of friends at university to eat alone or avoid eating at the Mensa entirely to not feel socially awkward. -### 🤝 - RSVP-ing -Nothing is worse than waiting for someone who won't show up, thus our tool asks users to RSVP to any invites they receive (with ```yes``` / ```no``` options, no tentatives). Once an invite is accepted, all users receive a confirmation email with a corresponding ```ics.``` file in the attachment. It is also possible to cancel the meetup. +Our tool - *Meet@Mensa* - focuses on transforming the potentially uncomfortable situation of eating alone at the Mensa into an opportunity to meet fellow students and make new friends. + +# 🥘 Features + +## Sign up +Create an account and meet@mensa will store your basic information for next time! + +## Request Matches +Let us know who you'd like to meet and when you're available by submitting a Match Request! + +## Get Matched +Every night at 22:00 CET, our algorithm will run and try to find the best group for you! Group bailed on you or you're just feeling spontaneous? We'll try matching you again at 10:00am CET. + +## RSVP +Got matched? Let us know if you can make it by clicking the RSVP button! + +## Meet People +Show up, have lunch, make friends. Simple as that! + +## Break the Ice +Talking to new people can be hard at the start, so meet@mensa takes advantage of modern GenAi to help break the ice! Check your match for custom conversation starters for you and the people you'll be meeting! + +# 🚀 Installation and Deployment + +## Live Demo +Check it out for yourself at [app.meetatmensa.com](https://app.meetatmensa.com)! + +## Deploy it Yourself +Instructions for deploying with Docker-Compose and Kubernetes are available [here](deployment/README.md) + +# 🔭 Repository Overview + +``` +meet@mensa/ +├── api/ +│ ├── changelogs/ # All updates to the API spec # All changes to our API, documented +│ ├── scripts/ # Scripts for generating API code # Scripts for generating code based on API spec +│ └── openapi.yaml # The API definition itself +│ +├── client/ # Our React-based client +│ +├── deployment/ +│ ├── docker/ # Deploy meet@mensa locally! +│ ├── docker-debug/ # Deploy meet@mensa locally with exposed backend services +│ ├── k8s/ # Deploy meet@mensa to TUM's Kubernetes Cluster +│ └── compose.aws.yml # Deploy meet@mensa to AWS +│ +├── docs/ +│ ├── api.html # API spec (https://aet-devops25.github.io/team-devoops/api.html) +│ └── problem_statement.md # Meet@Mensa problem statement +│ +├── infrastructure/ # Terraform scripts for AWS deployment +│ +├── resources/ # Images and Diagrams used elsewhere +│ +├── server/ # Our back-end +│ ├── database/ +│ │ ├── matchdb/ # Databases for matching-data +│ │ └── userdb/ # Databases for user-data +│ │ +│ ├── gateway/ # Routes traffic to our API +│ │ +│ ├── genai/ # Provides conversation starters +│ │ +│ ├── matching/ # Manages matching requests +│ │ ├── src/ # Spring-Boot Application +│ │ ├── generated/ # Server API interface generated with openapi-generate-cli +│ │ └── generated-client/ # Client API interface generated with openapi-generate-cli +│ │ +│ └── user/ # Manages users +│ ├── src/ # Spring-Boot Application +│ ├── generated/ # Server API interface generated with openapi-generate-cli +│ └── generated-client/ # Client API interface generated with openapi-generate-cli +│ +├── README.md # You're reading it ;) +├── CONTRIBUTING.md # Join us +└── LICENSE # MIT +``` + + + +# ⚙ System Overview -### 🤸 - Meeting up -Students at the same table should also have something to talk about, so our system's GenAI component will suggest topics based on the students' common interests to help break the ice. +### Component Diagram (top-level architecture) +This model contains information about Meet@Mensa's architecture. Each component's color indicates the student responsible for it. -## ⚙ System Overview +![Component Diagram](resources/diagrams/meetatmensa_uml_component.png "Meet@Mensa Component Diagram") ### Class Diagram (analysis object model) +This model contains information about the objects handled by the Meet@Mensa API. Detailed class diagrams for User and Matching services are available in their respective README.md files ([User](server/user/README.md), [Matching](server/matching/README.md)). -![Class Diagram](resources/diagrams/meetatmensa_uml_class.png "Meet@Mensa Class Diagram") +![Class Diagram](resources/diagrams/meetatmensa_uml_class_object.png "Meet@Mensa Model Class Diagram") ### Use Case Diagram +This model contains information about Meet@Mensa's use-cases. ![Use-Case Diagram](resources/diagrams/meetatmensa_uml_use_case.png "Meet@Mensa Use-Case Diagram") -### Component Diagram (top-level architecture) - -![Component Diagram](resources/diagrams/meetatmensa_uml_component.png "Meet@Mensa Component Diagram") - -## 🎭 Use Case Scenarios - -### Scenario 1 -James is a first-semester M.Sc. Informatics student. Unfortunately, he wasn't able to be in Munich for the SET in the first few weeks and thus hasn't really made any friends. - -James is comfortable eating alone at the Mensa, but he'd like to meet some of his fellow students, so he logs onto Meet@Mensa and inputs the times he plans to have lunch at the Garching Mensa, what degree he is studying, what classes he's taking, and what his hobbies are outside of university. James doesn't have any preferences on whom to meet, so he sets no search criteria and leaves it to chance. - -On Monday, an hour before lunchtime, James receives a notification that he's been matched with a table of 3 other students for lunch at the Mensa. James accepts the invitation, letting the system know he plans on joining. He receives a confirmation email with an ```ics.``` file that he happily adds to his calendar, as he loves technology and keeping everything documented. - -At the agreed time, James arrives at the Mensa, gets his food and joins the other students at the table. Not knowing how where to begin, he checks the list of conversation starters and sees that several students are also taking the DevOps course this semester. With this in mind, James asks the other students about their projects and exchanges some jokes about Scrum masters. - -After an hour of pleasant conversation, James has now met several new people and goes about his day feeling less lonely. - ---- -### Scenario 2 -Anastasiia is also a first-semester M.Sc. Informatics student. She met a lot of wonderful people during the orientation week but noticed there were barely any female students in her degree. Being new to Munich and wanting to connect with other women in Computer Science, Anastasiia signs up for Meet@Mensa. - -She fills out the information about her studies and hobbies, and specifies she would like to have lunch with other female students in their 1st semester. For this, she activates 2 filters in the search criteria: gender and current semester. One hour before her lunchtime on Friday, she receives a notification that she has been matched with 1 student. Anastasiia reviews her profile and notices they both have a lot of different hobbies they could tell each other about. For example, Anastasiia's match is passionate about horse riding, which Anastasiia herself always wanted to learn more about. - -Anastasiia loves diversity and meeting people from different backgrounds, so she happily accepts the invitation. After the other student confirms, they both receive a calendar invite via email. The meeting goes really well, and both students instantly click, so they agree to meet up for lunch again next week. The system has brilliantly fulfilled its purpose. - ---- -### Scenario 3 -Enrico is a second-semester M.Sc. student in Informatics, and he's currently looking for group members for his Interdisciplinary Project. While most of his classmates are in Computer Science, he's interested in meeting students from other departments to bring diverse perspectives to the project. - -He signs into Meet@Mensa and indicates that he's particularly looking for people involved in the Interdisciplinary Project this semester. He selects lunchtime on Thursday and fills out his profile with relevant classes and hobbies, including his passion for design and urban mobility. - -Enrico is matched with 2 other students, all of them accept the invitation, so Enrico receives an email with a calendar event for the meetup. +# 💜 More Documentation -During lunch, one of the AI-generated conversation starters suggests discussing project ideas around sustainability, a topic all three are passionate about. The group ends up brainstorming potential concepts, and by the end of the meal, Enrico has found two highly motivated partners for his project—and a reason to look forward to more team lunches. +There's much more to see, check it out! +- [API Spec](https://aet-devops25.github.io/team-devoops/api.html) +- [Problem Statement](docs/problem_statement.md) +- [Grading Table & Student Responsabilities](docs/grading_table.md) +- [Grafana Dashboards](deployment/README.md) +- [CI/CD Pipeline](docs/ci-cd.md) +- [Matching Algorithm](server/matching/README.md) \ No newline at end of file diff --git a/deployment/README.md b/deployment/README.md index 1e99528e..3a42dfa8 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -19,7 +19,7 @@ docker compose pull # Pulls the images of all services docker images # Shows locally chached images ``` -If the client container is crashing with this error 'exec /entrypoint.sh: no such file or directory', change CRLF to LF +If the client container is crashing with this error 'exec /entrypoint.sh: no such file or directory', this may be caused by line-endings differing in Windows and Linux. To fix this switch between CRLF (Windows) to LF (Linux). ## Kubernetes Helm Prerequisites: diff --git a/docs/ci-cd.md b/docs/ci-cd.md new file mode 100644 index 00000000..d83961dd --- /dev/null +++ b/docs/ci-cd.md @@ -0,0 +1,19 @@ +# 🍲 Meet@Mensa CI / CD Pipeline + +## Step 1 - API Spec: + +Meet@Mensa uses openapi-codegen-cli to generate interfaces for clients and servers to ensure contract fidelity. Therefore, the first step of the CI/CD pipeline is to check whether there have been any changes to the API spec. To avoid forcing regeneration every time and ensure consistency across machines, we check in generated code using a github bot. + +Instead of relying on GitHub to detect changes to files we use a system of scripts and flags to detect whether the .info.version attribute of openapi.yaml has changed since last time code was generated generation. This prevents triggering on changes to the api/ folder, which causes generation to re-trigger when branches containing API spec updates were merged and could lead to merge conflicts. This led to merge conflicts if other branches were merged. + +## Step 2 - Tests: + +Next our CI/CD pipeline runs checks on all services to ensure functionality runs successfully. In Java, this is handled using Testcontainers to simulate the other services. Theses tests must pass for the pipeline to continue + +## Step 3 - Build & Publish Images: + +Our CI/CD Pipeline next uses docker to build images of all our microservices. These images are then published to GCHR.io tagged with the current commit hash, as well as a tag for the branch or PR it is generated from. If an image is created by a push to main, the latest tag is applied + +## Step 4 - Deploy to Kubernetes: + +If all steps succeed, our CI/CD pipeline attempts to deploy to the chair's rancher workspace using helm upgrade. In order to force images to refresh, we set the command to use the unique commit tag, rather than the lastest tag. \ No newline at end of file diff --git a/docs/grading_table.md b/docs/grading_table.md new file mode 100644 index 00000000..63c590d8 --- /dev/null +++ b/docs/grading_table.md @@ -0,0 +1,88 @@ +## 1. 🧩 Functional Application (20 Points) + +| Criteria | Points | Status | Responsible | Comment | +| -------------------------------------------------------------------------- | ------ | ------ | ----------- | ------- | +| End-to-end functionality between all components (client, server, database) | 6 | 100% | All | | +| Smooth and usable user interface | 4 | 100% | Enrico | | +| REST API is clearly defined and matches functional needs | 4 | 100% | James | | +| Server Side has at least 3 microservices | 4 | 100% | All | | +| Application topic is appropriately chosen and fits project objectives | 2 | 100% | All | | +## 2. 🤖 GenAI Integration (10 Points) + +| Criteria | Points | Status | Responsible | Comment | +| --------------------------------------------------------------------- | ------ | ------ | ----------- | ------- | +| GenAI module is well-embedded and fulfills a real user-facing purpose | 4 | 100% | Anastasiia | | +| Connects to cloud/local LLM | 4 | 100% | Anastasiia | | +| Modularity of the GenAI logic as a microservice | 2 | 100% | Anastasiia | | + +--- + +## 3. 🐳 Containerization & Local Setup (10 Points) + +| Criteria | Points | Status | Responsible | Comment | +| --------------------------------------------------------------------------------------------------------------------------------------- | ------ | ------ | ----------- | ------- | +| Each component is containerized and runnable in isolation | 6 | 100% | All | | +| docker-compose.yml enables local development and testing with minimal effort and provides sane defaults (no complex env setup required) | 4 | 100% | James | | + +--- + +## 4. 🔁 CI/CD & Deployment (20 Points) + +| Criteria | Points | Status | Responsible | Comment | +| ----------------------------------------------------------------------------------------------------------------------- | ------ | ------ | -------------------------------------------------- | ------- | +| CI pipeline with build, test, and Docker image generation via GitHub Actions | 8 | 100% | James (4):

Anastasiia (2)

Enrico (2) |
| +| CD pipeline set up to automatically deploy to Kubernetes on main merge | 6 | 100% | Anastasiia | | +| Deployment works on our infrastructure or Cloud, alternative Kubernetes environments (e.g., Minikube, TUM infra, Azure) | 6 | 100% | Enrico (AWS) | | + +--- + +## 5. 📊 Monitoring & Observability (10 Points) + +| Criteria | Points | Status | Responsible | Comment | +| ------------------------------------------------------- | ------ | ------ | ----------- | ------------------------------------------------------------------ | +| Prometheus integrated and collecting meaningful metrics | 4 | 80%* | Enrico | Unable to deploy to Rancher due to permissions issues with Grafana | +| Grafana dashboards for system behavior visualization | 4 | 100% | Enrico | | +| At least one alert rule set up | 2 | 100% | Enrico | | + +--- + +## 6. 🧪 Testing & Structured Engineering Process (20 Points) + +| Criteria | Points | Status | Responsible | Comment | +| -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ------ | -------------------------------------------------------------------------------------------------- | ------- | +| Test cases implemented for server/client and GenAI logic | 6 | 100% | James (2):
- User
- Matching

Anastasiia (2):
- GenAI

Enrico(2):
- Client | | +| Evidence of software engineering process: documented requirements, architecture models, such as top-level architecture, use case diagramm and analysis object model. | 10 | 100% | All | | +| Tests run automatically in CI and cover key functionality | 4 | 100% | James | | + +--- + +## 7. 📚 Documentation & Weekly Reporting (10 Points) + +| Criteria | Points | Status | Responsible | Comment | +| ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------ | ------ | ----------- | ------- | +| [README.md](http://README.md) or Wiki includes setup instructions, architecture overview, usage guide, and a clear mapping of student responsibilities | 2 | 100% | James | | +| Documentation of CI/CD setup, and GenAI usage included | 2 | 100% | Anastassia | | +| Deployment and local setup instructions are clear, reproducible, and platform-specific (≤3 commands for local setup, with sane defaults) | 2 | 100% | Anastasiia | | +| Subsystems have documented interfaces (API-driven deployment, e.g. Swagger/OpenAPI) | 2 | 100% | James | | +| Monitoring instructions included in the documentation and exported as files | 2 | 100% | Enrico | | + +--- + +## 8. 🎤 Final Presentation (Pass/Fail) + +| Criteria | Points | Status | +| ----------------------------------------------------------------------------------------- | --------- | ------ | +| All students present their own subsystem | Pass/Fail | Open | +| Live demo of application and DevOps setup | Pass/Fail | Open | +| Team reflects on what worked well, what didn’t, and answers follow-up technical questions | Pass/Fail | Open | + +--- + +## 🏅 Bonus Points (up to +5) + +| Criteria | Points | Status | Responsible | Comment | +| ---------------------------------------------------------------------------- | ------ | ------ | ----------- | -------------------------------------------------------------- | +| Advanced Kubernetes use (e.g., self-healing, custom operators, auto-scaling) | +1 | 0% | | | +| Full RAG pipeline implementation (with vector DB like Weaviate) | +1 | 0% | | Not applicable | +| Real-world-grade observability (e.g., log aggregation, tracing) | +1 | 50% | Enrico | Limited by grafana permission issues | +| Beautiful, original UI or impactful project topic | +1 | 100% | Enrico | In our opinion | \ No newline at end of file diff --git a/docs/problem_statement.md b/docs/problem_statement.md new file mode 100644 index 00000000..8e287b7b --- /dev/null +++ b/docs/problem_statement.md @@ -0,0 +1,66 @@ +# 🍲 Meet@Mensa + +![Meet@Mensa logo](resources/img/meet@mensa.png "Meet@Mensa") + +Many students at TUM, particularly in the larger study programs, report feeling lonely and isolated despite having countless peers. One of the places where this is especially noticeable is the Mensa during lunchtime. It's common for students that don't have a strong network of friends at university to eat alone or avoid eating at the Mensa entirely to not feel socially awkward. + +Our tool - *Meet@Mensa* - focuses on transforming the potentially uncomfortable situation of eating alone at the Mensa into an opportunity to meet fellow students and make new friends. In order to enable this, our tool offers the following features: + +### 📝 - Signing Up +In order to match students, our tool needs to gather some basic information about them first. In order to do this, users can specify what times they plan to have lunch and at which Mensa, as well as some personal data, such as their name, age, language, gender, study program, current semester, courses they are taking, and hobbies they enjoy. All personal data fields are optional. + +### ✨ - Matching +Our system randomly matches students into groups of 4 exactly 1 hour before their common lunchtime, and invites them to share a table. If the number of requests for a certain time slot is not divisible by 4, an additional group of 2-3 students is formed. If only 1 student is left out, they are added on top of a 4-student group. + +Users can also add preferences to their search by setting filters, e.g. if they are willing to meet up with people from the same degree. However, setting filters does not guarantee a 100% match - our system prioritises assigning everyone to a group one way or another over meeting everyone's preferences. + +### 🤝 - RSVP-ing +Nothing is worse than waiting for someone who won't show up, thus our tool asks users to RSVP to any invites they receive (with ```yes``` / ```no``` options, no tentatives). Once an invite is accepted, all users receive a confirmation email with a corresponding ```ics.``` file in the attachment. It is also possible to cancel the meetup. + +### 🤸 - Meeting up +Students at the same table should also have something to talk about, so our system's GenAI component will suggest topics based on the students' common interests to help break the ice. + +## ⚙ System Overview + +### Class Diagram (analysis object model) + +![Class Diagram](../resources/diagrams/meetatmensa_uml_class.png "Meet@Mensa Class Diagram") + +### Use Case Diagram + +![Use-Case Diagram](../resources/diagrams/meetatmensa_uml_use_case.png "Meet@Mensa Use-Case Diagram") + +### Component Diagram (top-level architecture) + +![Component Diagram](../resources/diagrams/meetatmensa_uml_component.png "Meet@Mensa Component Diagram") + +## 🎭 Use Case Scenarios + +### Scenario 1 +James is a first-semester M.Sc. Informatics student. Unfortunately, he wasn't able to be in Munich for the SET in the first few weeks and thus hasn't really made any friends. + +James is comfortable eating alone at the Mensa, but he'd like to meet some of his fellow students, so he logs onto Meet@Mensa and inputs the times he plans to have lunch at the Garching Mensa, what degree he is studying, what classes he's taking, and what his hobbies are outside of university. James doesn't have any preferences on whom to meet, so he sets no search criteria and leaves it to chance. + +On Monday, an hour before lunchtime, James receives a notification that he's been matched with a table of 3 other students for lunch at the Mensa. James accepts the invitation, letting the system know he plans on joining. + +At the agreed time, James arrives at the Mensa, gets his food and joins the other students at the table. Not knowing how where to begin, he checks the list of conversation starters and sees that several students are also taking the DevOps course this semester. With this in mind, James asks the other students about their projects and exchanges some jokes about Scrum masters. + +After an hour of pleasant conversation, James has now met several new people and goes about his day feeling less lonely. + +--- +### Scenario 2 +Anastasiia is also a first-semester M.Sc. Informatics student. She met a lot of wonderful people during the orientation week but noticed there were barely any female students in her degree. Being new to Munich and wanting to connect with other women in Computer Science, Anastasiia signs up for Meet@Mensa. + +She fills out the information about her studies and hobbies, and specifies she would like to have lunch with other female students in their 1st semester. For this, she activates 2 filters in the search criteria: gender and current semester. One hour before her lunchtime on Friday, she receives a notification that she has been matched with 1 student. Anastasiia reviews her profile and notices they both have a lot of different hobbies they could tell each other about. For example, Anastasiia's match is passionate about horse riding, which Anastasiia herself always wanted to learn more about. + +Anastasiia loves diversity and meeting people from different backgrounds, so she happily accepts the invitation. The meeting goes really well, and both students instantly click, so they agree to meet up for lunch again next week. The system has brilliantly fulfilled its purpose. + +--- +### Scenario 3 +Enrico is a second-semester M.Sc. student in Informatics, and he's currently looking for group members for his Interdisciplinary Project. While most of his classmates are in Computer Science, he's interested in meeting students from other departments to bring diverse perspectives to the project. + +He signs into Meet@Mensa and indicates that he's particularly looking for people involved in the Interdisciplinary Project this semester. He selects lunchtime on Thursday and fills out his profile with relevant classes and hobbies, including his passion for design and urban mobility. + +Enrico is matched with 2 other students, all of them accept the invitation. + +During lunch, one of the AI-generated conversation starters suggests discussing project ideas around sustainability, a topic all three are passionate about. The group ends up brainstorming potential concepts, and by \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_class.json b/resources/diagrams/meetatmensa_uml_class.json deleted file mode 100644 index b0c4ca85..00000000 --- a/resources/diagrams/meetatmensa_uml_class.json +++ /dev/null @@ -1 +0,0 @@ -{"id":"26fe8e9d-f7d0-45ff-9980-43c4cb3a2929","title":"meetatmensa_uml_class","model":{"version":"3.0.0","type":"ClassDiagram","size":{"width":1895.1999969482422,"height":940},"interactive":{"elements":{},"relationships":{}},"elements":{"b74edd1e-5137-4345-8a46-2d31f707c612":{"id":"b74edd1e-5137-4345-8a46-2d31f707c612","name":"User","type":"Class","owner":null,"bounds":{"x":-860,"y":-370,"width":500,"height":310},"attributes":["3cf30316-a612-48c9-99a3-8dca42bdacc1","fd3bd53f-ca06-49ab-a091-dd8835bc4f30","25382b22-26b4-4da7-8537-a6852ac38aa7","51ccd0bf-993e-403a-a943-28b25c02d3ea","d13b58e6-fca8-473e-ba08-7d851ba6efd0","e2652ab0-d487-4b02-8e4d-8181311e2b43","0c58b580-b51b-41c9-9816-f4e0ae442fb1","79521210-89e2-4712-b3fd-eedcf00cc0ab"],"methods":["f66779a4-1d9d-4c1c-a4c5-b96812bcedb8"]},"3cf30316-a612-48c9-99a3-8dca42bdacc1":{"id":"3cf30316-a612-48c9-99a3-8dca42bdacc1","name":"- userID: UUID","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-859.5,"y":-329.5,"width":499,"height":30}},"fd3bd53f-ca06-49ab-a091-dd8835bc4f30":{"id":"fd3bd53f-ca06-49ab-a091-dd8835bc4f30","name":"- name: String","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-859.5,"y":-299.5,"width":499,"height":30}},"25382b22-26b4-4da7-8537-a6852ac38aa7":{"id":"25382b22-26b4-4da7-8537-a6852ac38aa7","name":"- gender: ProfileAttributes","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-859.5,"y":-269.5,"width":499,"height":30}},"51ccd0bf-993e-403a-a943-28b25c02d3ea":{"id":"51ccd0bf-993e-403a-a943-28b25c02d3ea","name":"- degree: String","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-859.5,"y":-239.5,"width":499,"height":30}},"d13b58e6-fca8-473e-ba08-7d851ba6efd0":{"id":"d13b58e6-fca8-473e-ba08-7d851ba6efd0","name":"- birthday: LocalDate","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-859.5,"y":-209.5,"width":499,"height":30}},"e2652ab0-d487-4b02-8e4d-8181311e2b43":{"id":"e2652ab0-d487-4b02-8e4d-8181311e2b43","name":"- interests: List","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-859.5,"y":-179.5,"width":499,"height":30}},"0c58b580-b51b-41c9-9816-f4e0ae442fb1":{"id":"0c58b580-b51b-41c9-9816-f4e0ae442fb1","name":"- semester: Integer","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-859.5,"y":-149.5,"width":499,"height":30}},"79521210-89e2-4712-b3fd-eedcf00cc0ab":{"id":"79521210-89e2-4712-b3fd-eedcf00cc0ab","name":"- bio: String","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-859.5,"y":-119.5,"width":499,"height":30}},"f66779a4-1d9d-4c1c-a4c5-b96812bcedb8":{"id":"f66779a4-1d9d-4c1c-a4c5-b96812bcedb8","name":"+ register: User","type":"ClassMethod","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-859.5,"y":-89.5,"width":499,"height":30}},"ede8e85e-44d0-41a2-a798-9db118716363":{"id":"ede8e85e-44d0-41a2-a798-9db118716363","name":"MatchRequest","type":"Class","owner":null,"bounds":{"x":-130,"y":-370,"width":780,"height":250},"attributes":["05d61982-8bbe-4123-919c-5c13e24d077d","0116b536-40e3-42a1-a033-b8294f44bfae","1a22d87b-b018-4a74-a950-4b585ee9f7d4","6830c300-cb52-454e-a4f6-aa6ed8ec016a","268806bd-b88b-4e9f-95ee-961aa1cefec2","08095273-bdbf-42b0-8d10-f4a210187b98","21203eb0-eb82-4f7b-8b5e-b274f30dd904"],"methods":[]},"05d61982-8bbe-4123-919c-5c13e24d077d":{"id":"05d61982-8bbe-4123-919c-5c13e24d077d","name":"- requestID: UUID","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":-129.5,"y":-329.5,"width":779,"height":30}},"0116b536-40e3-42a1-a033-b8294f44bfae":{"id":"0116b536-40e3-42a1-a033-b8294f44bfae","name":"- owner: User","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":-129.5,"y":-299.5,"width":779,"height":30}},"1a22d87b-b018-4a74-a950-4b585ee9f7d4":{"id":"1a22d87b-b018-4a74-a950-4b585ee9f7d4","name":"- date: LocalDate","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":-129.5,"y":-269.5,"width":779,"height":30}},"6830c300-cb52-454e-a4f6-aa6ed8ec016a":{"id":"6830c300-cb52-454e-a4f6-aa6ed8ec016a","name":"- timeslot: List","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":-129.5,"y":-239.5,"width":779,"height":30}},"268806bd-b88b-4e9f-95ee-961aa1cefec2":{"id":"268806bd-b88b-4e9f-95ee-961aa1cefec2","name":"- locataion: Mensa","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":-129.5,"y":-209.5,"width":779,"height":30}},"08095273-bdbf-42b0-8d10-f4a210187b98":{"id":"08095273-bdbf-42b0-8d10-f4a210187b98","name":"- preferences: matchPreferences","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":-129.5,"y":-179.5,"width":779,"height":30}},"21203eb0-eb82-4f7b-8b5e-b274f30dd904":{"id":"21203eb0-eb82-4f7b-8b5e-b274f30dd904","name":"- status: requestStatus","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":-129.5,"y":-149.5,"width":779,"height":30}},"9dae361a-8a25-49a3-abd8-cdd6d88cea7a":{"id":"9dae361a-8a25-49a3-abd8-cdd6d88cea7a","name":"Mensa","type":"Enumeration","owner":null,"bounds":{"x":10,"y":-50,"width":160,"height":110},"attributes":["e73fa640-d0bd-4eac-aaae-c656da1ab08f","cc42f1c9-a886-40c5-aff4-1189064d5fb2"],"methods":[]},"e73fa640-d0bd-4eac-aaae-c656da1ab08f":{"id":"e73fa640-d0bd-4eac-aaae-c656da1ab08f","name":"GARCHING","type":"ClassAttribute","owner":"9dae361a-8a25-49a3-abd8-cdd6d88cea7a","bounds":{"x":10.5,"y":0.5,"width":159,"height":30}},"cc42f1c9-a886-40c5-aff4-1189064d5fb2":{"id":"cc42f1c9-a886-40c5-aff4-1189064d5fb2","name":"ARCISSTR","type":"ClassAttribute","owner":"9dae361a-8a25-49a3-abd8-cdd6d88cea7a","bounds":{"x":10.5,"y":30.5,"width":159,"height":30}},"6c519b57-a15d-4468-a0d0-bee90d0a228c":{"id":"6c519b57-a15d-4468-a0d0-bee90d0a228c","name":"Match","type":"Class","owner":null,"bounds":{"x":-460,"y":30,"width":420,"height":130},"attributes":["2ec1e593-95ea-40c4-b573-11c53f220bb2","09738817-888c-4d7c-9a28-75bf3d409039","34cc3ac6-7031-4216-9920-aa736467b701"],"methods":[]},"2ec1e593-95ea-40c4-b573-11c53f220bb2":{"id":"2ec1e593-95ea-40c4-b573-11c53f220bb2","name":"- matchID: UUID","type":"ClassAttribute","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-459.5,"y":70.5,"width":419,"height":30}},"09738817-888c-4d7c-9a28-75bf3d409039":{"id":"09738817-888c-4d7c-9a28-75bf3d409039","name":"- userID: UUID","type":"ClassAttribute","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-459.5,"y":100.5,"width":419,"height":30}},"34cc3ac6-7031-4216-9920-aa736467b701":{"id":"34cc3ac6-7031-4216-9920-aa736467b701","name":"- group: Group","type":"ClassAttribute","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-459.5,"y":130.5,"width":419,"height":30}},"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf":{"id":"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf","name":"AIConversationStarter","type":"Class","owner":null,"bounds":{"x":210,"y":350,"width":420,"height":100},"attributes":["cda4b490-3ce1-4d3c-b405-5de5cfe350a8"],"methods":["54be3243-b4c9-4387-9b6c-3592bf11295f"]},"cda4b490-3ce1-4d3c-b405-5de5cfe350a8":{"id":"cda4b490-3ce1-4d3c-b405-5de5cfe350a8","name":"- userBios: List","type":"ClassAttribute","owner":"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf","bounds":{"x":210.5,"y":390.5,"width":419,"height":30}},"54be3243-b4c9-4387-9b6c-3592bf11295f":{"id":"54be3243-b4c9-4387-9b6c-3592bf11295f","name":"+ genConversationStarters(input: List): String","type":"ClassMethod","owner":"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf","bounds":{"x":210.5,"y":420.5,"width":419,"height":30}},"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531":{"id":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","name":"Group","type":"Class","owner":null,"bounds":{"x":-480,"y":260,"width":330,"height":190},"attributes":["6c9b0949-2cc2-44ee-9c4c-526854747c0d","4577818d-55a6-4fc1-aed9-084560e8bab1","8c033cab-2373-46e0-8326-5637d1e60f37","a8511925-2ad1-49ac-9ba0-284bc49a174f","c414014e-d52e-4ece-b7ef-c16c90cc7a4c"],"methods":[]},"6c9b0949-2cc2-44ee-9c4c-526854747c0d":{"id":"6c9b0949-2cc2-44ee-9c4c-526854747c0d","name":"- groupID: UUID","type":"ClassAttribute","owner":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","bounds":{"x":-479.5,"y":300.5,"width":329,"height":30}},"4577818d-55a6-4fc1-aed9-084560e8bab1":{"id":"4577818d-55a6-4fc1-aed9-084560e8bab1","name":"- time: Integer","type":"ClassAttribute","owner":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","bounds":{"x":-479.5,"y":330.5,"width":329,"height":30}},"8c033cab-2373-46e0-8326-5637d1e60f37":{"id":"8c033cab-2373-46e0-8326-5637d1e60f37","name":"- date: LocalDate","type":"ClassAttribute","owner":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","bounds":{"x":-479.5,"y":360.5,"width":329,"height":30}},"a8511925-2ad1-49ac-9ba0-284bc49a174f":{"id":"a8511925-2ad1-49ac-9ba0-284bc49a174f","name":"- conversationStarters: List","type":"ClassAttribute","owner":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","bounds":{"x":-479.5,"y":390.5,"width":329,"height":30}},"c414014e-d52e-4ece-b7ef-c16c90cc7a4c":{"id":"c414014e-d52e-4ece-b7ef-c16c90cc7a4c","name":"- users: List","type":"ClassAttribute","owner":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","bounds":{"x":-479.5,"y":420.5,"width":329,"height":30}},"2e8a9d75-04a1-4635-be52-cdebda839713":{"id":"2e8a9d75-04a1-4635-be52-cdebda839713","name":"PreferenceFilters","type":"Class","owner":null,"bounds":{"x":210,"y":-50,"width":250,"height":130},"attributes":["e31f027c-273d-4b20-b06d-a89f3bf77d79","54134841-00d8-4123-966f-ef7c4bab360d","ac5dca88-de73-4eb5-b1c6-eeba1757f3fd"],"methods":[]},"e31f027c-273d-4b20-b06d-a89f3bf77d79":{"id":"e31f027c-273d-4b20-b06d-a89f3bf77d79","name":"+ sameDegree: boolean","type":"ClassAttribute","owner":"2e8a9d75-04a1-4635-be52-cdebda839713","bounds":{"x":210.5,"y":-9.5,"width":249,"height":30}},"54134841-00d8-4123-966f-ef7c4bab360d":{"id":"54134841-00d8-4123-966f-ef7c4bab360d","name":"+ sameGender: boolean","type":"ClassAttribute","owner":"2e8a9d75-04a1-4635-be52-cdebda839713","bounds":{"x":210.5,"y":20.5,"width":249,"height":30}},"ac5dca88-de73-4eb5-b1c6-eeba1757f3fd":{"id":"ac5dca88-de73-4eb5-b1c6-eeba1757f3fd","name":"+ sameAge: boolean","type":"ClassAttribute","owner":"2e8a9d75-04a1-4635-be52-cdebda839713","bounds":{"x":210.5,"y":50.5,"width":249,"height":30}},"de398f12-3a8c-4b85-9fa3-3286bde080b8":{"id":"de398f12-3a8c-4b85-9fa3-3286bde080b8","name":"requestStatus","type":"Enumeration","owner":null,"bounds":{"x":490,"y":-50,"width":160,"height":230},"attributes":["a5ca1d02-d843-4f9b-90f6-4193a4728cc5","a483ed96-bbaf-4c18-8460-1682a9a7955f","6d837eda-bb7d-4a90-8809-2266e2ad6ff5","e58e6417-f5c5-4348-8cca-3f0db60e1b05","9aea784f-6dba-4c90-a348-068b1fa69efe","6e56a4ca-bb8a-49c3-948a-79656f0dab24"],"methods":[]},"a5ca1d02-d843-4f9b-90f6-4193a4728cc5":{"id":"a5ca1d02-d843-4f9b-90f6-4193a4728cc5","name":"PENDING","type":"ClassAttribute","owner":"de398f12-3a8c-4b85-9fa3-3286bde080b8","bounds":{"x":490.5,"y":0.5,"width":159,"height":30}},"a483ed96-bbaf-4c18-8460-1682a9a7955f":{"id":"a483ed96-bbaf-4c18-8460-1682a9a7955f","name":"MATCHED","type":"ClassAttribute","owner":"de398f12-3a8c-4b85-9fa3-3286bde080b8","bounds":{"x":490.5,"y":30.5,"width":159,"height":30}},"6d837eda-bb7d-4a90-8809-2266e2ad6ff5":{"id":"6d837eda-bb7d-4a90-8809-2266e2ad6ff5","name":"UNMATCHABLE","type":"ClassAttribute","owner":"de398f12-3a8c-4b85-9fa3-3286bde080b8","bounds":{"x":490.5,"y":60.5,"width":159,"height":30}},"e58e6417-f5c5-4348-8cca-3f0db60e1b05":{"id":"e58e6417-f5c5-4348-8cca-3f0db60e1b05","name":"CANCELED","type":"ClassAttribute","owner":"de398f12-3a8c-4b85-9fa3-3286bde080b8","bounds":{"x":490.5,"y":90.5,"width":159,"height":30}},"9aea784f-6dba-4c90-a348-068b1fa69efe":{"id":"9aea784f-6dba-4c90-a348-068b1fa69efe","name":"REMATCH","type":"ClassAttribute","owner":"de398f12-3a8c-4b85-9fa3-3286bde080b8","bounds":{"x":490.5,"y":120.5,"width":159,"height":30}},"6e56a4ca-bb8a-49c3-948a-79656f0dab24":{"id":"6e56a4ca-bb8a-49c3-948a-79656f0dab24","name":"EXPIRED","type":"ClassAttribute","owner":"de398f12-3a8c-4b85-9fa3-3286bde080b8","bounds":{"x":490.5,"y":150.5,"width":159,"height":30}},"5b089a40-b95c-4109-bacf-4552642f75c6":{"id":"5b089a40-b95c-4109-bacf-4552642f75c6","name":"MatchStatus","type":"Enumeration","owner":null,"bounds":{"x":210,"y":120,"width":160,"height":200},"attributes":["00ea37aa-2146-4f09-8491-4c70ae6ed081","02195530-e5d7-4092-9cbc-86f090492207","8fbb7a0f-94d4-4549-82e5-a22c421ffbbe","7c093d16-d1fa-44f0-8acc-35edef4f5b42","67ee8942-6659-44cd-987b-f4ba274e683c"],"methods":[]},"00ea37aa-2146-4f09-8491-4c70ae6ed081":{"id":"00ea37aa-2146-4f09-8491-4c70ae6ed081","name":"UNSENT","type":"ClassAttribute","owner":"5b089a40-b95c-4109-bacf-4552642f75c6","bounds":{"x":210.5,"y":170.5,"width":159,"height":30}},"02195530-e5d7-4092-9cbc-86f090492207":{"id":"02195530-e5d7-4092-9cbc-86f090492207","name":"SENT","type":"ClassAttribute","owner":"5b089a40-b95c-4109-bacf-4552642f75c6","bounds":{"x":210.5,"y":200.5,"width":159,"height":30}},"8fbb7a0f-94d4-4549-82e5-a22c421ffbbe":{"id":"8fbb7a0f-94d4-4549-82e5-a22c421ffbbe","name":"CONFIRMED","type":"ClassAttribute","owner":"5b089a40-b95c-4109-bacf-4552642f75c6","bounds":{"x":210.5,"y":230.5,"width":159,"height":30}},"7c093d16-d1fa-44f0-8acc-35edef4f5b42":{"id":"7c093d16-d1fa-44f0-8acc-35edef4f5b42","name":"REJECTED","type":"ClassAttribute","owner":"5b089a40-b95c-4109-bacf-4552642f75c6","bounds":{"x":210.5,"y":260.5,"width":159,"height":30}},"67ee8942-6659-44cd-987b-f4ba274e683c":{"id":"67ee8942-6659-44cd-987b-f4ba274e683c","name":"EXPIRED","type":"ClassAttribute","owner":"5b089a40-b95c-4109-bacf-4552642f75c6","bounds":{"x":210.5,"y":290.5,"width":159,"height":30}}},"relationships":{"91058fb1-1508-4f0f-9ce9-71e8bc29f848":{"id":"91058fb1-1508-4f0f-9ce9-71e8bc29f848","name":"","type":"ClassUnidirectional","owner":null,"bounds":{"x":-360,"y":-255,"width":230,"height":48},"path":[{"x":0,"y":10},{"x":230,"y":10}],"source":{"direction":"Right","element":"b74edd1e-5137-4345-8a46-2d31f707c612","multiplicity":"1","role":""},"target":{"direction":"Left","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"0...*","role":"submit"},"isManuallyLayouted":false},"28ceb54b-663e-4534-9eef-53f856980f99":{"id":"28ceb54b-663e-4534-9eef-53f856980f99","name":"","type":"ClassComposition","owner":null,"bounds":{"x":565,"y":-120,"width":18.899999618530273,"height":79},"path":[{"x":5,"y":70},{"x":5,"y":0}],"source":{"direction":"Up","element":"de398f12-3a8c-4b85-9fa3-3286bde080b8","multiplicity":"1","role":""},"target":{"direction":"Down","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"","role":""},"isManuallyLayouted":false},"98d39955-0187-477a-8356-bd72e3d74450":{"id":"98d39955-0187-477a-8356-bd72e3d74450","name":"","type":"ClassComposition","owner":null,"bounds":{"x":330,"y":-120,"width":18.899999618530273,"height":79},"path":[{"x":5,"y":70},{"x":5,"y":0}],"source":{"direction":"Up","element":"2e8a9d75-04a1-4635-be52-cdebda839713","multiplicity":"1","role":""},"target":{"direction":"Down","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"","role":""},"isManuallyLayouted":false},"70a81883-1291-4df2-9b7b-02eeb51bd4db":{"id":"70a81883-1291-4df2-9b7b-02eeb51bd4db","name":"","type":"ClassComposition","owner":null,"bounds":{"x":85,"y":-120,"width":38.483333587646484,"height":79},"path":[{"x":5,"y":70},{"x":5,"y":0}],"source":{"direction":"Up","element":"9dae361a-8a25-49a3-abd8-cdd6d88cea7a","multiplicity":"1...*","role":""},"target":{"direction":"Down","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"","role":""},"isManuallyLayouted":false},"0e20744e-e93f-48b8-a989-d7f534d08682":{"id":"0e20744e-e93f-48b8-a989-d7f534d08682","name":"","type":"ClassUnidirectional","owner":null,"bounds":{"x":-615,"y":-60,"width":155,"height":193},"path":[{"x":5,"y":0},{"x":5,"y":155},{"x":155,"y":155}],"source":{"direction":"Down","element":"b74edd1e-5137-4345-8a46-2d31f707c612","multiplicity":"","role":""},"target":{"direction":"Left","element":"6c519b57-a15d-4468-a0d0-bee90d0a228c","multiplicity":"is matched","role":""},"isManuallyLayouted":false},"f0eee103-52d3-4951-a459-99dc0387198e":{"id":"f0eee103-52d3-4951-a459-99dc0387198e","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-154.03333282470703,"y":-120,"width":82.9333324432373,"height":159},"path":[{"x":69.03333282470703,"y":150},{"x":69.03333282470703,"y":0}],"source":{"direction":"Up","element":"6c519b57-a15d-4468-a0d0-bee90d0a228c","multiplicity":"1","role":"results in"},"target":{"direction":"Down","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"1","role":"fullfills"},"isManuallyLayouted":false},"dd1a329f-239c-4b1f-8550-84ad5019b855":{"id":"dd1a329f-239c-4b1f-8550-84ad5019b855","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-370.4833335876465,"y":160,"width":70.48333358764648,"height":109},"path":[{"x":65.48333358764648,"y":100},{"x":65.48333358764648,"y":0}],"source":{"direction":"Up","element":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","multiplicity":"","role":"1"},"target":{"direction":"Down","element":"6c519b57-a15d-4468-a0d0-bee90d0a228c","multiplicity":"","role":"Matches"},"isManuallyLayouted":false},"cceb5d70-ca74-47e3-82fa-39d312b8e985":{"id":"cceb5d70-ca74-47e3-82fa-39d312b8e985","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-927.5999984741211,"y":-225,"width":460,"height":580},"path":[{"x":67.5999984741211,"y":10},{"x":-9.400001525878906,"y":10},{"x":-9.400001525878906,"y":580},{"x":447.5999984741211,"y":580}],"source":{"direction":"Left","element":"b74edd1e-5137-4345-8a46-2d31f707c612","multiplicity":"contains","role":"2...*"},"target":{"direction":"Left","element":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","multiplicity":"is part of","role":"1"},"isManuallyLayouted":true},"d7025410-af75-4200-ad37-b0c5a095bc47":{"id":"d7025410-af75-4200-ad37-b0c5a095bc47","name":"","type":"ClassUnidirectional","owner":null,"bounds":{"x":-150,"y":390,"width":360,"height":48},"path":[{"x":360,"y":10},{"x":0,"y":10}],"source":{"direction":"Downleft","element":"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf","multiplicity":"","role":""},"target":{"direction":"Right","element":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","multiplicity":"generates promps","role":""},"isManuallyLayouted":false},"77494d38-1ef5-4dac-8fe2-f6a980de0b7a":{"id":"77494d38-1ef5-4dac-8fe2-f6a980de0b7a","name":"","type":"ClassComposition","owner":null,"bounds":{"x":-40,"y":130,"width":250,"height":48},"path":[{"x":250,"y":10},{"x":0,"y":10}],"source":{"direction":"Left","element":"5b089a40-b95c-4109-bacf-4552642f75c6","multiplicity":"1","role":""},"target":{"direction":"Right","element":"6c519b57-a15d-4468-a0d0-bee90d0a228c","multiplicity":"","role":""},"isManuallyLayouted":false}},"assessments":{}},"lastUpdate":"2025-05-12T15:09:32.892Z","description":"Your auto-generated version for sharing","versions":[{"id":"710ea1da-9ff3-47b3-9aa8-271cb0fe117b","title":"New shared version ","model":{"version":"3.0.0","type":"ClassDiagram","size":{"width":1060,"height":540},"interactive":{"elements":{},"relationships":{}},"elements":{"19200346-559a-45fb-93dd-02cb77b361b8":{"id":"19200346-559a-45fb-93dd-02cb77b361b8","name":"Class","type":"Class","owner":null,"bounds":{"x":-510,"y":-250,"width":160,"height":100},"attributes":["7a897f63-73ac-45f0-a932-379f8f8dd277"],"methods":["60fdbb94-03d3-4752-928f-ba12c9f169d2"]},"7a897f63-73ac-45f0-a932-379f8f8dd277":{"id":"7a897f63-73ac-45f0-a932-379f8f8dd277","name":"+ attribute: Type","type":"ClassAttribute","owner":"19200346-559a-45fb-93dd-02cb77b361b8","bounds":{"x":-509.5,"y":-209.5,"width":159,"height":30}},"60fdbb94-03d3-4752-928f-ba12c9f169d2":{"id":"60fdbb94-03d3-4752-928f-ba12c9f169d2","name":"+ method()","type":"ClassMethod","owner":"19200346-559a-45fb-93dd-02cb77b361b8","bounds":{"x":-509.5,"y":-179.5,"width":159,"height":30}},"3189cee0-a66e-4768-87a8-1309e39ab6f9":{"id":"3189cee0-a66e-4768-87a8-1309e39ab6f9","name":"Class","type":"Class","owner":null,"bounds":{"x":-110,"y":-250,"width":160,"height":100},"attributes":["50e4e425-49a9-4d3b-bd49-ae1243ee3bf5"],"methods":["0d195832-5543-44ff-976c-7ff850fab19a"]},"50e4e425-49a9-4d3b-bd49-ae1243ee3bf5":{"id":"50e4e425-49a9-4d3b-bd49-ae1243ee3bf5","name":"+ attribute: Type","type":"ClassAttribute","owner":"3189cee0-a66e-4768-87a8-1309e39ab6f9","bounds":{"x":-109.5,"y":-209.5,"width":159,"height":30}},"0d195832-5543-44ff-976c-7ff850fab19a":{"id":"0d195832-5543-44ff-976c-7ff850fab19a","name":"+ method()","type":"ClassMethod","owner":"3189cee0-a66e-4768-87a8-1309e39ab6f9","bounds":{"x":-109.5,"y":-179.5,"width":159,"height":30}}},"relationships":{"fb1c9f46-395a-444f-9d69-6bea6c6bf60d":{"id":"fb1c9f46-395a-444f-9d69-6bea6c6bf60d","name":"","type":"ClassUnidirectional","owner":null,"bounds":{"x":-350,"y":-210,"width":240,"height":31},"path":[{"x":240,"y":10},{"x":0,"y":10}],"source":{"direction":"Left","element":"3189cee0-a66e-4768-87a8-1309e39ab6f9","multiplicity":"","role":""},"target":{"direction":"Right","element":"19200346-559a-45fb-93dd-02cb77b361b8","multiplicity":"","role":""},"isManuallyLayouted":false}},"assessments":{}},"lastUpdate":"2025-05-12T15:11:05.857Z","description":"Your auto-generated version for sharing"},{"id":"df1837fa-feda-4c66-90ce-24196c25edfe","title":"New shared version ","model":{"version":"3.0.0","type":"ClassDiagram","size":{"width":2260,"height":1400},"interactive":{"elements":{},"relationships":{}},"elements":{"b74edd1e-5137-4345-8a46-2d31f707c612":{"id":"b74edd1e-5137-4345-8a46-2d31f707c612","name":"User","type":"Class","owner":null,"bounds":{"x":-550,"y":-290,"width":500,"height":250},"attributes":["3cf30316-a612-48c9-99a3-8dca42bdacc1","fd3bd53f-ca06-49ab-a091-dd8835bc4f30","25382b22-26b4-4da7-8537-a6852ac38aa7","51ccd0bf-993e-403a-a943-28b25c02d3ea","d13b58e6-fca8-473e-ba08-7d851ba6efd0"],"methods":["f66779a4-1d9d-4c1c-a4c5-b96812bcedb8","6a21e75d-301e-40d1-8c15-5c9c83a1fe6c"]},"3cf30316-a612-48c9-99a3-8dca42bdacc1":{"id":"3cf30316-a612-48c9-99a3-8dca42bdacc1","name":"- studentID: int","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-549.5,"y":-249.5,"width":499,"height":30}},"fd3bd53f-ca06-49ab-a091-dd8835bc4f30":{"id":"fd3bd53f-ca06-49ab-a091-dd8835bc4f30","name":"- name: String","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-549.5,"y":-219.5,"width":499,"height":30}},"25382b22-26b4-4da7-8537-a6852ac38aa7":{"id":"25382b22-26b4-4da7-8537-a6852ac38aa7","name":"- profileAttributes: ProfileAttributes","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-549.5,"y":-189.5,"width":499,"height":30}},"51ccd0bf-993e-403a-a943-28b25c02d3ea":{"id":"51ccd0bf-993e-403a-a943-28b25c02d3ea","name":"- preferences: List","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-549.5,"y":-159.5,"width":499,"height":30}},"d13b58e6-fca8-473e-ba08-7d851ba6efd0":{"id":"d13b58e6-fca8-473e-ba08-7d851ba6efd0","name":"- lunchEvents: List","type":"ClassAttribute","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-549.5,"y":-129.5,"width":499,"height":30}},"f66779a4-1d9d-4c1c-a4c5-b96812bcedb8":{"id":"f66779a4-1d9d-4c1c-a4c5-b96812bcedb8","name":"+ updateProfile(newProfile: ProfileAttributes): void","type":"ClassMethod","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-549.5,"y":-99.5,"width":499,"height":30}},"6a21e75d-301e-40d1-8c15-5c9c83a1fe6c":{"id":"6a21e75d-301e-40d1-8c15-5c9c83a1fe6c","name":"+ createPreference(prefData: PreferenceData): MeetingPreference","type":"ClassMethod","owner":"b74edd1e-5137-4345-8a46-2d31f707c612","bounds":{"x":-549.5,"y":-69.5,"width":499,"height":30}},"ede8e85e-44d0-41a2-a798-9db118716363":{"id":"ede8e85e-44d0-41a2-a798-9db118716363","name":"MeetingPreference","type":"Class","owner":null,"bounds":{"x":60,"y":-350,"width":780,"height":310},"attributes":["05d61982-8bbe-4123-919c-5c13e24d077d","0116b536-40e3-42a1-a033-b8294f44bfae","1a22d87b-b018-4a74-a950-4b585ee9f7d4","6830c300-cb52-454e-a4f6-aa6ed8ec016a","268806bd-b88b-4e9f-95ee-961aa1cefec2","08095273-bdbf-42b0-8d10-f4a210187b98"],"methods":["a5dc9793-2aa8-4a17-b3fd-892fc59932ad","7b5c489f-5c73-4ed1-99e0-f204c2c65f50","5cafd016-2a97-47c4-b375-90470daebd80"]},"05d61982-8bbe-4123-919c-5c13e24d077d":{"id":"05d61982-8bbe-4123-919c-5c13e24d077d","name":"- preferenceID: UUID","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":60.5,"y":-309.5,"width":779,"height":30}},"0116b536-40e3-42a1-a033-b8294f44bfae":{"id":"0116b536-40e3-42a1-a033-b8294f44bfae","name":"- owner: User","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":60.5,"y":-279.5,"width":779,"height":30}},"1a22d87b-b018-4a74-a950-4b585ee9f7d4":{"id":"1a22d87b-b018-4a74-a950-4b585ee9f7d4","name":"- timeSlot: DateTimeRange","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":60.5,"y":-249.5,"width":779,"height":30}},"6830c300-cb52-454e-a4f6-aa6ed8ec016a":{"id":"6830c300-cb52-454e-a4f6-aa6ed8ec016a","name":"- filters: PreferenceFilters","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":60.5,"y":-219.5,"width":779,"height":30}},"268806bd-b88b-4e9f-95ee-961aa1cefec2":{"id":"268806bd-b88b-4e9f-95ee-961aa1cefec2","name":"- mensa: Mensa","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":60.5,"y":-189.5,"width":779,"height":30}},"08095273-bdbf-42b0-8d10-f4a210187b98":{"id":"08095273-bdbf-42b0-8d10-f4a210187b98","name":"- status: PreferenceStatus","type":"ClassAttribute","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":60.5,"y":-159.5,"width":779,"height":30}},"a5dc9793-2aa8-4a17-b3fd-892fc59932ad":{"id":"a5dc9793-2aa8-4a17-b3fd-892fc59932ad","name":"+ updatePreference(newFilters: PreferenceFilters, newTimeSlot: DateTimeRange, newMensa: Mensa): void","type":"ClassMethod","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":60.5,"y":-129.5,"width":779,"height":30}},"7b5c489f-5c73-4ed1-99e0-f204c2c65f50":{"id":"7b5c489f-5c73-4ed1-99e0-f204c2c65f50","name":"+ markMatched(match: Match): void","type":"ClassMethod","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":60.5,"y":-99.5,"width":779,"height":30}},"5cafd016-2a97-47c4-b375-90470daebd80":{"id":"5cafd016-2a97-47c4-b375-90470daebd80","name":"+ cancel(): void","type":"ClassMethod","owner":"ede8e85e-44d0-41a2-a798-9db118716363","bounds":{"x":60.5,"y":-69.5,"width":779,"height":30}},"9dae361a-8a25-49a3-abd8-cdd6d88cea7a":{"id":"9dae361a-8a25-49a3-abd8-cdd6d88cea7a","name":"Mensa","type":"Class","owner":null,"bounds":{"x":950,"y":-350,"width":160,"height":130},"attributes":["e73fa640-d0bd-4eac-aaae-c656da1ab08f","cc42f1c9-a886-40c5-aff4-1189064d5fb2","67bab43b-0c47-4290-9938-03b6ba2f262a"],"methods":[]},"e73fa640-d0bd-4eac-aaae-c656da1ab08f":{"id":"e73fa640-d0bd-4eac-aaae-c656da1ab08f","name":"- mensaID: int","type":"ClassAttribute","owner":"9dae361a-8a25-49a3-abd8-cdd6d88cea7a","bounds":{"x":950.5,"y":-309.5,"width":159,"height":30}},"cc42f1c9-a886-40c5-aff4-1189064d5fb2":{"id":"cc42f1c9-a886-40c5-aff4-1189064d5fb2","name":"- name: String","type":"ClassAttribute","owner":"9dae361a-8a25-49a3-abd8-cdd6d88cea7a","bounds":{"x":950.5,"y":-279.5,"width":159,"height":30}},"67bab43b-0c47-4290-9938-03b6ba2f262a":{"id":"67bab43b-0c47-4290-9938-03b6ba2f262a","name":"- location: Sring","type":"ClassAttribute","owner":"9dae361a-8a25-49a3-abd8-cdd6d88cea7a","bounds":{"x":950.5,"y":-249.5,"width":159,"height":30}},"6c519b57-a15d-4468-a0d0-bee90d0a228c":{"id":"6c519b57-a15d-4468-a0d0-bee90d0a228c","name":"Match","type":"Class","owner":null,"bounds":{"x":-500,"y":340,"width":420,"height":280},"attributes":["2ec1e593-95ea-40c4-b573-11c53f220bb2","09738817-888c-4d7c-9a28-75bf3d409039","34cc3ac6-7031-4216-9920-aa736467b701","0926e357-3e3c-4ae0-ba1f-3afc818640fc","7ab72b84-7bc3-48e0-9b92-2adfbf66b0c2","6adbb30c-c07b-4ade-ad00-5fbce180d5cb"],"methods":["9ff1adc7-a007-4ab7-b098-aac749398a4a","8a2438fd-4bb9-4c86-bf6d-f2a2020c7362"]},"2ec1e593-95ea-40c4-b573-11c53f220bb2":{"id":"2ec1e593-95ea-40c4-b573-11c53f220bb2","name":"- matchID: UUID","type":"ClassAttribute","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-499.5,"y":380.5,"width":419,"height":30}},"09738817-888c-4d7c-9a28-75bf3d409039":{"id":"09738817-888c-4d7c-9a28-75bf3d409039","name":"- participants: List","type":"ClassAttribute","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-499.5,"y":410.5,"width":419,"height":30}},"34cc3ac6-7031-4216-9920-aa736467b701":{"id":"34cc3ac6-7031-4216-9920-aa736467b701","name":"- matchedTimeSlot: DateTimeRange","type":"ClassAttribute","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-499.5,"y":440.5,"width":419,"height":30}},"0926e357-3e3c-4ae0-ba1f-3afc818640fc":{"id":"0926e357-3e3c-4ae0-ba1f-3afc818640fc","name":"- matchedMensa: Mensa","type":"ClassAttribute","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-499.5,"y":470.5,"width":419,"height":30}},"7ab72b84-7bc3-48e0-9b92-2adfbf66b0c2":{"id":"7ab72b84-7bc3-48e0-9b92-2adfbf66b0c2","name":"- matchStatus: MatchStatus","type":"ClassAttribute","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-499.5,"y":500.5,"width":419,"height":30}},"6adbb30c-c07b-4ade-ad00-5fbce180d5cb":{"id":"6adbb30c-c07b-4ade-ad00-5fbce180d5cb","name":"- invitations: List","type":"ClassAttribute","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-499.5,"y":530.5,"width":419,"height":30}},"9ff1adc7-a007-4ab7-b098-aac749398a4a":{"id":"9ff1adc7-a007-4ab7-b098-aac749398a4a","name":"- dispatchInvitations(): void","type":"ClassMethod","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-499.5,"y":560.5,"width":419,"height":30}},"8a2438fd-4bb9-4c86-bf6d-f2a2020c7362":{"id":"8a2438fd-4bb9-4c86-bf6d-f2a2020c7362","name":"+ checkInvitationStatus(invitations: List): void","type":"ClassMethod","owner":"6c519b57-a15d-4468-a0d0-bee90d0a228c","bounds":{"x":-499.5,"y":590.5,"width":419,"height":30}},"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf":{"id":"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf","name":"AIConversationStarter","type":"Class","owner":null,"bounds":{"x":-1080,"y":380,"width":420,"height":130},"attributes":["f3979305-824f-4a49-a52b-f1e8f6bb3106","75f4626d-404e-4dfd-8193-562a65224222"],"methods":["54be3243-b4c9-4387-9b6c-3592bf11295f"]},"f3979305-824f-4a49-a52b-f1e8f6bb3106":{"id":"f3979305-824f-4a49-a52b-f1e8f6bb3106","name":"- id: UUID","type":"ClassAttribute","owner":"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf","bounds":{"x":-1079.5,"y":420.5,"width":419,"height":30}},"75f4626d-404e-4dfd-8193-562a65224222":{"id":"75f4626d-404e-4dfd-8193-562a65224222","name":"- inputInformation: List","type":"ClassAttribute","owner":"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf","bounds":{"x":-1079.5,"y":450.5,"width":419,"height":30}},"54be3243-b4c9-4387-9b6c-3592bf11295f":{"id":"54be3243-b4c9-4387-9b6c-3592bf11295f","name":"+ generateSuggestions(input: List): String","type":"ClassMethod","owner":"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf","bounds":{"x":-1079.5,"y":480.5,"width":419,"height":30}},"d9c6344a-cd37-46d9-84a6-ceaa63765834":{"id":"d9c6344a-cd37-46d9-84a6-ceaa63765834","name":"Matcher","type":"Class","owner":null,"bounds":{"x":310,"y":80,"width":450,"height":70},"attributes":[],"methods":["53eb130e-0b8a-44ae-a132-b9aa1e89a2d6"]},"53eb130e-0b8a-44ae-a132-b9aa1e89a2d6":{"id":"53eb130e-0b8a-44ae-a132-b9aa1e89a2d6","name":"+ runMatchingCycle(prefs: List): void","type":"ClassMethod","owner":"d9c6344a-cd37-46d9-84a6-ceaa63765834","bounds":{"x":310.5,"y":120.5,"width":449,"height":30}},"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531":{"id":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","name":"LunchEvent","type":"Class","owner":null,"bounds":{"x":-1080,"y":130,"width":190,"height":160},"attributes":["6c9b0949-2cc2-44ee-9c4c-526854747c0d","4577818d-55a6-4fc1-aed9-084560e8bab1"],"methods":["8249cb9c-5581-4228-a052-26f6a751fe51","f14d646c-34c1-47f7-81cf-e66ca3f7f386"]},"6c9b0949-2cc2-44ee-9c4c-526854747c0d":{"id":"6c9b0949-2cc2-44ee-9c4c-526854747c0d","name":"- eventID: UUID","type":"ClassAttribute","owner":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","bounds":{"x":-1079.5,"y":170.5,"width":189,"height":30}},"4577818d-55a6-4fc1-aed9-084560e8bab1":{"id":"4577818d-55a6-4fc1-aed9-084560e8bab1","name":"- match: Match","type":"ClassAttribute","owner":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","bounds":{"x":-1079.5,"y":200.5,"width":189,"height":30}},"8249cb9c-5581-4228-a052-26f6a751fe51":{"id":"8249cb9c-5581-4228-a052-26f6a751fe51","name":"+ startChat(): ChatRoom","type":"ClassMethod","owner":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","bounds":{"x":-1079.5,"y":230.5,"width":189,"height":30}},"f14d646c-34c1-47f7-81cf-e66ca3f7f386":{"id":"f14d646c-34c1-47f7-81cf-e66ca3f7f386","name":"+ cancelEvent(): void","type":"ClassMethod","owner":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","bounds":{"x":-1079.5,"y":260.5,"width":189,"height":30}},"2e8a9d75-04a1-4635-be52-cdebda839713":{"id":"2e8a9d75-04a1-4635-be52-cdebda839713","name":"PreferenceFilters","type":"Class","owner":null,"bounds":{"x":810,"y":-10,"width":250,"height":100},"attributes":["e31f027c-273d-4b20-b06d-a89f3bf77d79","54134841-00d8-4123-966f-ef7c4bab360d"],"methods":[]},"e31f027c-273d-4b20-b06d-a89f3bf77d79":{"id":"e31f027c-273d-4b20-b06d-a89f3bf77d79","name":"+ sameFaculty: boolean","type":"ClassAttribute","owner":"2e8a9d75-04a1-4635-be52-cdebda839713","bounds":{"x":810.5,"y":30.5,"width":249,"height":30}},"54134841-00d8-4123-966f-ef7c4bab360d":{"id":"54134841-00d8-4123-966f-ef7c4bab360d","name":"+ sameStudyProgramm: boolean","type":"ClassAttribute","owner":"2e8a9d75-04a1-4635-be52-cdebda839713","bounds":{"x":810.5,"y":60.5,"width":249,"height":30}},"de398f12-3a8c-4b85-9fa3-3286bde080b8":{"id":"de398f12-3a8c-4b85-9fa3-3286bde080b8","name":"PreferenceStatus","type":"Enumeration","owner":null,"bounds":{"x":240,"y":-570,"width":160,"height":140},"attributes":["a5ca1d02-d843-4f9b-90f6-4193a4728cc5","a483ed96-bbaf-4c18-8460-1682a9a7955f","6d837eda-bb7d-4a90-8809-2266e2ad6ff5"],"methods":[]},"a5ca1d02-d843-4f9b-90f6-4193a4728cc5":{"id":"a5ca1d02-d843-4f9b-90f6-4193a4728cc5","name":"OPEN","type":"ClassAttribute","owner":"de398f12-3a8c-4b85-9fa3-3286bde080b8","bounds":{"x":240.5,"y":-519.5,"width":159,"height":30}},"a483ed96-bbaf-4c18-8460-1682a9a7955f":{"id":"a483ed96-bbaf-4c18-8460-1682a9a7955f","name":"MATCHED","type":"ClassAttribute","owner":"de398f12-3a8c-4b85-9fa3-3286bde080b8","bounds":{"x":240.5,"y":-489.5,"width":159,"height":30}},"6d837eda-bb7d-4a90-8809-2266e2ad6ff5":{"id":"6d837eda-bb7d-4a90-8809-2266e2ad6ff5","name":"CANCELLED","type":"ClassAttribute","owner":"de398f12-3a8c-4b85-9fa3-3286bde080b8","bounds":{"x":240.5,"y":-459.5,"width":159,"height":30}},"ff6040d6-18f9-4d86-914e-55dbdaaa734b":{"id":"ff6040d6-18f9-4d86-914e-55dbdaaa734b","name":"RSVPStatus","type":"Enumeration","owner":null,"bounds":{"x":130,"y":230,"width":160,"height":140},"attributes":["fe550594-de26-40b2-ab6a-9a9260bff4a2","5f13afac-2376-44e2-92d0-3209db0c240a","c5862a2f-579c-4b99-bb15-d1e4ecf36e62"],"methods":[]},"fe550594-de26-40b2-ab6a-9a9260bff4a2":{"id":"fe550594-de26-40b2-ab6a-9a9260bff4a2","name":"PENDING","type":"ClassAttribute","owner":"ff6040d6-18f9-4d86-914e-55dbdaaa734b","bounds":{"x":130.5,"y":280.5,"width":159,"height":30}},"5f13afac-2376-44e2-92d0-3209db0c240a":{"id":"5f13afac-2376-44e2-92d0-3209db0c240a","name":"YES","type":"ClassAttribute","owner":"ff6040d6-18f9-4d86-914e-55dbdaaa734b","bounds":{"x":130.5,"y":310.5,"width":159,"height":30}},"c5862a2f-579c-4b99-bb15-d1e4ecf36e62":{"id":"c5862a2f-579c-4b99-bb15-d1e4ecf36e62","name":"NO","type":"ClassAttribute","owner":"ff6040d6-18f9-4d86-914e-55dbdaaa734b","bounds":{"x":130.5,"y":340.5,"width":159,"height":30}},"79e914c2-b088-48f1-9a0f-048152204ad7":{"id":"79e914c2-b088-48f1-9a0f-048152204ad7","name":"Invitation","type":"Class","owner":null,"bounds":{"x":-200,"y":40,"width":250,"height":190},"attributes":["3ab3c237-b8bf-4c8a-a736-c43fb6b5fdfe","7b5c7800-0237-4739-9056-398209a7014b","fe4ef550-fc26-431c-a0de-6f996a89ae52"],"methods":["4590a506-92f7-4543-aee6-b430e64307a3","912759ac-11b6-4d22-8bd3-9025f321afcf"]},"3ab3c237-b8bf-4c8a-a736-c43fb6b5fdfe":{"id":"3ab3c237-b8bf-4c8a-a736-c43fb6b5fdfe","name":"- invID: UUID","type":"ClassAttribute","owner":"79e914c2-b088-48f1-9a0f-048152204ad7","bounds":{"x":-199.5,"y":80.5,"width":249,"height":30}},"7b5c7800-0237-4739-9056-398209a7014b":{"id":"7b5c7800-0237-4739-9056-398209a7014b","name":"- status: RVSPStatus","type":"ClassAttribute","owner":"79e914c2-b088-48f1-9a0f-048152204ad7","bounds":{"x":-199.5,"y":110.5,"width":249,"height":30}},"fe4ef550-fc26-431c-a0de-6f996a89ae52":{"id":"fe4ef550-fc26-431c-a0de-6f996a89ae52","name":"- match: Match","type":"ClassAttribute","owner":"79e914c2-b088-48f1-9a0f-048152204ad7","bounds":{"x":-199.5,"y":140.5,"width":249,"height":30}},"4590a506-92f7-4543-aee6-b430e64307a3":{"id":"4590a506-92f7-4543-aee6-b430e64307a3","name":"+ accept(): void","type":"ClassMethod","owner":"79e914c2-b088-48f1-9a0f-048152204ad7","bounds":{"x":-199.5,"y":170.5,"width":249,"height":30}},"912759ac-11b6-4d22-8bd3-9025f321afcf":{"id":"912759ac-11b6-4d22-8bd3-9025f321afcf","name":"+ decline(): void","type":"ClassMethod","owner":"79e914c2-b088-48f1-9a0f-048152204ad7","bounds":{"x":-199.5,"y":200.5,"width":249,"height":30}},"5b089a40-b95c-4109-bacf-4552642f75c6":{"id":"5b089a40-b95c-4109-bacf-4552642f75c6","name":"MatchStatus","type":"Enumeration","owner":null,"bounds":{"x":110,"y":510,"width":160,"height":170},"attributes":["00ea37aa-2146-4f09-8491-4c70ae6ed081","02195530-e5d7-4092-9cbc-86f090492207","8fbb7a0f-94d4-4549-82e5-a22c421ffbbe","7c093d16-d1fa-44f0-8acc-35edef4f5b42"],"methods":[]},"00ea37aa-2146-4f09-8491-4c70ae6ed081":{"id":"00ea37aa-2146-4f09-8491-4c70ae6ed081","name":"PENDING","type":"ClassAttribute","owner":"5b089a40-b95c-4109-bacf-4552642f75c6","bounds":{"x":110.5,"y":560.5,"width":159,"height":30}},"02195530-e5d7-4092-9cbc-86f090492207":{"id":"02195530-e5d7-4092-9cbc-86f090492207","name":"INVITED","type":"ClassAttribute","owner":"5b089a40-b95c-4109-bacf-4552642f75c6","bounds":{"x":110.5,"y":590.5,"width":159,"height":30}},"8fbb7a0f-94d4-4549-82e5-a22c421ffbbe":{"id":"8fbb7a0f-94d4-4549-82e5-a22c421ffbbe","name":"CONFIRMED","type":"ClassAttribute","owner":"5b089a40-b95c-4109-bacf-4552642f75c6","bounds":{"x":110.5,"y":620.5,"width":159,"height":30}},"7c093d16-d1fa-44f0-8acc-35edef4f5b42":{"id":"7c093d16-d1fa-44f0-8acc-35edef4f5b42","name":"CANCELLED","type":"ClassAttribute","owner":"5b089a40-b95c-4109-bacf-4552642f75c6","bounds":{"x":110.5,"y":650.5,"width":159,"height":30}},"6f184e8a-25c9-40e4-bb38-45fc30df9bf2":{"id":"6f184e8a-25c9-40e4-bb38-45fc30df9bf2","name":"Chat Message","type":"Class","owner":null,"bounds":{"x":-1070,"y":-520,"width":190,"height":160},"attributes":["78250a8e-ea7e-449a-9a4f-e4aeff587f27","eb5180f2-41ba-4f8a-91b4-496634086c7e","1de27ac4-2e0e-44ef-9751-68e0ccbde165","42b157e7-f414-438d-b338-d2a2aeb56e74"],"methods":[]},"78250a8e-ea7e-449a-9a4f-e4aeff587f27":{"id":"78250a8e-ea7e-449a-9a4f-e4aeff587f27","name":"- id: UUID","type":"ClassAttribute","owner":"6f184e8a-25c9-40e4-bb38-45fc30df9bf2","bounds":{"x":-1069.5,"y":-479.5,"width":189,"height":30}},"eb5180f2-41ba-4f8a-91b4-496634086c7e":{"id":"eb5180f2-41ba-4f8a-91b4-496634086c7e","name":"- sender: User","type":"ClassAttribute","owner":"6f184e8a-25c9-40e4-bb38-45fc30df9bf2","bounds":{"x":-1069.5,"y":-449.5,"width":189,"height":30}},"1de27ac4-2e0e-44ef-9751-68e0ccbde165":{"id":"1de27ac4-2e0e-44ef-9751-68e0ccbde165","name":"- timestamp: DateTime","type":"ClassAttribute","owner":"6f184e8a-25c9-40e4-bb38-45fc30df9bf2","bounds":{"x":-1069.5,"y":-419.5,"width":189,"height":30}},"42b157e7-f414-438d-b338-d2a2aeb56e74":{"id":"42b157e7-f414-438d-b338-d2a2aeb56e74","name":"- content: String","type":"ClassAttribute","owner":"6f184e8a-25c9-40e4-bb38-45fc30df9bf2","bounds":{"x":-1069.5,"y":-389.5,"width":189,"height":30}},"b841c596-cc21-4c37-9271-4fad5750750b":{"id":"b841c596-cc21-4c37-9271-4fad5750750b","name":"ChatRoom","type":"Class","owner":null,"bounds":{"x":-1080,"y":-170,"width":350,"height":220},"attributes":["7f14d752-d5c4-497e-9fef-5fe55f572015","f872c3c0-ce86-4580-a359-1b18d5508a8e","632976b1-9b03-4c44-8140-67f9779db0a8","9fb781e0-6277-48e5-9332-28ddb88f331a"],"methods":["629f00d3-aa35-4664-aab1-07e822bb63b8","f07adf23-7c00-4e4b-a781-549c1cd49e13"]},"7f14d752-d5c4-497e-9fef-5fe55f572015":{"id":"7f14d752-d5c4-497e-9fef-5fe55f572015","name":"- id: UUID","type":"ClassAttribute","owner":"b841c596-cc21-4c37-9271-4fad5750750b","bounds":{"x":-1079.5,"y":-129.5,"width":349,"height":30}},"f872c3c0-ce86-4580-a359-1b18d5508a8e":{"id":"f872c3c0-ce86-4580-a359-1b18d5508a8e","name":"- participants: List","type":"ClassAttribute","owner":"b841c596-cc21-4c37-9271-4fad5750750b","bounds":{"x":-1079.5,"y":-99.5,"width":349,"height":30}},"632976b1-9b03-4c44-8140-67f9779db0a8":{"id":"632976b1-9b03-4c44-8140-67f9779db0a8","name":"- messages: List","type":"ClassAttribute","owner":"b841c596-cc21-4c37-9271-4fad5750750b","bounds":{"x":-1079.5,"y":-69.5,"width":349,"height":30}},"9fb781e0-6277-48e5-9332-28ddb88f331a":{"id":"9fb781e0-6277-48e5-9332-28ddb88f331a","name":"- lunchEvent: LunchEvent","type":"ClassAttribute","owner":"b841c596-cc21-4c37-9271-4fad5750750b","bounds":{"x":-1079.5,"y":-39.5,"width":349,"height":30}},"629f00d3-aa35-4664-aab1-07e822bb63b8":{"id":"629f00d3-aa35-4664-aab1-07e822bb63b8","name":"+ addMessage(message: ChatMessage): void","type":"ClassMethod","owner":"b841c596-cc21-4c37-9271-4fad5750750b","bounds":{"x":-1079.5,"y":-9.5,"width":349,"height":30}},"f07adf23-7c00-4e4b-a781-549c1cd49e13":{"id":"f07adf23-7c00-4e4b-a781-549c1cd49e13","name":"+ getMessages(): List","type":"ClassMethod","owner":"b841c596-cc21-4c37-9271-4fad5750750b","bounds":{"x":-1079.5,"y":20.5,"width":349,"height":30}},"6fe52b50-55c7-4b13-a67b-0bd44cb2b9ba":{"id":"6fe52b50-55c7-4b13-a67b-0bd44cb2b9ba","name":"ProfileAttributes","type":"Class","owner":null,"bounds":{"x":-550,"y":-550,"width":180,"height":160},"attributes":["3b28f0b9-6e23-4c00-a3e2-210142945fef","6128defa-7498-4f0c-9fd2-ad8c1a7e045f","0ff675d0-a020-4e1c-827b-03c1256ed2a0","7110794c-c377-49ba-914c-46059b972338"],"methods":[]},"3b28f0b9-6e23-4c00-a3e2-210142945fef":{"id":"3b28f0b9-6e23-4c00-a3e2-210142945fef","name":"+ name: Sring","type":"ClassAttribute","owner":"6fe52b50-55c7-4b13-a67b-0bd44cb2b9ba","bounds":{"x":-549.5,"y":-509.5,"width":179,"height":30}},"6128defa-7498-4f0c-9fd2-ad8c1a7e045f":{"id":"6128defa-7498-4f0c-9fd2-ad8c1a7e045f","name":"+ studyProgram: String","type":"ClassAttribute","owner":"6fe52b50-55c7-4b13-a67b-0bd44cb2b9ba","bounds":{"x":-549.5,"y":-479.5,"width":179,"height":30}},"0ff675d0-a020-4e1c-827b-03c1256ed2a0":{"id":"0ff675d0-a020-4e1c-827b-03c1256ed2a0","name":"+ semester: int","type":"ClassAttribute","owner":"6fe52b50-55c7-4b13-a67b-0bd44cb2b9ba","bounds":{"x":-549.5,"y":-449.5,"width":179,"height":30}},"7110794c-c377-49ba-914c-46059b972338":{"id":"7110794c-c377-49ba-914c-46059b972338","name":"+ age: int","type":"ClassAttribute","owner":"6fe52b50-55c7-4b13-a67b-0bd44cb2b9ba","bounds":{"x":-549.5,"y":-419.5,"width":179,"height":30}},"4682f867-8a3b-4108-b7ef-4aed810ccb57":{"id":"4682f867-8a3b-4108-b7ef-4aed810ccb57","name":"Helper Classes","type":"Package","owner":null,"bounds":{"x":-250,"y":-580,"width":370,"height":180}},"0392e2ad-a3a2-47ef-bacd-a2a0881d5c0e":{"id":"0392e2ad-a3a2-47ef-bacd-a2a0881d5c0e","name":"DateTimeRange","type":"Class","owner":"4682f867-8a3b-4108-b7ef-4aed810ccb57","bounds":{"x":-220,"y":-530,"width":160,"height":100},"attributes":["7dfd5a56-5923-44f5-8b4b-9f1a8e87abf8","27166113-a4d5-4f2c-95fa-58c3fd1080b8"],"methods":[]},"7dfd5a56-5923-44f5-8b4b-9f1a8e87abf8":{"id":"7dfd5a56-5923-44f5-8b4b-9f1a8e87abf8","name":"- start: DateTime","type":"ClassAttribute","owner":"0392e2ad-a3a2-47ef-bacd-a2a0881d5c0e","bounds":{"x":-219.5,"y":-489.5,"width":159,"height":30}},"27166113-a4d5-4f2c-95fa-58c3fd1080b8":{"id":"27166113-a4d5-4f2c-95fa-58c3fd1080b8","name":"- end: DateTime","type":"ClassAttribute","owner":"0392e2ad-a3a2-47ef-bacd-a2a0881d5c0e","bounds":{"x":-219.5,"y":-459.5,"width":159,"height":30}}},"relationships":{"91058fb1-1508-4f0f-9ce9-71e8bc29f848":{"id":"91058fb1-1508-4f0f-9ce9-71e8bc29f848","name":"","type":"ClassUnidirectional","owner":null,"bounds":{"x":-50,"y":-175,"width":110,"height":49.66666793823242},"path":[{"x":0,"y":10},{"x":110,"y":10}],"source":{"direction":"Right","element":"b74edd1e-5137-4345-8a46-2d31f707c612","multiplicity":"1","role":""},"target":{"direction":"Left","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"0...*","role":"create"},"isManuallyLayouted":false},"f30025da-ed5f-47d8-87dd-a9182890ac4c":{"id":"f30025da-ed5f-47d8-87dd-a9182890ac4c","name":"","type":"ClassUnidirectional","owner":null,"bounds":{"x":840,"y":-295,"width":110,"height":49.09523963928223},"path":[{"x":0,"y":10},{"x":110,"y":10}],"source":{"direction":"Right","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"1","role":"takes place at"},"target":{"direction":"Left","element":"9dae361a-8a25-49a3-abd8-cdd6d88cea7a","multiplicity":"1","role":""},"isManuallyLayouted":false},"5828747c-99c0-4450-835d-a1e1f9461748":{"id":"5828747c-99c0-4450-835d-a1e1f9461748","name":"","type":"ClassUnidirectional","owner":null,"bounds":{"x":-80,"y":150,"width":628.8988103866577,"height":369.0952396392822},"path":[{"x":615,"y":0},{"x":615,"y":330},{"x":0,"y":330}],"source":{"direction":"Down","element":"d9c6344a-cd37-46d9-84a6-ceaa63765834","multiplicity":"1","role":"calculates"},"target":{"direction":"Right","element":"6c519b57-a15d-4468-a0d0-bee90d0a228c","multiplicity":"0...*","role":""},"isManuallyLayouted":false},"54b1cdfc-b99d-4691-b11b-b0ac033b4cd1":{"id":"54b1cdfc-b99d-4691-b11b-b0ac033b4cd1","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-188.24604034423828,"y":230,"width":79.9275894165039,"height":120.09523963928223},"path":[{"x":48.24604034423828,"y":110},{"x":48.24604034423828,"y":0}],"source":{"direction":"Topright","element":"6c519b57-a15d-4468-a0d0-bee90d0a228c","multiplicity":"1","role":"sends"},"target":{"direction":"Bottomleft","element":"79e914c2-b088-48f1-9a0f-048152204ad7","multiplicity":"2..5","role":""},"isManuallyLayouted":false},"b1e7bfbb-1125-4a1c-9b50-8036d1d75e68":{"id":"b1e7bfbb-1125-4a1c-9b50-8036d1d75e68","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-990,"y":290,"width":18.898810386657715,"height":100.09523963928223},"path":[{"x":5,"y":0},{"x":5,"y":90}],"source":{"direction":"Bottomleft","element":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","multiplicity":"1","role":""},"target":{"direction":"Up","element":"f0a2bbe8-8033-4dc4-8616-a6d858ad4ebf","multiplicity":"1","role":""},"isManuallyLayouted":false},"e41b14a6-ea80-46ee-82d2-9e89a352b173":{"id":"e41b14a6-ea80-46ee-82d2-9e89a352b173","name":"","type":"ClassUnidirectional","owner":null,"bounds":{"x":840,"y":-205,"width":126.6875,"height":195},"path":[{"x":0,"y":10},{"x":95,"y":10},{"x":95,"y":195}],"source":{"direction":"Right","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"1","role":"has"},"target":{"direction":"Up","element":"2e8a9d75-04a1-4635-be52-cdebda839713","multiplicity":"0..1","role":""},"isManuallyLayouted":false},"a6a191e0-cbd7-445a-853a-867261b4d2b7":{"id":"a6a191e0-cbd7-445a-853a-867261b4d2b7","name":"","type":"ClassDependency","owner":null,"bounds":{"x":-80,"y":555,"width":190,"height":31},"path":[{"x":0,"y":10},{"x":190,"y":10}],"source":{"direction":"Downright","element":"6c519b57-a15d-4468-a0d0-bee90d0a228c","multiplicity":"","role":""},"target":{"direction":"Left","element":"5b089a40-b95c-4109-bacf-4552642f75c6","multiplicity":"","role":""},"isManuallyLayouted":false},"28ceb54b-663e-4534-9eef-53f856980f99":{"id":"28ceb54b-663e-4534-9eef-53f856980f99","name":"","type":"ClassDependency","owner":null,"bounds":{"x":315,"y":-430,"width":10,"height":80},"path":[{"x":5,"y":80},{"x":5,"y":0}],"source":{"direction":"Up","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"","role":""},"target":{"direction":"Down","element":"de398f12-3a8c-4b85-9fa3-3286bde080b8","multiplicity":"","role":""},"isManuallyLayouted":false},"f72746b9-fa9e-4327-9062-b688d1d4e451":{"id":"f72746b9-fa9e-4327-9062-b688d1d4e451","name":"","type":"ClassDependency","owner":null,"bounds":{"x":-80,"y":230,"width":210,"height":91},"path":[{"x":210,"y":70},{"x":5,"y":70},{"x":5,"y":0}],"source":{"direction":"Left","element":"ff6040d6-18f9-4d86-914e-55dbdaaa734b","multiplicity":"","role":""},"target":{"direction":"Down","element":"79e914c2-b088-48f1-9a0f-048152204ad7","multiplicity":"","role":""},"isManuallyLayouted":false},"4ad82df5-efd8-46c2-96c4-e8873da159c2":{"id":"4ad82df5-efd8-46c2-96c4-e8873da159c2","name":"","type":"ClassComposition","owner":null,"bounds":{"x":-980,"y":-360,"width":10,"height":190},"path":[{"x":5,"y":0},{"x":5,"y":190}],"source":{"direction":"Down","element":"6f184e8a-25c9-40e4-bb38-45fc30df9bf2","multiplicity":"","role":""},"target":{"direction":"Up","element":"b841c596-cc21-4c37-9271-4fad5750750b","multiplicity":"","role":""},"isManuallyLayouted":false},"d7897e2c-eb82-468c-a142-6287ee1009a2":{"id":"d7897e2c-eb82-468c-a142-6287ee1009a2","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-730,"y":-115,"width":180,"height":49.09523963928223},"path":[{"x":0,"y":10},{"x":180,"y":10}],"source":{"direction":"Right","element":"b841c596-cc21-4c37-9271-4fad5750750b","multiplicity":"0..*","role":""},"target":{"direction":"Left","element":"b74edd1e-5137-4345-8a46-2d31f707c612","multiplicity":"2..5","role":"member of"},"isManuallyLayouted":false},"2280b90b-5122-4d6b-b7fc-745e7fb2d677":{"id":"2280b90b-5122-4d6b-b7fc-745e7fb2d677","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":530,"y":-40,"width":34.45573043823242,"height":120},"path":[{"x":5,"y":0},{"x":5,"y":120}],"source":{"direction":"Down","element":"ede8e85e-44d0-41a2-a798-9db118716363","multiplicity":"0..*","role":""},"target":{"direction":"Up","element":"d9c6344a-cd37-46d9-84a6-ceaa63765834","multiplicity":"1","role":""},"isManuallyLayouted":false},"337c2de5-71ea-4351-8069-bf8bc0f4f345":{"id":"337c2de5-71ea-4351-8069-bf8bc0f4f345","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-295,"y":-40,"width":36.681549072265625,"height":390.0952396392822},"path":[{"x":5,"y":0},{"x":5,"y":380}],"source":{"direction":"Down","element":"b74edd1e-5137-4345-8a46-2d31f707c612","multiplicity":"2..5","role":""},"target":{"direction":"Up","element":"6c519b57-a15d-4468-a0d0-bee90d0a228c","multiplicity":"0..*","role":""},"isManuallyLayouted":false},"3af2ee62-b13e-4aa4-ac93-e17eb68368b9":{"id":"3af2ee62-b13e-4aa4-ac93-e17eb68368b9","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-190.1187744140625,"y":-40,"width":96.80032348632812,"height":90.09523963928223},"path":[{"x":65.1187744140625,"y":80},{"x":65.1187744140625,"y":0}],"source":{"direction":"Up","element":"79e914c2-b088-48f1-9a0f-048152204ad7","multiplicity":"2..5","role":""},"target":{"direction":"Bottomleft","element":"b74edd1e-5137-4345-8a46-2d31f707c612","multiplicity":"1","role":"receives"},"isManuallyLayouted":false},"49492f20-99ad-4d23-b2e5-3a2b8b2b51a1":{"id":"49492f20-99ad-4d23-b2e5-3a2b8b2b51a1","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-890,"y":200,"width":553.0136451721191,"height":150.09523963928223},"path":[{"x":0,"y":10},{"x":495,"y":10},{"x":495,"y":140}],"source":{"direction":"Right","element":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","multiplicity":"0..1","role":""},"target":{"direction":"Topleft","element":"6c519b57-a15d-4468-a0d0-bee90d0a228c","multiplicity":"creates","role":"1"},"isManuallyLayouted":false},"d7ebbf97-7b21-490d-b307-6b976652f8f7":{"id":"d7ebbf97-7b21-490d-b307-6b976652f8f7","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-1085.7223739624023,"y":50,"width":114.62118434906006,"height":90.09523963928223},"path":[{"x":100.72237396240234,"y":0},{"x":100.72237396240234,"y":80}],"source":{"direction":"Down","element":"b841c596-cc21-4c37-9271-4fad5750750b","multiplicity":"1","role":""},"target":{"direction":"Up","element":"6f51d965-3990-4bc0-a5f1-1a7cc3cd8531","multiplicity":"1","role":"communicate"},"isManuallyLayouted":false},"fa5961c5-fa0b-43c9-ab15-caef3ae1b991":{"id":"fa5961c5-fa0b-43c9-ab15-caef3ae1b991","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-880,"y":-450,"width":330,"height":324.0952396392822},"path":[{"x":0,"y":10},{"x":165,"y":10},{"x":165,"y":285},{"x":330,"y":285}],"source":{"direction":"Right","element":"6f184e8a-25c9-40e4-bb38-45fc30df9bf2","multiplicity":"0..*","role":""},"target":{"direction":"Left","element":"b74edd1e-5137-4345-8a46-2d31f707c612","multiplicity":"1","role":"sends"},"isManuallyLayouted":false},"4b8c90bc-e321-4719-86ed-d504e243e125":{"id":"4b8c90bc-e321-4719-86ed-d504e243e125","name":"","type":"ClassComposition","owner":null,"bounds":{"x":-465,"y":-390,"width":10,"height":100},"path":[{"x":5,"y":0},{"x":5,"y":100}],"source":{"direction":"Down","element":"6fe52b50-55c7-4b13-a67b-0bd44cb2b9ba","multiplicity":"","role":""},"target":{"direction":"Up","element":"b74edd1e-5137-4345-8a46-2d31f707c612","multiplicity":"","role":""},"isManuallyLayouted":false}},"assessments":{}},"lastUpdate":"2025-05-14T13:30:10.554Z","description":"Your auto-generated version for sharing"}],"token":"smm0X1QEUr5cbGMHDF4Y"} \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_class.png b/resources/diagrams/meetatmensa_uml_class.png deleted file mode 100644 index c06f403f..00000000 Binary files a/resources/diagrams/meetatmensa_uml_class.png and /dev/null differ diff --git a/resources/diagrams/meetatmensa_uml_class.svg b/resources/diagrams/meetatmensa_uml_class.svg deleted file mode 100644 index 46552f30..00000000 --- a/resources/diagrams/meetatmensa_uml_class.svg +++ /dev/null @@ -1,15 +0,0 @@ -User- userID: UUID- name: String- gender: ProfileAttributes- degree: String- birthday: LocalDate- interests: List<Interest>- semester: Integer- bio: String+ register: UserMatchRequest- requestID: UUID- owner: User- date: LocalDate- timeslot: List<Integer>- locataion: Mensa- preferences: matchPreferences- status: requestStatus«enumeration»MensaGARCHINGARCISSTRMatch- matchID: UUID- userID: UUID- group: GroupAIConversationStarter- userBios: List<String>+ genConversationStarters(input: List<String>): StringGroup- groupID: UUID- time: Integer- date: LocalDate- conversationStarters: List<String>- users: List<User>PreferenceFilters+ sameDegree: boolean+ sameGender: boolean+ sameAge: boolean«enumeration»requestStatusPENDINGMATCHEDUNMATCHABLECANCELEDREMATCHEXPIRED«enumeration»MatchStatusUNSENTSENTCONFIRMEDREJECTEDEXPIRED10...*submit111...*is matched11results infullfills1Matchescontainsis part of2...*1generates promps1 \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_class_matching.json b/resources/diagrams/meetatmensa_uml_class_matching.json new file mode 100644 index 00000000..d0752fd4 --- /dev/null +++ b/resources/diagrams/meetatmensa_uml_class_matching.json @@ -0,0 +1 @@ +{"id":"01529d40-021f-4d0a-b182-dd0d0971485b","title":"meetatmensa_uml_class_user","model":{"version":"3.0.0","type":"ClassDiagram","size":{"width":1660,"height":1960},"interactive":{"elements":{},"relationships":{}},"elements":{"15413415-9f69-4b83-be58-0ae0231e0b56":{"id":"15413415-9f69-4b83-be58-0ae0231e0b56","name":"MeetAtMensa Matching Microservice","type":"Package","owner":null,"bounds":{"x":-810,"y":-960,"width":1500,"height":1360}},"81be87b5-d915-4d7a-91a4-7eb044b3d2be":{"id":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","name":"MatchService","type":"Class","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":-290,"y":-200,"width":310,"height":280},"attributes":["002cb9cd-de93-477e-88d2-76a6579e7a0a","2b99a1f5-30a4-4e1c-abfc-eba744fbc73c"],"methods":["68cccfb1-0452-45a6-babd-9902c07840f7","95508f3f-0860-46b4-8170-9a4ee0648717","54b1dac9-680c-4efb-9c17-b400016f2937","7733a1f4-b7ed-4cef-a7e8-ac110dd56e3c","18ff0210-82ea-4ca1-b79a-f64fa226223d","a5b04c14-76c1-4c79-a442-403d1ac3dbb5"]},"002cb9cd-de93-477e-88d2-76a6579e7a0a":{"id":"002cb9cd-de93-477e-88d2-76a6579e7a0a","name":"- matchRepository: MatchRepository","type":"ClassAttribute","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-289.5,"y":-159.5,"width":309,"height":30}},"2b99a1f5-30a4-4e1c-abfc-eba744fbc73c":{"id":"2b99a1f5-30a4-4e1c-abfc-eba744fbc73c","name":"- groupService: GroupService","type":"ClassAttribute","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-289.5,"y":-129.5,"width":309,"height":30}},"68cccfb1-0452-45a6-babd-9902c07840f7":{"id":"68cccfb1-0452-45a6-babd-9902c07840f7","name":"+ getMatch()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-289.5,"y":-99.5,"width":309,"height":30}},"95508f3f-0860-46b4-8170-9a4ee0648717":{"id":"95508f3f-0860-46b4-8170-9a4ee0648717","name":"+ getMatches()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-289.5,"y":-69.5,"width":309,"height":30}},"54b1dac9-680c-4efb-9c17-b400016f2937":{"id":"54b1dac9-680c-4efb-9c17-b400016f2937","name":"+ getMatchesByGroup()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-289.5,"y":-39.5,"width":309,"height":30}},"7733a1f4-b7ed-4cef-a7e8-ac110dd56e3c":{"id":"7733a1f4-b7ed-4cef-a7e8-ac110dd56e3c","name":"+ registerMatch()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-289.5,"y":-9.5,"width":309,"height":30}},"18ff0210-82ea-4ca1-b79a-f64fa226223d":{"id":"18ff0210-82ea-4ca1-b79a-f64fa226223d","name":"+ updateStatus()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-289.5,"y":20.5,"width":309,"height":30}},"a5b04c14-76c1-4c79-a442-403d1ac3dbb5":{"id":"a5b04c14-76c1-4c79-a442-403d1ac3dbb5","name":"+ removeMatch()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-289.5,"y":50.5,"width":309,"height":30}},"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3":{"id":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","name":"MatchingAPI","type":"Interface","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":-770,"y":-900,"width":330,"height":290},"attributes":[],"methods":["aadd8458-6158-4e87-879b-57479b75dfd1","8e5986f3-a4fc-4338-a2f7-20d52e1b2a7a","8b7332bf-a9f1-4b8f-896d-ce9ee1415ab7","c2890267-8436-4070-a73a-024463b5aee6","31ed1b02-cbdd-43b9-befb-f93752a730bb","171f00d3-bc67-4d1f-a8e1-bdcfcb86a4c2","7d476444-1562-425a-bad2-7f01e56e8966","6cef6a86-7901-4052-9360-7d55c57f7c23"]},"aadd8458-6158-4e87-879b-57479b75dfd1":{"id":"aadd8458-6158-4e87-879b-57479b75dfd1","name":"+ deleteApiV2MatchingRequestRequestId()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-769.5,"y":-849.5,"width":329,"height":30}},"8e5986f3-a4fc-4338-a2f7-20d52e1b2a7a":{"id":"8e5986f3-a4fc-4338-a2f7-20d52e1b2a7a","name":"+ getApiV2MatchingMatchesUserID()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-769.5,"y":-819.5,"width":329,"height":30}},"8b7332bf-a9f1-4b8f-896d-ce9ee1415ab7":{"id":"8b7332bf-a9f1-4b8f-896d-ce9ee1415ab7","name":"+ getApiV2MatchingRequestsUserID()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-769.5,"y":-789.5,"width":329,"height":30}},"c2890267-8436-4070-a73a-024463b5aee6":{"id":"c2890267-8436-4070-a73a-024463b5aee6","name":"+ getApiV2MatchingRsvpMatchIdAccept()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-769.5,"y":-759.5,"width":329,"height":30}},"31ed1b02-cbdd-43b9-befb-f93752a730bb":{"id":"31ed1b02-cbdd-43b9-befb-f93752a730bb","name":"+ getApiV2MatchingRsvpMatchIdReject()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-769.5,"y":-729.5,"width":329,"height":30}},"171f00d3-bc67-4d1f-a8e1-bdcfcb86a4c2":{"id":"171f00d3-bc67-4d1f-a8e1-bdcfcb86a4c2","name":"+ postApiV2MatchingRequestSubmit()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-769.5,"y":-699.5,"width":329,"height":30}},"7d476444-1562-425a-bad2-7f01e56e8966":{"id":"7d476444-1562-425a-bad2-7f01e56e8966","name":"+ putApiV2MatchingRequestRequestId()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-769.5,"y":-669.5,"width":329,"height":30}},"6cef6a86-7901-4052-9360-7d55c57f7c23":{"id":"6cef6a86-7901-4052-9360-7d55c57f7c23","name":"+ postApiV2MatchingDemo()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-769.5,"y":-639.5,"width":329,"height":30}},"7e94335d-2d9a-46f7-addd-ce486d6ff685":{"id":"7e94335d-2d9a-46f7-addd-ce486d6ff685","name":"MatchingController","type":"Class","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":-760,"y":-510,"width":310,"height":130},"attributes":["e26134e0-5451-4d9f-8bea-42429622ba73","a6e7fa33-5f0d-4f69-8e89-21f719afc866","db45a066-105b-40d7-88f2-f8b68765b648"],"methods":[]},"e26134e0-5451-4d9f-8bea-42429622ba73":{"id":"e26134e0-5451-4d9f-8bea-42429622ba73","name":"- requestService: MatchRequestService","type":"ClassAttribute","owner":"7e94335d-2d9a-46f7-addd-ce486d6ff685","bounds":{"x":-759.5,"y":-469.5,"width":309,"height":30}},"a6e7fa33-5f0d-4f69-8e89-21f719afc866":{"id":"a6e7fa33-5f0d-4f69-8e89-21f719afc866","name":"- matchingService: MatchingService","type":"ClassAttribute","owner":"7e94335d-2d9a-46f7-addd-ce486d6ff685","bounds":{"x":-759.5,"y":-439.5,"width":309,"height":30}},"db45a066-105b-40d7-88f2-f8b68765b648":{"id":"db45a066-105b-40d7-88f2-f8b68765b648","name":"- matchService: MatchService","type":"ClassAttribute","owner":"7e94335d-2d9a-46f7-addd-ce486d6ff685","bounds":{"x":-759.5,"y":-409.5,"width":309,"height":30}},"53d68e14-ca40-4b31-88d9-374c999f5832":{"id":"53d68e14-ca40-4b31-88d9-374c999f5832","name":"MatchRequestService","type":"Class","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":-770,"y":-120,"width":350,"height":430},"attributes":["38d9ce88-10e6-47ba-9968-3d8ec317693c","21d0f17c-72df-4e9c-b457-d1568a372ff1"],"methods":["d0036d08-e0e2-4e8f-96de-93c7ea7306b1","39e93de0-755d-4392-ae7f-5476a6508baf","ceea700b-b261-4410-987f-3b2d1db49f43","9c3ecd86-fba0-45eb-8cc2-20ae8702b8ba","be4aeb8e-5046-43b7-884d-2234b0b829af","9d2ddcfe-06d2-4bba-a551-67211800d6df","dfe4e322-cba2-4a42-9f04-3f4888fb442e","b1521941-d7ca-44ae-bfbe-21ce423df131","a21b333f-bd69-474a-bba8-783df350fb87","ee8f63e5-a4f7-43a6-a0fd-ac3cdcff120e","ef3715f6-4b22-4bf8-9297-9c8bf7a6730f"]},"38d9ce88-10e6-47ba-9968-3d8ec317693c":{"id":"38d9ce88-10e6-47ba-9968-3d8ec317693c","name":"- requestRepository: MatchRequestRepository","type":"ClassAttribute","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":-79.5,"width":349,"height":30}},"21d0f17c-72df-4e9c-b457-d1568a372ff1":{"id":"21d0f17c-72df-4e9c-b457-d1568a372ff1","name":"- timeslotService: TimeslotService","type":"ClassAttribute","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":-49.5,"width":349,"height":30}},"d0036d08-e0e2-4e8f-96de-93c7ea7306b1":{"id":"d0036d08-e0e2-4e8f-96de-93c7ea7306b1","name":"+ getRequest()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":-19.5,"width":349,"height":30}},"39e93de0-755d-4392-ae7f-5476a6508baf":{"id":"39e93de0-755d-4392-ae7f-5476a6508baf","name":"+ getUserRequests()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":10.5,"width":349,"height":30}},"ceea700b-b261-4410-987f-3b2d1db49f43":{"id":"ceea700b-b261-4410-987f-3b2d1db49f43","name":"+ getUnmatchedRequests()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":40.5,"width":349,"height":30}},"9c3ecd86-fba0-45eb-8cc2-20ae8702b8ba":{"id":"9c3ecd86-fba0-45eb-8cc2-20ae8702b8ba","name":"+ registerRequest()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":70.5,"width":349,"height":30}},"be4aeb8e-5046-43b7-884d-2234b0b829af":{"id":"be4aeb8e-5046-43b7-884d-2234b0b829af","name":"+ userHasRequestOn()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":100.5,"width":349,"height":30}},"9d2ddcfe-06d2-4bba-a551-67211800d6df":{"id":"9d2ddcfe-06d2-4bba-a551-67211800d6df","name":"+ getUserRequestOn()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":130.5,"width":349,"height":30}},"dfe4e322-cba2-4a42-9f04-3f4888fb442e":{"id":"dfe4e322-cba2-4a42-9f04-3f4888fb442e","name":"+ removeRequest()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":160.5,"width":349,"height":30}},"b1521941-d7ca-44ae-bfbe-21ce423df131":{"id":"b1521941-d7ca-44ae-bfbe-21ce423df131","name":"+ updateRequest()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":190.5,"width":349,"height":30}},"a21b333f-bd69-474a-bba8-783df350fb87":{"id":"a21b333f-bd69-474a-bba8-783df350fb87","name":"+ updateRequestStatus()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":220.5,"width":349,"height":30}},"ee8f63e5-a4f7-43a6-a0fd-ac3cdcff120e":{"id":"ee8f63e5-a4f7-43a6-a0fd-ac3cdcff120e","name":"# expireRequest()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":250.5,"width":349,"height":30}},"ef3715f6-4b22-4bf8-9297-9c8bf7a6730f":{"id":"ef3715f6-4b22-4bf8-9297-9c8bf7a6730f","name":"# cleanupExpired()","type":"ClassMethod","owner":"53d68e14-ca40-4b31-88d9-374c999f5832","bounds":{"x":-769.5,"y":280.5,"width":349,"height":30}},"9060f821-e243-43f8-ad63-f4ec71b52d92":{"id":"9060f821-e243-43f8-ad63-f4ec71b52d92","name":"TimeslotService","type":"Class","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":-290,"y":120,"width":310,"height":190},"attributes":["65e273ba-5822-4780-81f4-5f8a4dc8dfc2"],"methods":["97fd6149-3ab6-43cf-adb2-6ed7f9ef3b05","8344ab7f-4061-4a8b-84c3-6cc3f8a952de","33bbb8f4-eb9f-4149-bc86-e852dae2ed75","22a27249-7923-413c-8726-5588315bb92f"]},"65e273ba-5822-4780-81f4-5f8a4dc8dfc2":{"id":"65e273ba-5822-4780-81f4-5f8a4dc8dfc2","name":"- timeslotRepository: TimeslotRepository","type":"ClassAttribute","owner":"9060f821-e243-43f8-ad63-f4ec71b52d92","bounds":{"x":-289.5,"y":160.5,"width":309,"height":30}},"97fd6149-3ab6-43cf-adb2-6ed7f9ef3b05":{"id":"97fd6149-3ab6-43cf-adb2-6ed7f9ef3b05","name":"+ getTimeslots()","type":"ClassMethod","owner":"9060f821-e243-43f8-ad63-f4ec71b52d92","bounds":{"x":-289.5,"y":190.5,"width":309,"height":30}},"8344ab7f-4061-4a8b-84c3-6cc3f8a952de":{"id":"8344ab7f-4061-4a8b-84c3-6cc3f8a952de","name":"+ registerTimeslots()","type":"ClassMethod","owner":"9060f821-e243-43f8-ad63-f4ec71b52d92","bounds":{"x":-289.5,"y":220.5,"width":309,"height":30}},"33bbb8f4-eb9f-4149-bc86-e852dae2ed75":{"id":"33bbb8f4-eb9f-4149-bc86-e852dae2ed75","name":"+ deleteTimeslots()","type":"ClassMethod","owner":"9060f821-e243-43f8-ad63-f4ec71b52d92","bounds":{"x":-289.5,"y":250.5,"width":309,"height":30}},"22a27249-7923-413c-8726-5588315bb92f":{"id":"22a27249-7923-413c-8726-5588315bb92f","name":"+ updateTimeslots()","type":"ClassMethod","owner":"9060f821-e243-43f8-ad63-f4ec71b52d92","bounds":{"x":-289.5,"y":280.5,"width":309,"height":30}},"fed5f29e-589b-4908-8f6d-431339a3c90d":{"id":"fed5f29e-589b-4908-8f6d-431339a3c90d","name":"GroupService","type":"Class","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":110,"y":-200,"width":430,"height":280},"attributes":["a5cb8cf7-e1ad-4305-9aa5-29247bfe81ef","f388df84-73f4-4e13-aaef-af786cdfd064"],"methods":["41dbb1a3-3112-440f-9a6c-2f3cc44dc689","9636b36e-b2c4-451e-ac91-28414f6a6822","bd57def5-c9c2-4d21-af25-1d6dacd89772","74c3badf-443f-4e88-a8e3-5539b1bf5385","7131b795-6f8c-4108-b4e0-595cd3774751","dcb20706-49c2-4b36-8fd1-d3daf8848215"]},"a5cb8cf7-e1ad-4305-9aa5-29247bfe81ef":{"id":"a5cb8cf7-e1ad-4305-9aa5-29247bfe81ef","name":"- groupRepository: GroupRepository","type":"ClassAttribute","owner":"fed5f29e-589b-4908-8f6d-431339a3c90d","bounds":{"x":110.5,"y":-159.5,"width":429,"height":30}},"f388df84-73f4-4e13-aaef-af786cdfd064":{"id":"f388df84-73f4-4e13-aaef-af786cdfd064","name":"- conversationStarterService: ConversationStarterService","type":"ClassAttribute","owner":"fed5f29e-589b-4908-8f6d-431339a3c90d","bounds":{"x":110.5,"y":-129.5,"width":429,"height":30}},"41dbb1a3-3112-440f-9a6c-2f3cc44dc689":{"id":"41dbb1a3-3112-440f-9a6c-2f3cc44dc689","name":"+ getGroup()","type":"ClassMethod","owner":"fed5f29e-589b-4908-8f6d-431339a3c90d","bounds":{"x":110.5,"y":-99.5,"width":429,"height":30}},"9636b36e-b2c4-451e-ac91-28414f6a6822":{"id":"9636b36e-b2c4-451e-ac91-28414f6a6822","name":"+ getGroupsOnDate()","type":"ClassMethod","owner":"fed5f29e-589b-4908-8f6d-431339a3c90d","bounds":{"x":110.5,"y":-69.5,"width":429,"height":30}},"bd57def5-c9c2-4d21-af25-1d6dacd89772":{"id":"bd57def5-c9c2-4d21-af25-1d6dacd89772","name":"+ getGroupsOlderThan()","type":"ClassMethod","owner":"fed5f29e-589b-4908-8f6d-431339a3c90d","bounds":{"x":110.5,"y":-39.5,"width":429,"height":30}},"74c3badf-443f-4e88-a8e3-5539b1bf5385":{"id":"74c3badf-443f-4e88-a8e3-5539b1bf5385","name":"+ registerGroup()","type":"ClassMethod","owner":"fed5f29e-589b-4908-8f6d-431339a3c90d","bounds":{"x":110.5,"y":-9.5,"width":429,"height":30}},"7131b795-6f8c-4108-b4e0-595cd3774751":{"id":"7131b795-6f8c-4108-b4e0-595cd3774751","name":"+ getGroupStatus","type":"ClassMethod","owner":"fed5f29e-589b-4908-8f6d-431339a3c90d","bounds":{"x":110.5,"y":20.5,"width":429,"height":30}},"dcb20706-49c2-4b36-8fd1-d3daf8848215":{"id":"dcb20706-49c2-4b36-8fd1-d3daf8848215","name":"+ removeGroup","type":"ClassMethod","owner":"fed5f29e-589b-4908-8f6d-431339a3c90d","bounds":{"x":110.5,"y":50.5,"width":429,"height":30}},"0a5f3489-481f-45eb-9b11-d9a387fac17a":{"id":"0a5f3489-481f-45eb-9b11-d9a387fac17a","name":"ConversationStarterService","type":"Class","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":260,"y":-640,"width":280,"height":280},"attributes":["822409ec-9450-4238-b35f-8653c56b8476","1ac35427-534c-433d-b6d4-c25cfa56bdb7"],"methods":["28394260-c55f-4b81-adc4-c8da4b69111d","673d85ca-eec9-439e-b3dc-fa39f7a83e25","e654d0b9-03de-4757-92bf-f54a0426c41d","7a728cac-4c2e-4a2a-a36f-5f30444d1001","a4c54ef9-56cb-4bec-8040-48ae2f58f3d6","d9bbc2ab-15f2-4240-bd0a-a0639e7b3065"]},"822409ec-9450-4238-b35f-8653c56b8476":{"id":"822409ec-9450-4238-b35f-8653c56b8476","name":"prompRepository: PromptRepository","type":"ClassAttribute","owner":"0a5f3489-481f-45eb-9b11-d9a387fac17a","bounds":{"x":260.5,"y":-599.5,"width":279,"height":30}},"1ac35427-534c-433d-b6d4-c25cfa56bdb7":{"id":"1ac35427-534c-433d-b6d4-c25cfa56bdb7","name":"genAiClient: GenAiClient","type":"ClassAttribute","owner":"0a5f3489-481f-45eb-9b11-d9a387fac17a","bounds":{"x":260.5,"y":-569.5,"width":279,"height":30}},"28394260-c55f-4b81-adc4-c8da4b69111d":{"id":"28394260-c55f-4b81-adc4-c8da4b69111d","name":"+ generatePrompts()","type":"ClassMethod","owner":"0a5f3489-481f-45eb-9b11-d9a387fac17a","bounds":{"x":260.5,"y":-539.5,"width":279,"height":30}},"673d85ca-eec9-439e-b3dc-fa39f7a83e25":{"id":"673d85ca-eec9-439e-b3dc-fa39f7a83e25","name":"+ getPrompts()","type":"ClassMethod","owner":"0a5f3489-481f-45eb-9b11-d9a387fac17a","bounds":{"x":260.5,"y":-509.5,"width":279,"height":30}},"e654d0b9-03de-4757-92bf-f54a0426c41d":{"id":"e654d0b9-03de-4757-92bf-f54a0426c41d","name":"+ registerPrompts()","type":"ClassMethod","owner":"0a5f3489-481f-45eb-9b11-d9a387fac17a","bounds":{"x":260.5,"y":-479.5,"width":279,"height":30}},"7a728cac-4c2e-4a2a-a36f-5f30444d1001":{"id":"7a728cac-4c2e-4a2a-a36f-5f30444d1001","name":"+ removePrompts()","type":"ClassMethod","owner":"0a5f3489-481f-45eb-9b11-d9a387fac17a","bounds":{"x":260.5,"y":-449.5,"width":279,"height":30}},"a4c54ef9-56cb-4bec-8040-48ae2f58f3d6":{"id":"a4c54ef9-56cb-4bec-8040-48ae2f58f3d6","name":"+ updatePrompts()","type":"ClassMethod","owner":"0a5f3489-481f-45eb-9b11-d9a387fac17a","bounds":{"x":260.5,"y":-419.5,"width":279,"height":30}},"d9bbc2ab-15f2-4240-bd0a-a0639e7b3065":{"id":"d9bbc2ab-15f2-4240-bd0a-a0639e7b3065","name":"- generateDummyPrompts()","type":"ClassMethod","owner":"0a5f3489-481f-45eb-9b11-d9a387fac17a","bounds":{"x":260.5,"y":-389.5,"width":279,"height":30}},"c5aecfbf-1995-4557-a995-90c8913fadfd":{"id":"c5aecfbf-1995-4557-a995-90c8913fadfd","name":"MatchingService","type":"Class","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":-290,"y":-900,"width":430,"height":520},"attributes":["78d6521d-b947-4e8a-b69a-60d3eb0a76af","95fbbfaf-2bd0-4482-a9ad-4b366121e60d","aa146e89-fe90-4130-990d-ac1b85e73fc3","27c8aa87-93f2-41ac-a597-13d5134532ac","d5bd57ff-ff2c-4fbe-9960-81d3c275fb62","c290fc78-542d-4b39-8f9a-da5066bda2d6"],"methods":["2ee4731f-8c96-4240-95e0-2c59f09224dd","5007c384-4166-4d3b-80ea-efea69e0586e","e48e91db-6aa2-4870-ac2a-27c3902052eb","6f380c90-0fd2-4b82-958c-356c425b5e16","7e0bf5f7-3754-4a9b-bbb3-8a3d1c8f2bf1","6c1b4180-cb29-45d5-ad9f-0ec5034de65e","0878b9cd-2cbf-48bc-966a-be3fd81cfb01","11174eaf-689c-4f08-83ee-9c74da3556e7","94aeea06-5715-45a0-af44-7f1f64e2902e","28f514ef-f407-4a18-853b-82da66c54b1e"]},"78d6521d-b947-4e8a-b69a-60d3eb0a76af":{"id":"78d6521d-b947-4e8a-b69a-60d3eb0a76af","name":"- requestService: MatchRequestService","type":"ClassAttribute","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-859.5,"width":429,"height":30}},"95fbbfaf-2bd0-4482-a9ad-4b366121e60d":{"id":"95fbbfaf-2bd0-4482-a9ad-4b366121e60d","name":"- matchService: MatchService","type":"ClassAttribute","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-829.5,"width":429,"height":30}},"aa146e89-fe90-4130-990d-ac1b85e73fc3":{"id":"aa146e89-fe90-4130-990d-ac1b85e73fc3","name":"- groupService: GroupService","type":"ClassAttribute","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-799.5,"width":429,"height":30}},"27c8aa87-93f2-41ac-a597-13d5134532ac":{"id":"27c8aa87-93f2-41ac-a597-13d5134532ac","name":"- conversationStarterService: ConversationStarterService","type":"ClassAttribute","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-769.5,"width":429,"height":30}},"d5bd57ff-ff2c-4fbe-9960-81d3c275fb62":{"id":"d5bd57ff-ff2c-4fbe-9960-81d3c275fb62","name":"- userClient: UserClient","type":"ClassAttribute","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-739.5,"width":429,"height":30}},"c290fc78-542d-4b39-8f9a-da5066bda2d6":{"id":"c290fc78-542d-4b39-8f9a-da5066bda2d6","name":"- algorithm: MatchingAlgoritm","type":"ClassAttribute","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-709.5,"width":429,"height":30}},"2ee4731f-8c96-4240-95e0-2c59f09224dd":{"id":"2ee4731f-8c96-4240-95e0-2c59f09224dd","name":"+ sendInvite()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-679.5,"width":429,"height":30}},"5007c384-4166-4d3b-80ea-efea69e0586e":{"id":"5007c384-4166-4d3b-80ea-efea69e0586e","name":"+ respondInvite()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-649.5,"width":429,"height":30}},"e48e91db-6aa2-4870-ac2a-27c3902052eb":{"id":"e48e91db-6aa2-4870-ac2a-27c3902052eb","name":"+ createGroup()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-619.5,"width":429,"height":30}},"6f380c90-0fd2-4b82-958c-356c425b5e16":{"id":"6f380c90-0fd2-4b82-958c-356c425b5e16","name":"+ groupHealthCheck()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-589.5,"width":429,"height":30}},"7e0bf5f7-3754-4a9b-bbb3-8a3d1c8f2bf1":{"id":"7e0bf5f7-3754-4a9b-bbb3-8a3d1c8f2bf1","name":"+ rematchGroup()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-559.5,"width":429,"height":30}},"6c1b4180-cb29-45d5-ad9f-0ec5034de65e":{"id":"6c1b4180-cb29-45d5-ad9f-0ec5034de65e","name":"+ match()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-529.5,"width":429,"height":30}},"0878b9cd-2cbf-48bc-966a-be3fd81cfb01":{"id":"0878b9cd-2cbf-48bc-966a-be3fd81cfb01","name":"+ implementSolution()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-499.5,"width":429,"height":30}},"11174eaf-689c-4f08-83ee-9c74da3556e7":{"id":"11174eaf-689c-4f08-83ee-9c74da3556e7","name":"# expireMatches()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-469.5,"width":429,"height":30}},"94aeea06-5715-45a0-af44-7f1f64e2902e":{"id":"94aeea06-5715-45a0-af44-7f1f64e2902e","name":"# cleanupExpired()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-439.5,"width":429,"height":30}},"28f514ef-f407-4a18-853b-82da66c54b1e":{"id":"28f514ef-f407-4a18-853b-82da66c54b1e","name":"+ createDemoMatch()","type":"ClassMethod","owner":"c5aecfbf-1995-4557-a995-90c8913fadfd","bounds":{"x":-289.5,"y":-409.5,"width":429,"height":30}}},"relationships":{"e7e3e7d2-4ee0-466c-abcd-ac08dd374995":{"id":"e7e3e7d2-4ee0-466c-abcd-ac08dd374995","name":"","type":"ClassRealization","owner":null,"bounds":{"x":-610,"y":-610,"width":10,"height":100},"path":[{"x":5,"y":100},{"x":5,"y":0}],"source":{"direction":"Up","element":"7e94335d-2d9a-46f7-addd-ce486d6ff685","multiplicity":"","role":""},"target":{"direction":"Down","element":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","multiplicity":"","role":""},"isManuallyLayouted":false},"4d737336-7390-4934-b40d-fc54907d8d10":{"id":"4d737336-7390-4934-b40d-fc54907d8d10","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-450,"y":-455,"width":160,"height":48},"path":[{"x":160,"y":10},{"x":0,"y":10}],"source":{"direction":"Left","element":"c5aecfbf-1995-4557-a995-90c8913fadfd","multiplicity":"1","role":""},"target":{"direction":"Right","element":"7e94335d-2d9a-46f7-addd-ce486d6ff685","multiplicity":"","role":""},"isManuallyLayouted":false},"c87f07b4-2f83-4a7f-9293-07cab9463f54":{"id":"c87f07b4-2f83-4a7f-9293-07cab9463f54","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-610,"y":-380,"width":18.899999618530273,"height":269},"path":[{"x":5,"y":260},{"x":5,"y":0}],"source":{"direction":"Up","element":"53d68e14-ca40-4b31-88d9-374c999f5832","multiplicity":"1","role":""},"target":{"direction":"Down","element":"7e94335d-2d9a-46f7-addd-ce486d6ff685","multiplicity":"","role":""},"isManuallyLayouted":false},"67414f14-6aba-40e8-b36e-c4dc7e3b50de":{"id":"67414f14-6aba-40e8-b36e-c4dc7e3b50de","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-610,"y":-380,"width":488.8999996185303,"height":189},"path":[{"x":475,"y":180},{"x":475,"y":90},{"x":5,"y":90},{"x":5,"y":0}],"source":{"direction":"Up","element":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","multiplicity":"1","role":""},"target":{"direction":"Down","element":"7e94335d-2d9a-46f7-addd-ce486d6ff685","multiplicity":"","role":""},"isManuallyLayouted":false},"fb8fe560-6ad8-42a7-95d1-2c66a8ef66a6":{"id":"fb8fe560-6ad8-42a7-95d1-2c66a8ef66a6","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-420,"y":205,"width":130,"height":48},"path":[{"x":130,"y":10},{"x":0,"y":10}],"source":{"direction":"Left","element":"9060f821-e243-43f8-ad63-f4ec71b52d92","multiplicity":"1","role":""},"target":{"direction":"Right","element":"53d68e14-ca40-4b31-88d9-374c999f5832","multiplicity":"","role":""},"isManuallyLayouted":false},"893434b1-54ac-46c5-b43b-3488f0a010c2":{"id":"893434b1-54ac-46c5-b43b-3488f0a010c2","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":395,"y":-360,"width":18.899999618530273,"height":160},"path":[{"x":5,"y":0},{"x":5,"y":160}],"source":{"direction":"Down","element":"0a5f3489-481f-45eb-9b11-d9a387fac17a","multiplicity":"1","role":""},"target":{"direction":"Up","element":"fed5f29e-589b-4908-8f6d-431339a3c90d","multiplicity":"","role":""},"isManuallyLayouted":false},"e77b2d35-5df0-4b20-b7d2-73d0364275e5":{"id":"e77b2d35-5df0-4b20-b7d2-73d0364275e5","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":140,"y":-520,"width":120,"height":48},"path":[{"x":120,"y":10},{"x":0,"y":10}],"source":{"direction":"Left","element":"0a5f3489-481f-45eb-9b11-d9a387fac17a","multiplicity":"1","role":""},"target":{"direction":"Right","element":"c5aecfbf-1995-4557-a995-90c8913fadfd","multiplicity":"","role":""},"isManuallyLayouted":false},"1402772d-06ed-4cf7-b057-23bd8a659466":{"id":"1402772d-06ed-4cf7-b057-23bd8a659466","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-80,"y":-380,"width":418.8999996185303,"height":189},"path":[{"x":405,"y":180},{"x":405,"y":90},{"x":5,"y":90},{"x":5,"y":0}],"source":{"direction":"Up","element":"fed5f29e-589b-4908-8f6d-431339a3c90d","multiplicity":"1","role":""},"target":{"direction":"Down","element":"c5aecfbf-1995-4557-a995-90c8913fadfd","multiplicity":"","role":""},"isManuallyLayouted":false},"e5bc23dc-40b9-44ef-9b52-c5dda5526133":{"id":"e5bc23dc-40b9-44ef-9b52-c5dda5526133","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-140,"y":-380,"width":18.899999618530273,"height":189},"path":[{"x":5,"y":180},{"x":5,"y":0}],"source":{"direction":"Up","element":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","multiplicity":"1","role":""},"target":{"direction":"Down","element":"c5aecfbf-1995-4557-a995-90c8913fadfd","multiplicity":"","role":""},"isManuallyLayouted":false}},"assessments":{}},"lastUpdate":"2025-07-20T09:20:23.534Z"} \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_class_matching.png b/resources/diagrams/meetatmensa_uml_class_matching.png new file mode 100644 index 00000000..5a3c9360 Binary files /dev/null and b/resources/diagrams/meetatmensa_uml_class_matching.png differ diff --git a/resources/diagrams/meetatmensa_uml_class_matching.svg b/resources/diagrams/meetatmensa_uml_class_matching.svg new file mode 100644 index 00000000..6a7583d7 --- /dev/null +++ b/resources/diagrams/meetatmensa_uml_class_matching.svg @@ -0,0 +1,15 @@ +MeetAtMensa Matching MicroserviceMatchService- matchRepository: MatchRepository- groupService: GroupService+ getMatch()+ getMatches()+ getMatchesByGroup()+ registerMatch()+ updateStatus()+ removeMatch()«interface»MatchingAPI+ deleteApiV2MatchingRequestRequestId()+ getApiV2MatchingMatchesUserID()+ getApiV2MatchingRequestsUserID()+ getApiV2MatchingRsvpMatchIdAccept()+ getApiV2MatchingRsvpMatchIdReject()+ postApiV2MatchingRequestSubmit()+ putApiV2MatchingRequestRequestId()+ postApiV2MatchingDemo()MatchingController- requestService: MatchRequestService- matchingService: MatchingService- matchService: MatchServiceMatchRequestService- requestRepository: MatchRequestRepository- timeslotService: TimeslotService+ getRequest()+ getUserRequests()+ getUnmatchedRequests()+ registerRequest()+ userHasRequestOn()+ getUserRequestOn()+ removeRequest()+ updateRequest()+ updateRequestStatus()# expireRequest()# cleanupExpired()TimeslotService- timeslotRepository: TimeslotRepository+ getTimeslots()+ registerTimeslots()+ deleteTimeslots()+ updateTimeslots()GroupService- groupRepository: GroupRepository- conversationStarterService: ConversationStarterService+ getGroup()+ getGroupsOnDate()+ getGroupsOlderThan()+ registerGroup()+ getGroupStatus+ removeGroupConversationStarterServiceprompRepository: PromptRepositorygenAiClient: GenAiClient+ generatePrompts()+ getPrompts()+ registerPrompts()+ removePrompts()+ updatePrompts()- generateDummyPrompts()MatchingService- requestService: MatchRequestService- matchService: MatchService- groupService: GroupService- conversationStarterService: ConversationStarterService- userClient: UserClient- algorithm: MatchingAlgoritm+ sendInvite()+ respondInvite()+ createGroup()+ groupHealthCheck()+ rematchGroup()+ match()+ implementSolution()# expireMatches()# cleanupExpired()+ createDemoMatch()11111111 \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_class_object.json b/resources/diagrams/meetatmensa_uml_class_object.json new file mode 100644 index 00000000..372990f6 --- /dev/null +++ b/resources/diagrams/meetatmensa_uml_class_object.json @@ -0,0 +1 @@ +{"id":"08b9b27c-b00a-4039-9279-d0bfde4c1840","title":"meetatmensa_uml_class_object","model":{"version":"3.0.0","type":"ClassDiagram","size":{"width":2020,"height":1180},"interactive":{"elements":{},"relationships":{}},"elements":{"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e":{"id":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","name":"MeetAtMensa Object Model","type":"Package","owner":null,"bounds":{"x":-990,"y":-570,"width":1330,"height":1010}},"35fa826c-3a32-4973-95d5-8677ad6b0417":{"id":"35fa826c-3a32-4973-95d5-8677ad6b0417","name":"UserObject","type":"AbstractClass","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-970,"y":-510,"width":190,"height":320},"attributes":["c8d308aa-1c7e-433d-b917-b6949a9c1555","eb697f59-f280-426f-9bcf-ea56e3933f66","7cc7b526-80bb-4a84-a1b7-c721883d38ca","90717d28-e4a4-4b10-b306-40deb996b133","90d457eb-48cc-4b45-9112-3affccfc5c98","e66710ef-5255-48c6-b8ba-d2317b7582de","074b7ef0-9111-40f6-9f8a-4039f645f530","e8eeda5b-694f-4bf6-b585-b7a8538f333c","49803b24-05cd-4938-a8da-a502a630757c"],"methods":[]},"c8d308aa-1c7e-433d-b917-b6949a9c1555":{"id":"c8d308aa-1c7e-433d-b917-b6949a9c1555","name":"+ email: String","type":"ClassAttribute","owner":"35fa826c-3a32-4973-95d5-8677ad6b0417","bounds":{"x":-969.5,"y":-459.5,"width":189,"height":30}},"eb697f59-f280-426f-9bcf-ea56e3933f66":{"id":"eb697f59-f280-426f-9bcf-ea56e3933f66","name":"+ firstname: String","type":"ClassAttribute","owner":"35fa826c-3a32-4973-95d5-8677ad6b0417","bounds":{"x":-969.5,"y":-429.5,"width":189,"height":30}},"7cc7b526-80bb-4a84-a1b7-c721883d38ca":{"id":"7cc7b526-80bb-4a84-a1b7-c721883d38ca","name":"+ lastname: String","type":"ClassAttribute","owner":"35fa826c-3a32-4973-95d5-8677ad6b0417","bounds":{"x":-969.5,"y":-399.5,"width":189,"height":30}},"90717d28-e4a4-4b10-b306-40deb996b133":{"id":"90717d28-e4a4-4b10-b306-40deb996b133","name":"+ birthday: LocalDate","type":"ClassAttribute","owner":"35fa826c-3a32-4973-95d5-8677ad6b0417","bounds":{"x":-969.5,"y":-369.5,"width":189,"height":30}},"90d457eb-48cc-4b45-9112-3affccfc5c98":{"id":"90d457eb-48cc-4b45-9112-3affccfc5c98","name":"+ gender: String","type":"ClassAttribute","owner":"35fa826c-3a32-4973-95d5-8677ad6b0417","bounds":{"x":-969.5,"y":-339.5,"width":189,"height":30}},"e66710ef-5255-48c6-b8ba-d2317b7582de":{"id":"e66710ef-5255-48c6-b8ba-d2317b7582de","name":"+ degree: String","type":"ClassAttribute","owner":"35fa826c-3a32-4973-95d5-8677ad6b0417","bounds":{"x":-969.5,"y":-309.5,"width":189,"height":30}},"074b7ef0-9111-40f6-9f8a-4039f645f530":{"id":"074b7ef0-9111-40f6-9f8a-4039f645f530","name":"+ degreeStart: Integer","type":"ClassAttribute","owner":"35fa826c-3a32-4973-95d5-8677ad6b0417","bounds":{"x":-969.5,"y":-279.5,"width":189,"height":30}},"e8eeda5b-694f-4bf6-b585-b7a8538f333c":{"id":"e8eeda5b-694f-4bf6-b585-b7a8538f333c","name":"+ bio: String","type":"ClassAttribute","owner":"35fa826c-3a32-4973-95d5-8677ad6b0417","bounds":{"x":-969.5,"y":-249.5,"width":189,"height":30}},"49803b24-05cd-4938-a8da-a502a630757c":{"id":"49803b24-05cd-4938-a8da-a502a630757c","name":"+ interests: List","type":"ClassAttribute","owner":"35fa826c-3a32-4973-95d5-8677ad6b0417","bounds":{"x":-969.5,"y":-219.5,"width":189,"height":30}},"5dc8586a-291f-4aea-8df0-a0a4681d2689":{"id":"5dc8586a-291f-4aea-8df0-a0a4681d2689","name":"UserNew","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-830,"y":-90,"width":160,"height":70},"attributes":["f9603ed0-bbdb-42de-994e-39260cbd65d5"],"methods":[]},"f9603ed0-bbdb-42de-994e-39260cbd65d5":{"id":"f9603ed0-bbdb-42de-994e-39260cbd65d5","name":"- authID: String","type":"ClassAttribute","owner":"5dc8586a-291f-4aea-8df0-a0a4681d2689","bounds":{"x":-829.5,"y":-49.5,"width":159,"height":30}},"f243ae5c-8bc1-4a0d-8059-9dd57c6cf1af":{"id":"f243ae5c-8bc1-4a0d-8059-9dd57c6cf1af","name":"UserUpdate","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-830,"y":-150,"width":160,"height":40},"attributes":[],"methods":[]},"6b0e6b1f-267f-4180-856a-cda2790f4cfa":{"id":"6b0e6b1f-267f-4180-856a-cda2790f4cfa","name":"User","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-830,"y":280,"width":160,"height":70},"attributes":["15347788-b24d-4fea-a149-2408a24dd789"],"methods":[]},"15347788-b24d-4fea-a149-2408a24dd789":{"id":"15347788-b24d-4fea-a149-2408a24dd789","name":"+ userID: UUID","type":"ClassAttribute","owner":"6b0e6b1f-267f-4180-856a-cda2790f4cfa","bounds":{"x":-829.5,"y":320.5,"width":159,"height":30}},"1ddcb943-b53a-41d7-82d5-938dbf54fb99":{"id":"1ddcb943-b53a-41d7-82d5-938dbf54fb99","name":"UserCollection","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-830,"y":30,"width":160,"height":70},"attributes":["782093df-1362-42a9-8965-1ea9e5da9f00"],"methods":[]},"782093df-1362-42a9-8965-1ea9e5da9f00":{"id":"782093df-1362-42a9-8965-1ea9e5da9f00","name":"+ users: List","type":"ClassAttribute","owner":"1ddcb943-b53a-41d7-82d5-938dbf54fb99","bounds":{"x":-829.5,"y":70.5,"width":159,"height":30}},"5b848089-90ae-4f58-9148-a9e52b8b4299":{"id":"5b848089-90ae-4f58-9148-a9e52b8b4299","name":"MatchRequestCollection","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-570,"y":30,"width":210,"height":70},"attributes":["aecc870c-d0dd-4acb-ac6c-d69a47124306"],"methods":[]},"aecc870c-d0dd-4acb-ac6c-d69a47124306":{"id":"aecc870c-d0dd-4acb-ac6c-d69a47124306","name":"+ users: List","type":"ClassAttribute","owner":"5b848089-90ae-4f58-9148-a9e52b8b4299","bounds":{"x":-569.5,"y":70.5,"width":209,"height":30}},"f87841d9-b968-4489-b05b-43ea108ae2fd":{"id":"f87841d9-b968-4489-b05b-43ea108ae2fd","name":"MatchRequest","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-570,"y":220,"width":190,"height":130},"attributes":["359b12dc-f105-4a4a-8f6f-cb6946145089","b145c01a-6b29-48f0-b5d5-d83d907d6cc1","400730a6-51af-4789-b273-9369f53a4184"],"methods":[]},"359b12dc-f105-4a4a-8f6f-cb6946145089":{"id":"359b12dc-f105-4a4a-8f6f-cb6946145089","name":"+ userID: UUID","type":"ClassAttribute","owner":"f87841d9-b968-4489-b05b-43ea108ae2fd","bounds":{"x":-569.5,"y":260.5,"width":189,"height":30}},"b145c01a-6b29-48f0-b5d5-d83d907d6cc1":{"id":"b145c01a-6b29-48f0-b5d5-d83d907d6cc1","name":"+ requestID: UUID","type":"ClassAttribute","owner":"f87841d9-b968-4489-b05b-43ea108ae2fd","bounds":{"x":-569.5,"y":290.5,"width":189,"height":30}},"400730a6-51af-4789-b273-9369f53a4184":{"id":"400730a6-51af-4789-b273-9369f53a4184","name":"+ status: RequestStatus","type":"ClassAttribute","owner":"f87841d9-b968-4489-b05b-43ea108ae2fd","bounds":{"x":-569.5,"y":320.5,"width":189,"height":30}},"6957b5d4-8e7e-466c-9501-94725d996df7":{"id":"6957b5d4-8e7e-466c-9501-94725d996df7","name":"MatchRequestUpdate","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-570,"y":-150,"width":180,"height":40},"attributes":[],"methods":[]},"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4":{"id":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","name":"MatchRequestObject","type":"AbstractClass","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-740,"y":-510,"width":260,"height":230},"attributes":["306fde6e-7eff-4aba-8ccd-46fab8792bb9","509b3bc3-37dd-4c0d-ad95-1fe4f8732338","56c23bca-9e52-43f5-bae7-39ce71807d20","2c1ac3a7-7581-43f5-9931-fbb1cbce61a2","7760e8f8-0b5f-4edb-8b89-c64e277741b0","96d88f52-409a-4d0f-8823-510b77e6b586"],"methods":[]},"306fde6e-7eff-4aba-8ccd-46fab8792bb9":{"id":"306fde6e-7eff-4aba-8ccd-46fab8792bb9","name":"+ date: LocalDate","type":"ClassAttribute","owner":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","bounds":{"x":-739.5,"y":-459.5,"width":259,"height":30}},"509b3bc3-37dd-4c0d-ad95-1fe4f8732338":{"id":"509b3bc3-37dd-4c0d-ad95-1fe4f8732338","name":"+ location: Location","type":"ClassAttribute","owner":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","bounds":{"x":-739.5,"y":-429.5,"width":259,"height":30}},"56c23bca-9e52-43f5-bae7-39ce71807d20":{"id":"56c23bca-9e52-43f5-bae7-39ce71807d20","name":"+ timeslots: List","type":"ClassAttribute","owner":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","bounds":{"x":-739.5,"y":-399.5,"width":259,"height":30}},"2c1ac3a7-7581-43f5-9931-fbb1cbce61a2":{"id":"2c1ac3a7-7581-43f5-9931-fbb1cbce61a2","name":"+ agePref: Boolean","type":"ClassAttribute","owner":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","bounds":{"x":-739.5,"y":-369.5,"width":259,"height":30}},"7760e8f8-0b5f-4edb-8b89-c64e277741b0":{"id":"7760e8f8-0b5f-4edb-8b89-c64e277741b0","name":"+ degreePref: Boolean","type":"ClassAttribute","owner":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","bounds":{"x":-739.5,"y":-339.5,"width":259,"height":30}},"96d88f52-409a-4d0f-8823-510b77e6b586":{"id":"96d88f52-409a-4d0f-8823-510b77e6b586","name":"+ genderPref: Boolean","type":"ClassAttribute","owner":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","bounds":{"x":-739.5,"y":-309.5,"width":259,"height":30}},"319d8b94-fa84-4020-974d-75435606d5f6":{"id":"319d8b94-fa84-4020-974d-75435606d5f6","name":"MatchRequestNew","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-570,"y":-90,"width":160,"height":70},"attributes":["09b8ab85-5505-46d3-9428-db4988e02b44"],"methods":[]},"09b8ab85-5505-46d3-9428-db4988e02b44":{"id":"09b8ab85-5505-46d3-9428-db4988e02b44","name":"+ userID: UUID","type":"ClassAttribute","owner":"319d8b94-fa84-4020-974d-75435606d5f6","bounds":{"x":-569.5,"y":-49.5,"width":159,"height":30}},"324f60ad-6b93-46ba-9383-f0240410f2b1":{"id":"324f60ad-6b93-46ba-9383-f0240410f2b1","name":"Match","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-310,"y":-210,"width":170,"height":160},"attributes":["d3c04878-a317-4af0-afe8-00516a604e60","8826c9e2-ddbd-49ee-826f-7a66b2696736","8bec6b01-08d9-4b68-9a3b-de2d4db1e0a2","e5d8eb08-36e1-4d6e-ac2a-a681111ed6e9"],"methods":[]},"d3c04878-a317-4af0-afe8-00516a604e60":{"id":"d3c04878-a317-4af0-afe8-00516a604e60","name":"+ matchID: UUID","type":"ClassAttribute","owner":"324f60ad-6b93-46ba-9383-f0240410f2b1","bounds":{"x":-309.5,"y":-169.5,"width":169,"height":30}},"8826c9e2-ddbd-49ee-826f-7a66b2696736":{"id":"8826c9e2-ddbd-49ee-826f-7a66b2696736","name":"+ userID: UUID","type":"ClassAttribute","owner":"324f60ad-6b93-46ba-9383-f0240410f2b1","bounds":{"x":-309.5,"y":-139.5,"width":169,"height":30}},"8bec6b01-08d9-4b68-9a3b-de2d4db1e0a2":{"id":"8bec6b01-08d9-4b68-9a3b-de2d4db1e0a2","name":"+ status: InviteStatus","type":"ClassAttribute","owner":"324f60ad-6b93-46ba-9383-f0240410f2b1","bounds":{"x":-309.5,"y":-109.5,"width":169,"height":30}},"e5d8eb08-36e1-4d6e-ac2a-a681111ed6e9":{"id":"e5d8eb08-36e1-4d6e-ac2a-a681111ed6e9","name":"+ group: Group","type":"ClassAttribute","owner":"324f60ad-6b93-46ba-9383-f0240410f2b1","bounds":{"x":-309.5,"y":-79.5,"width":169,"height":30}},"40d06697-ad90-4ce8-b1ac-d054b6ccdba8":{"id":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","name":"Group","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-190,"y":-510,"width":400,"height":220},"attributes":["6c22ed9d-c183-47b2-84d7-b16bcf762349","bbae7627-f0ac-4734-be8d-c23e61c44b6a","7bf1b721-8484-4472-929f-62111a14644b","1980f8d0-9919-481b-8eba-5d0311861604","e1655306-41e5-4439-894b-6a47e5d969a5","10814fdd-19c6-47db-a5f7-ab2ac3dbedd3"],"methods":[]},"6c22ed9d-c183-47b2-84d7-b16bcf762349":{"id":"6c22ed9d-c183-47b2-84d7-b16bcf762349","name":"+ groupID: UUID","type":"ClassAttribute","owner":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","bounds":{"x":-189.5,"y":-469.5,"width":399,"height":30}},"bbae7627-f0ac-4734-be8d-c23e61c44b6a":{"id":"bbae7627-f0ac-4734-be8d-c23e61c44b6a","name":"+ date: LocalDate","type":"ClassAttribute","owner":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","bounds":{"x":-189.5,"y":-439.5,"width":399,"height":30}},"7bf1b721-8484-4472-929f-62111a14644b":{"id":"7bf1b721-8484-4472-929f-62111a14644b","name":"+ time: Integer","type":"ClassAttribute","owner":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","bounds":{"x":-189.5,"y":-409.5,"width":399,"height":30}},"1980f8d0-9919-481b-8eba-5d0311861604":{"id":"1980f8d0-9919-481b-8eba-5d0311861604","name":"+ location: Location","type":"ClassAttribute","owner":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","bounds":{"x":-189.5,"y":-379.5,"width":399,"height":30}},"e1655306-41e5-4439-894b-6a47e5d969a5":{"id":"e1655306-41e5-4439-894b-6a47e5d969a5","name":"+ conversationStarters: ConversationStarterCollection","type":"ClassAttribute","owner":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","bounds":{"x":-189.5,"y":-349.5,"width":399,"height":30}},"10814fdd-19c6-47db-a5f7-ab2ac3dbedd3":{"id":"10814fdd-19c6-47db-a5f7-ab2ac3dbedd3","name":"+ groupStatus: List","type":"ClassAttribute","owner":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","bounds":{"x":-189.5,"y":-319.5,"width":399,"height":30}},"0fa6dfe5-fb57-490c-b466-3353c96e64b8":{"id":"0fa6dfe5-fb57-490c-b466-3353c96e64b8","name":"MatchCollection","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-310,"y":30,"width":210,"height":70},"attributes":["866cc0d8-b9f5-40f3-b75e-1e12c245d781"],"methods":[]},"866cc0d8-b9f5-40f3-b75e-1e12c245d781":{"id":"866cc0d8-b9f5-40f3-b75e-1e12c245d781","name":"+ matches: List","type":"ClassAttribute","owner":"0fa6dfe5-fb57-490c-b466-3353c96e64b8","bounds":{"x":-309.5,"y":70.5,"width":209,"height":30}},"01735e68-13ca-4588-9491-9431cff50c73":{"id":"01735e68-13ca-4588-9491-9431cff50c73","name":"ConversationStarter","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":40,"y":290,"width":170,"height":70},"attributes":["d1cfbe54-e067-49ce-a626-c148052993aa"],"methods":[]},"d1cfbe54-e067-49ce-a626-c148052993aa":{"id":"d1cfbe54-e067-49ce-a626-c148052993aa","name":"+ prompt: String","type":"ClassAttribute","owner":"01735e68-13ca-4588-9491-9431cff50c73","bounds":{"x":40.5,"y":330.5,"width":169,"height":30}},"d01c0d32-72f3-4fa2-8bea-4254f9d80869":{"id":"d01c0d32-72f3-4fa2-8bea-4254f9d80869","name":"ConversationStarterCollection","type":"Class","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-50,"y":30,"width":290,"height":70},"attributes":["d25dd7a5-e9a9-4903-b63d-ad35790adc51"],"methods":[]},"d25dd7a5-e9a9-4903-b63d-ad35790adc51":{"id":"d25dd7a5-e9a9-4903-b63d-ad35790adc51","name":"+ prompts: List","type":"ClassAttribute","owner":"d01c0d32-72f3-4fa2-8bea-4254f9d80869","bounds":{"x":-49.5,"y":70.5,"width":289,"height":30}},"bc6d4d97-c0d4-4659-9597-7a57e1134a1c":{"id":"bc6d4d97-c0d4-4659-9597-7a57e1134a1c","name":"InviteStatus","type":"Enumeration","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-20,"y":-230,"width":160,"height":200},"attributes":["3987aa02-2d31-464f-9c69-c3478686bbba","b1cb938e-40e7-40cd-bd64-2cfeadfe2399","56180b04-ecbc-40ea-b2a3-45df8fadab20","6fa25fdf-2d4e-4a2f-87ef-a2bd513b4075","445e29f1-2993-4f43-a743-322f876aa051"],"methods":[]},"3987aa02-2d31-464f-9c69-c3478686bbba":{"id":"3987aa02-2d31-464f-9c69-c3478686bbba","name":"UNSENT","type":"ClassAttribute","owner":"bc6d4d97-c0d4-4659-9597-7a57e1134a1c","bounds":{"x":-19.5,"y":-179.5,"width":159,"height":30}},"b1cb938e-40e7-40cd-bd64-2cfeadfe2399":{"id":"b1cb938e-40e7-40cd-bd64-2cfeadfe2399","name":"SENT","type":"ClassAttribute","owner":"bc6d4d97-c0d4-4659-9597-7a57e1134a1c","bounds":{"x":-19.5,"y":-149.5,"width":159,"height":30}},"56180b04-ecbc-40ea-b2a3-45df8fadab20":{"id":"56180b04-ecbc-40ea-b2a3-45df8fadab20","name":"ACCEPTED","type":"ClassAttribute","owner":"bc6d4d97-c0d4-4659-9597-7a57e1134a1c","bounds":{"x":-19.5,"y":-119.5,"width":159,"height":30}},"6fa25fdf-2d4e-4a2f-87ef-a2bd513b4075":{"id":"6fa25fdf-2d4e-4a2f-87ef-a2bd513b4075","name":"REJECTED","type":"ClassAttribute","owner":"bc6d4d97-c0d4-4659-9597-7a57e1134a1c","bounds":{"x":-19.5,"y":-89.5,"width":159,"height":30}},"445e29f1-2993-4f43-a743-322f876aa051":{"id":"445e29f1-2993-4f43-a743-322f876aa051","name":"EXPIRED","type":"ClassAttribute","owner":"bc6d4d97-c0d4-4659-9597-7a57e1134a1c","bounds":{"x":-19.5,"y":-59.5,"width":159,"height":30}},"fe9c6411-aa84-4ab2-b797-5bf9e0f28c14":{"id":"fe9c6411-aa84-4ab2-b797-5bf9e0f28c14","name":"RequestStatus","type":"Enumeration","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-270,"y":160,"width":160,"height":200},"attributes":["495dd098-d719-418b-9f7b-ca1b43d34188","0dd04a5d-e079-44d9-a653-5937933ecb97","5871ae22-c8a9-406c-855b-692b798f4a98","60b39262-3c85-49b1-9b66-e8424315c415","b3e3f517-29af-46e5-bb88-fa77f7103f4a"],"methods":[]},"495dd098-d719-418b-9f7b-ca1b43d34188":{"id":"495dd098-d719-418b-9f7b-ca1b43d34188","name":"PENDING","type":"ClassAttribute","owner":"fe9c6411-aa84-4ab2-b797-5bf9e0f28c14","bounds":{"x":-269.5,"y":210.5,"width":159,"height":30}},"0dd04a5d-e079-44d9-a653-5937933ecb97":{"id":"0dd04a5d-e079-44d9-a653-5937933ecb97","name":"MATCHED","type":"ClassAttribute","owner":"fe9c6411-aa84-4ab2-b797-5bf9e0f28c14","bounds":{"x":-269.5,"y":240.5,"width":159,"height":30}},"5871ae22-c8a9-406c-855b-692b798f4a98":{"id":"5871ae22-c8a9-406c-855b-692b798f4a98","name":"UNMATCHABLE","type":"ClassAttribute","owner":"fe9c6411-aa84-4ab2-b797-5bf9e0f28c14","bounds":{"x":-269.5,"y":270.5,"width":159,"height":30}},"60b39262-3c85-49b1-9b66-e8424315c415":{"id":"60b39262-3c85-49b1-9b66-e8424315c415","name":"REMATCH","type":"ClassAttribute","owner":"fe9c6411-aa84-4ab2-b797-5bf9e0f28c14","bounds":{"x":-269.5,"y":300.5,"width":159,"height":30}},"b3e3f517-29af-46e5-bb88-fa77f7103f4a":{"id":"b3e3f517-29af-46e5-bb88-fa77f7103f4a","name":"EXPIRED","type":"ClassAttribute","owner":"fe9c6411-aa84-4ab2-b797-5bf9e0f28c14","bounds":{"x":-269.5,"y":330.5,"width":159,"height":30}},"f0219d29-db54-41e5-be37-9022696f265b":{"id":"f0219d29-db54-41e5-be37-9022696f265b","name":"Location","type":"Enumeration","owner":"bf18da60-8cf7-49ea-ad30-e34ad91aaa1e","bounds":{"x":-410,"y":-470,"width":160,"height":110},"attributes":["15df04bf-fb1f-46bf-bddf-dbd2f878ac76","3365aa0c-e980-4dcf-aeec-5b8d398e62ca"],"methods":[]},"15df04bf-fb1f-46bf-bddf-dbd2f878ac76":{"id":"15df04bf-fb1f-46bf-bddf-dbd2f878ac76","name":"GARCHING","type":"ClassAttribute","owner":"f0219d29-db54-41e5-be37-9022696f265b","bounds":{"x":-409.5,"y":-419.5,"width":159,"height":30}},"3365aa0c-e980-4dcf-aeec-5b8d398e62ca":{"id":"3365aa0c-e980-4dcf-aeec-5b8d398e62ca","name":"ARCISSTR","type":"ClassAttribute","owner":"f0219d29-db54-41e5-be37-9022696f265b","bounds":{"x":-409.5,"y":-389.5,"width":159,"height":30}}},"relationships":{"57daf80c-5349-4e03-b1d2-8c3a33d407b3":{"id":"57daf80c-5349-4e03-b1d2-8c3a33d407b3","name":"","type":"ClassInheritance","owner":null,"bounds":{"x":-880,"y":-190,"width":50,"height":526},"path":[{"x":50,"y":505},{"x":5,"y":505},{"x":5,"y":0}],"source":{"direction":"Left","element":"6b0e6b1f-267f-4180-856a-cda2790f4cfa","multiplicity":"","role":""},"target":{"direction":"Down","element":"35fa826c-3a32-4973-95d5-8677ad6b0417","multiplicity":"","role":""},"isManuallyLayouted":false},"af183dbb-96af-46c2-9f05-b66927b9a7e5":{"id":"af183dbb-96af-46c2-9f05-b66927b9a7e5","name":"","type":"ClassInheritance","owner":null,"bounds":{"x":-880,"y":-190,"width":50,"height":156},"path":[{"x":50,"y":135},{"x":5,"y":135},{"x":5,"y":0}],"source":{"direction":"Left","element":"5dc8586a-291f-4aea-8df0-a0a4681d2689","multiplicity":"","role":""},"target":{"direction":"Down","element":"35fa826c-3a32-4973-95d5-8677ad6b0417","multiplicity":"","role":""},"isManuallyLayouted":false},"cf3a9925-0520-4ece-890f-8e5cd2081806":{"id":"cf3a9925-0520-4ece-890f-8e5cd2081806","name":"","type":"ClassInheritance","owner":null,"bounds":{"x":-880,"y":-190,"width":50,"height":81},"path":[{"x":50,"y":60},{"x":5,"y":60},{"x":5,"y":0}],"source":{"direction":"Left","element":"f243ae5c-8bc1-4a0d-8059-9dd57c6cf1af","multiplicity":"","role":""},"target":{"direction":"Down","element":"35fa826c-3a32-4973-95d5-8677ad6b0417","multiplicity":"","role":""},"isManuallyLayouted":false},"8d92770b-06ef-420c-8da0-8229f7731c0f":{"id":"8d92770b-06ef-420c-8da0-8229f7731c0f","name":"","type":"ClassComposition","owner":null,"bounds":{"x":-755,"y":100,"width":27.799999237060547,"height":189},"path":[{"x":5,"y":180},{"x":5,"y":0}],"source":{"direction":"Up","element":"6b0e6b1f-267f-4180-856a-cda2790f4cfa","multiplicity":"1..","role":""},"target":{"direction":"Down","element":"1ddcb943-b53a-41d7-82d5-938dbf54fb99","multiplicity":"","role":""},"isManuallyLayouted":false},"8b09aac8-b92f-49ff-bf55-583b545b425a":{"id":"8b09aac8-b92f-49ff-bf55-583b545b425a","name":"","type":"ClassComposition","owner":null,"bounds":{"x":-480,"y":100,"width":27.799999237060547,"height":129},"path":[{"x":5,"y":120},{"x":5,"y":0}],"source":{"direction":"Up","element":"f87841d9-b968-4489-b05b-43ea108ae2fd","multiplicity":"1..","role":""},"target":{"direction":"Bottomright","element":"5b848089-90ae-4f58-9148-a9e52b8b4299","multiplicity":"","role":""},"isManuallyLayouted":false},"301a6742-c659-498d-afbb-50b15539f816":{"id":"301a6742-c659-498d-afbb-50b15539f816","name":"","type":"ClassInheritance","owner":null,"bounds":{"x":-615,"y":-280,"width":45,"height":171},"path":[{"x":45,"y":150},{"x":5,"y":150},{"x":5,"y":0}],"source":{"direction":"Left","element":"6957b5d4-8e7e-466c-9501-94725d996df7","multiplicity":"","role":""},"target":{"direction":"Down","element":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","multiplicity":"","role":""},"isManuallyLayouted":false},"80edf6a5-884a-4bac-b3a4-2937ffd61b05":{"id":"80edf6a5-884a-4bac-b3a4-2937ffd61b05","name":"","type":"ClassInheritance","owner":null,"bounds":{"x":-615,"y":-280,"width":45,"height":246},"path":[{"x":45,"y":225},{"x":5,"y":225},{"x":5,"y":0}],"source":{"direction":"Left","element":"319d8b94-fa84-4020-974d-75435606d5f6","multiplicity":"","role":""},"target":{"direction":"Down","element":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","multiplicity":"","role":""},"isManuallyLayouted":false},"0d7019d4-0762-4a8c-8836-11d6d4861e0e":{"id":"0d7019d4-0762-4a8c-8836-11d6d4861e0e","name":"","type":"ClassInheritance","owner":null,"bounds":{"x":-615,"y":-280,"width":45,"height":586},"path":[{"x":45,"y":565},{"x":5,"y":565},{"x":5,"y":0}],"source":{"direction":"Left","element":"f87841d9-b968-4489-b05b-43ea108ae2fd","multiplicity":"","role":""},"target":{"direction":"Down","element":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","multiplicity":"","role":""},"isManuallyLayouted":false},"cd003c28-c5c5-44cc-bfad-a5f1f24cd2a0":{"id":"cd003c28-c5c5-44cc-bfad-a5f1f24cd2a0","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-380,"y":275,"width":110,"height":31},"path":[{"x":110,"y":10},{"x":0,"y":10}],"source":{"direction":"Left","element":"fe9c6411-aa84-4ab2-b797-5bf9e0f28c14","multiplicity":"","role":""},"target":{"direction":"Right","element":"f87841d9-b968-4489-b05b-43ea108ae2fd","multiplicity":"","role":""},"isManuallyLayouted":false},"ab493ae3-2c96-43b2-8e42-6841eb406566":{"id":"ab493ae3-2c96-43b2-8e42-6841eb406566","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-480,"y":-425,"width":70,"height":31},"path":[{"x":70,"y":10},{"x":0,"y":10}],"source":{"direction":"Left","element":"f0219d29-db54-41e5-be37-9022696f265b","multiplicity":"","role":""},"target":{"direction":"Right","element":"cd392a80-9bb9-40a2-8a19-6ad4a20bbdd4","multiplicity":"","role":""},"isManuallyLayouted":false},"3596a3a8-a3bd-4e8a-be74-33dcdf9c73e8":{"id":"3596a3a8-a3bd-4e8a-be74-33dcdf9c73e8","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-250,"y":-425,"width":60,"height":31},"path":[{"x":0,"y":10},{"x":60,"y":10}],"source":{"direction":"Right","element":"f0219d29-db54-41e5-be37-9022696f265b","multiplicity":"","role":""},"target":{"direction":"Left","element":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","multiplicity":"","role":""},"isManuallyLayouted":false},"b3a8cd23-bad2-4817-b7ec-8f7b5e3acd70":{"id":"b3a8cd23-bad2-4817-b7ec-8f7b5e3acd70","name":"","type":"ClassComposition","owner":null,"bounds":{"x":-230,"y":-50,"width":27.799999237060547,"height":80},"path":[{"x":5,"y":0},{"x":5,"y":80}],"source":{"direction":"Bottomright","element":"324f60ad-6b93-46ba-9383-f0240410f2b1","multiplicity":"1..","role":""},"target":{"direction":"Up","element":"0fa6dfe5-fb57-490c-b466-3353c96e64b8","multiplicity":"","role":""},"isManuallyLayouted":false},"710439c4-ce42-4ff1-bb4a-5d0b33cc1d3e":{"id":"710439c4-ce42-4ff1-bb4a-5d0b33cc1d3e","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":-140,"y":-140,"width":120,"height":31},"path":[{"x":120,"y":10},{"x":0,"y":10}],"source":{"direction":"Left","element":"bc6d4d97-c0d4-4659-9597-7a57e1134a1c","multiplicity":"","role":""},"target":{"direction":"Right","element":"324f60ad-6b93-46ba-9383-f0240410f2b1","multiplicity":"","role":""},"isManuallyLayouted":false},"bbb33d3b-56eb-4683-8ad8-913b1885bf66":{"id":"bbb33d3b-56eb-4683-8ad8-913b1885bf66","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":120,"y":100,"width":10,"height":190},"path":[{"x":5,"y":190},{"x":5,"y":0}],"source":{"direction":"Up","element":"01735e68-13ca-4588-9491-9431cff50c73","multiplicity":"","role":""},"target":{"direction":"Down","element":"d01c0d32-72f3-4fa2-8bea-4254f9d80869","multiplicity":"","role":""},"isManuallyLayouted":false},"09f1f970-b42f-4881-8c1b-a9cf87169f30":{"id":"09f1f970-b42f-4881-8c1b-a9cf87169f30","name":"","type":"ClassComposition","owner":null,"bounds":{"x":-170,"y":-290,"width":10,"height":80},"path":[{"x":5,"y":0},{"x":5,"y":80}],"source":{"direction":"Down","element":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","multiplicity":"","role":""},"target":{"direction":"Up","element":"324f60ad-6b93-46ba-9383-f0240410f2b1","multiplicity":"","role":""},"isManuallyLayouted":false},"f1524f6d-d6c6-4991-a3e1-860b3057acd9":{"id":"f1524f6d-d6c6-4991-a3e1-860b3057acd9","name":"","type":"ClassComposition","owner":null,"bounds":{"x":210,"y":-465,"width":70,"height":568},"path":[{"x":30,"y":530},{"x":70,"y":530},{"x":70,"y":10},{"x":0,"y":10}],"source":{"direction":"Right","element":"d01c0d32-72f3-4fa2-8bea-4254f9d80869","multiplicity":"1","role":""},"target":{"direction":"Upright","element":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","multiplicity":"","role":""},"isManuallyLayouted":false},"90e3f527-ef1f-40f4-87f6-bb8871df34ce":{"id":"90e3f527-ef1f-40f4-87f6-bb8871df34ce","name":"","type":"ClassAggregation","owner":null,"bounds":{"x":55,"y":-290,"width":10,"height":60},"path":[{"x":5,"y":60},{"x":5,"y":0}],"source":{"direction":"Up","element":"bc6d4d97-c0d4-4659-9597-7a57e1134a1c","multiplicity":"","role":""},"target":{"direction":"Down","element":"40d06697-ad90-4ce8-b1ac-d054b6ccdba8","multiplicity":"","role":""},"isManuallyLayouted":false}},"assessments":{}},"lastUpdate":"2025-07-20T09:20:23.534Z"} \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_class_object.png b/resources/diagrams/meetatmensa_uml_class_object.png new file mode 100644 index 00000000..2049d646 Binary files /dev/null and b/resources/diagrams/meetatmensa_uml_class_object.png differ diff --git a/resources/diagrams/meetatmensa_uml_class_object.svg b/resources/diagrams/meetatmensa_uml_class_object.svg new file mode 100644 index 00000000..54f8839b --- /dev/null +++ b/resources/diagrams/meetatmensa_uml_class_object.svg @@ -0,0 +1,15 @@ +MeetAtMensa Object Model«abstract»UserObject+ email: String+ firstname: String+ lastname: String+ birthday: LocalDate+ gender: String+ degree: String+ degreeStart: Integer+ bio: String+ interests: List<String>UserNew- authID: StringUserUpdateUser+ userID: UUIDUserCollection+ users: List<User>MatchRequestCollection+ users: List<User>MatchRequest+ userID: UUID+ requestID: UUID+ status: RequestStatusMatchRequestUpdate«abstract»MatchRequestObject+ date: LocalDate+ location: Location+ timeslots: List<Integer>+ agePref: Boolean+ degreePref: Boolean+ genderPref: BooleanMatchRequestNew+ userID: UUIDMatch+ matchID: UUID+ userID: UUID+ status: InviteStatus+ group: GroupGroup+ groupID: UUID+ date: LocalDate+ time: Integer+ location: Location+ conversationStarters: ConversationStarterCollection+ groupStatus: List<InviteStatus>MatchCollection+ matches: List<Match>ConversationStarter+ prompt: StringConversationStarterCollection+ prompts: List<ConversationStarter>«enumeration»InviteStatusUNSENTSENTACCEPTEDREJECTEDEXPIRED«enumeration»RequestStatusPENDINGMATCHEDUNMATCHABLEREMATCHEXPIRED«enumeration»LocationGARCHINGARCISSTR1..1..1..1 \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_class_user.json b/resources/diagrams/meetatmensa_uml_class_user.json new file mode 100644 index 00000000..dae50ac8 --- /dev/null +++ b/resources/diagrams/meetatmensa_uml_class_user.json @@ -0,0 +1 @@ +{"id":"01529d40-021f-4d0a-b182-dd0d0971485b","title":"meetatmensa_uml_class_user","model":{"version":"3.0.0","type":"ClassDiagram","size":{"width":1620,"height":1260},"interactive":{"elements":{},"relationships":{}},"elements":{"15413415-9f69-4b83-be58-0ae0231e0b56":{"id":"15413415-9f69-4b83-be58-0ae0231e0b56","name":"MeetAtMensa User Microservice","type":"Package","owner":null,"bounds":{"x":-790,"y":-610,"width":740,"height":580}},"81be87b5-d915-4d7a-91a4-7eb044b3d2be":{"id":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","name":"UserService","type":"Class","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":-730,"y":-530,"width":300,"height":430},"attributes":["002cb9cd-de93-477e-88d2-76a6579e7a0a","2b99a1f5-30a4-4e1c-abfc-eba744fbc73c","fee81841-d3d1-48e8-add2-7c293e8fa5e6"],"methods":["68cccfb1-0452-45a6-babd-9902c07840f7","95508f3f-0860-46b4-8170-9a4ee0648717","54b1dac9-680c-4efb-9c17-b400016f2937","7733a1f4-b7ed-4cef-a7e8-ac110dd56e3c","18ff0210-82ea-4ca1-b79a-f64fa226223d","a5b04c14-76c1-4c79-a442-403d1ac3dbb5","81cc5f9b-8951-4736-98d4-f5f0f543247a","73c57c79-6be5-46d6-945c-06a4214dd72c","46536fc4-d4ae-4b2e-bc08-8947566776eb","2b78b6ef-2e31-45b4-ab3a-5238f9fd3117"]},"002cb9cd-de93-477e-88d2-76a6579e7a0a":{"id":"002cb9cd-de93-477e-88d2-76a6579e7a0a","name":"- userRepository: UserRepository","type":"ClassAttribute","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-489.5,"width":299,"height":30}},"2b99a1f5-30a4-4e1c-abfc-eba744fbc73c":{"id":"2b99a1f5-30a4-4e1c-abfc-eba744fbc73c","name":"- interestRepository: InterestRepository","type":"ClassAttribute","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-459.5,"width":299,"height":30}},"fee81841-d3d1-48e8-add2-7c293e8fa5e6":{"id":"fee81841-d3d1-48e8-add2-7c293e8fa5e6","name":"- identityRepository: IdentityRepository","type":"ClassAttribute","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-429.5,"width":299,"height":30}},"68cccfb1-0452-45a6-babd-9902c07840f7":{"id":"68cccfb1-0452-45a6-babd-9902c07840f7","name":"+ getUser()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-399.5,"width":299,"height":30}},"95508f3f-0860-46b4-8170-9a4ee0648717":{"id":"95508f3f-0860-46b4-8170-9a4ee0648717","name":"+ getUserByAuthID()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-369.5,"width":299,"height":30}},"54b1dac9-680c-4efb-9c17-b400016f2937":{"id":"54b1dac9-680c-4efb-9c17-b400016f2937","name":"+ registerUser()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-339.5,"width":299,"height":30}},"7733a1f4-b7ed-4cef-a7e8-ac110dd56e3c":{"id":"7733a1f4-b7ed-4cef-a7e8-ac110dd56e3c","name":"+ updateUser()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-309.5,"width":299,"height":30}},"18ff0210-82ea-4ca1-b79a-f64fa226223d":{"id":"18ff0210-82ea-4ca1-b79a-f64fa226223d","name":"+ deleteUser()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-279.5,"width":299,"height":30}},"a5b04c14-76c1-4c79-a442-403d1ac3dbb5":{"id":"a5b04c14-76c1-4c79-a442-403d1ac3dbb5","name":"+ createDemoUsers()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-249.5,"width":299,"height":30}},"81cc5f9b-8951-4736-98d4-f5f0f543247a":{"id":"81cc5f9b-8951-4736-98d4-f5f0f543247a","name":"","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-219.5,"width":299,"height":30}},"73c57c79-6be5-46d6-945c-06a4214dd72c":{"id":"73c57c79-6be5-46d6-945c-06a4214dd72c","name":"- getInterests()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-189.5,"width":299,"height":30}},"46536fc4-d4ae-4b2e-bc08-8947566776eb":{"id":"46536fc4-d4ae-4b2e-bc08-8947566776eb","name":"- registerInterests()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-159.5,"width":299,"height":30}},"2b78b6ef-2e31-45b4-ab3a-5238f9fd3117":{"id":"2b78b6ef-2e31-45b4-ab3a-5238f9fd3117","name":"- deleteInterests()","type":"ClassMethod","owner":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","bounds":{"x":-729.5,"y":-129.5,"width":299,"height":30}},"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3":{"id":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","name":"UserAPI","type":"Interface","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":-370,"y":-530,"width":210,"height":230},"attributes":[],"methods":["de52e887-7552-4724-b058-3eda337a2df1","46ddb7ee-f909-4c67-9d72-8c1d5614b5a4","ef6f37f8-1610-4e92-a5dc-26839758d65f","c0070024-b20e-4a16-a813-3f7415aa8945","5eb45b31-cab9-4dd6-b3c8-580e046b855e","6594b073-3543-402a-8b53-0b1c5f089dfa"]},"de52e887-7552-4724-b058-3eda337a2df1":{"id":"de52e887-7552-4724-b058-3eda337a2df1","name":"+ deleteApiV2UserUserID()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-369.5,"y":-479.5,"width":209,"height":30}},"46ddb7ee-f909-4c67-9d72-8c1d5614b5a4":{"id":"46ddb7ee-f909-4c67-9d72-8c1d5614b5a4","name":"+ getApiV2UserUserID()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-369.5,"y":-449.5,"width":209,"height":30}},"ef6f37f8-1610-4e92-a5dc-26839758d65f":{"id":"ef6f37f8-1610-4e92-a5dc-26839758d65f","name":"+ postApiV2UserRegister()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-369.5,"y":-419.5,"width":209,"height":30}},"c0070024-b20e-4a16-a813-3f7415aa8945":{"id":"c0070024-b20e-4a16-a813-3f7415aa8945","name":"+ pupApiV2UserUserID()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-369.5,"y":-389.5,"width":209,"height":30}},"5eb45b31-cab9-4dd6-b3c8-580e046b855e":{"id":"5eb45b31-cab9-4dd6-b3c8-580e046b855e","name":"+ getApiV2UserMeAuthId()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-369.5,"y":-359.5,"width":209,"height":30}},"6594b073-3543-402a-8b53-0b1c5f089dfa":{"id":"6594b073-3543-402a-8b53-0b1c5f089dfa","name":"+ getApiV2UsersDemo()","type":"ClassMethod","owner":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","bounds":{"x":-369.5,"y":-329.5,"width":209,"height":30}},"7e94335d-2d9a-46f7-addd-ce486d6ff685":{"id":"7e94335d-2d9a-46f7-addd-ce486d6ff685","name":"UserController","type":"Class","owner":"15413415-9f69-4b83-be58-0ae0231e0b56","bounds":{"x":-370,"y":-170,"width":210,"height":70},"attributes":["e26134e0-5451-4d9f-8bea-42429622ba73"],"methods":[]},"e26134e0-5451-4d9f-8bea-42429622ba73":{"id":"e26134e0-5451-4d9f-8bea-42429622ba73","name":"+ userService: UserService","type":"ClassAttribute","owner":"7e94335d-2d9a-46f7-addd-ce486d6ff685","bounds":{"x":-369.5,"y":-129.5,"width":209,"height":30}}},"relationships":{"53e741e3-3edf-44e6-8baf-63f2be3bef51":{"id":"53e741e3-3edf-44e6-8baf-63f2be3bef51","name":"","type":"ClassBidirectional","owner":null,"bounds":{"x":-430,"y":-145,"width":60,"height":48},"path":[{"x":0,"y":10},{"x":60,"y":10}],"source":{"direction":"Right","element":"81be87b5-d915-4d7a-91a4-7eb044b3d2be","multiplicity":"1","role":""},"target":{"direction":"Left","element":"7e94335d-2d9a-46f7-addd-ce486d6ff685","multiplicity":"","role":""},"isManuallyLayouted":false},"e7e3e7d2-4ee0-466c-abcd-ac08dd374995":{"id":"e7e3e7d2-4ee0-466c-abcd-ac08dd374995","name":"","type":"ClassRealization","owner":null,"bounds":{"x":-270,"y":-300,"width":10,"height":130},"path":[{"x":5,"y":130},{"x":5,"y":0}],"source":{"direction":"Up","element":"7e94335d-2d9a-46f7-addd-ce486d6ff685","multiplicity":"","role":""},"target":{"direction":"Down","element":"ee1c4f31-f24c-4f03-8093-0b8b8c47cea3","multiplicity":"","role":""},"isManuallyLayouted":false}},"assessments":{}},"lastUpdate":"2025-07-20T09:20:23.534Z"} \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_class_user.png b/resources/diagrams/meetatmensa_uml_class_user.png new file mode 100644 index 00000000..10b82584 Binary files /dev/null and b/resources/diagrams/meetatmensa_uml_class_user.png differ diff --git a/resources/diagrams/meetatmensa_uml_class_user.svg b/resources/diagrams/meetatmensa_uml_class_user.svg new file mode 100644 index 00000000..41a6855c --- /dev/null +++ b/resources/diagrams/meetatmensa_uml_class_user.svg @@ -0,0 +1,15 @@ +MeetAtMensa User MicroserviceUserService- userRepository: UserRepository- interestRepository: InterestRepository- identityRepository: IdentityRepository+ getUser()+ getUserByAuthID()+ registerUser()+ updateUser()+ deleteUser()+ createDemoUsers()- getInterests()- registerInterests()- deleteInterests()«interface»UserAPI+ deleteApiV2UserUserID()+ getApiV2UserUserID()+ postApiV2UserRegister()+ pupApiV2UserUserID()+ getApiV2UserMeAuthId()+ getApiV2UsersDemo()UserController+ userService: UserService1 \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_component.json b/resources/diagrams/meetatmensa_uml_component.json index 0a678ea0..5e76b24a 100644 --- a/resources/diagrams/meetatmensa_uml_component.json +++ b/resources/diagrams/meetatmensa_uml_component.json @@ -1 +1 @@ -{"id":"c61dca50-704f-4824-bbcf-4b2b2eec0b0a","title":"meetatmensa_uml_component","model":{"version":"3.0.0","type":"ComponentDiagram","size":{"width":1900,"height":880},"interactive":{"elements":{},"relationships":{}},"elements":{"648ff300-09d3-4ad1-b97a-63faa22031d5":{"id":"648ff300-09d3-4ad1-b97a-63faa22031d5","name":"Meet@Mensa","type":"Subsystem","owner":null,"bounds":{"x":-400,"y":-160,"width":1120,"height":510},"stereotype":"subsystem","displayStereotype":false},"c9a8ef86-554b-428f-a9f1-16be0a514239":{"id":"c9a8ef86-554b-428f-a9f1-16be0a514239","name":"Client","type":"Subsystem","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":-380,"y":-100,"width":260,"height":160},"stereotype":"subsystem","displayStereotype":true},"b5298186-e971-4cef-a18b-8185d5abf451":{"id":"b5298186-e971-4cef-a18b-8185d5abf451","name":"Web UI","type":"Component","owner":"c9a8ef86-554b-428f-a9f1-16be0a514239","bounds":{"x":-330,"y":-40,"width":170,"height":70},"displayStereotype":true},"18864ff8-f3d6-48f4-ac96-4ddeac12465e":{"id":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","name":"Server","type":"Subsystem","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":-80,"y":-100,"width":500,"height":410},"stereotype":"subsystem","displayStereotype":true},"f4748b20-56e8-49fe-9a20-b5cb198a5bd1":{"id":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1","name":"API Gateway","type":"Component","owner":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","bounds":{"x":-40,"y":-40,"width":170,"height":70},"displayStereotype":true},"ffccb348-25e1-42c6-a9da-78727a550168":{"id":"ffccb348-25e1-42c6-a9da-78727a550168","name":"Matching Service","type":"Component","owner":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","bounds":{"x":220,"y":-40,"width":170,"height":70},"displayStereotype":true},"b490ed0a-4809-4688-aa4f-a10acd1157f4":{"id":"b490ed0a-4809-4688-aa4f-a10acd1157f4","name":"User Service","type":"Component","owner":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","bounds":{"x":220,"y":220,"width":170,"height":70},"displayStereotype":true},"72941dd9-cfa3-42f2-b530-12ff6a68ea79":{"id":"72941dd9-cfa3-42f2-b530-12ff6a68ea79","name":"GenAI Service","type":"Component","owner":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","bounds":{"x":-40,"y":220,"width":170,"height":70},"displayStereotype":true},"f07209c4-1521-4b71-8068-923c2c0ed0e6":{"id":"f07209c4-1521-4b71-8068-923c2c0ed0e6","name":"Database","type":"Subsystem","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":460,"y":-100,"width":240,"height":410},"stereotype":"subsystem","displayStereotype":true},"6fa57659-aa94-4550-9884-821fada9a088":{"id":"6fa57659-aa94-4550-9884-821fada9a088","name":"Matching DB","type":"Component","owner":"f07209c4-1521-4b71-8068-923c2c0ed0e6","bounds":{"x":500,"y":-40,"width":170,"height":70},"displayStereotype":true},"2d564d3e-4a8d-4502-bf7a-78b01ac69e40":{"id":"2d564d3e-4a8d-4502-bf7a-78b01ac69e40","name":"User DB","type":"Component","owner":"f07209c4-1521-4b71-8068-923c2c0ed0e6","bounds":{"x":500,"y":220,"width":170,"height":70},"displayStereotype":true},"1622c70a-9eee-436b-a8d6-a33bfaa0bf67":{"id":"1622c70a-9eee-436b-a8d6-a33bfaa0bf67","name":"Matching, inviting, RSVP-ing","type":"ColorLegend","owner":null,"bounds":{"x":760,"y":-30,"width":170,"height":50}},"7b4148cf-9bfa-4024-bdd6-7ad3a0fe1ac8":{"id":"7b4148cf-9bfa-4024-bdd6-7ad3a0fe1ac8","name":"Handling user data and credentials","type":"ColorLegend","owner":null,"bounds":{"x":760,"y":230,"width":170,"height":50}},"f6fb6e90-986a-4922-adc7-e9c10c99c033":{"id":"f6fb6e90-986a-4922-adc7-e9c10c99c033","name":"Topic suggestion based on user data","type":"ColorLegend","owner":null,"bounds":{"x":-40,"y":370,"width":170,"height":50}}},"relationships":{"f07eb39b-9ba0-4518-ae33-ad6e55194925":{"id":"f07eb39b-9ba0-4518-ae33-ad6e55194925","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-160,"y":-5,"width":120,"height":1},"path":[{"x":0,"y":0},{"x":120,"y":0}],"source":{"direction":"Right","element":"b5298186-e971-4cef-a18b-8185d5abf451"},"target":{"direction":"Left","element":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1"},"isManuallyLayouted":false},"73254762-9c4d-4a5b-bf0d-d6e85c03ad3f":{"id":"73254762-9c4d-4a5b-bf0d-d6e85c03ad3f","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":390,"y":-5,"width":110,"height":1},"path":[{"x":0,"y":0},{"x":110,"y":0}],"source":{"direction":"Right","element":"ffccb348-25e1-42c6-a9da-78727a550168"},"target":{"direction":"Left","element":"6fa57659-aa94-4550-9884-821fada9a088"},"isManuallyLayouted":false},"feea505b-f7ef-4618-9afe-9fd7a02bf69c":{"id":"feea505b-f7ef-4618-9afe-9fd7a02bf69c","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":390,"y":255,"width":110,"height":1},"path":[{"x":0,"y":0},{"x":110,"y":0}],"source":{"direction":"Right","element":"b490ed0a-4809-4688-aa4f-a10acd1157f4"},"target":{"direction":"Left","element":"2d564d3e-4a8d-4502-bf7a-78b01ac69e40"},"isManuallyLayouted":false},"b420358b-5aae-4ddd-b10b-7e14c231f450":{"id":"b420358b-5aae-4ddd-b10b-7e14c231f450","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":305,"y":30,"width":1,"height":190},"path":[{"x":0,"y":0},{"x":0,"y":190}],"source":{"direction":"Down","element":"ffccb348-25e1-42c6-a9da-78727a550168"},"target":{"direction":"Up","element":"b490ed0a-4809-4688-aa4f-a10acd1157f4"},"isManuallyLayouted":false},"0a0f3214-6dbf-4717-a744-e31defbd4869":{"id":"0a0f3214-6dbf-4717-a744-e31defbd4869","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":130,"y":-5,"width":100,"height":260},"path":[{"x":0,"y":0},{"x":35,"y":0},{"x":35,"y":260},{"x":90,"y":260}],"source":{"direction":"Right","element":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1"},"target":{"direction":"Left","element":"b490ed0a-4809-4688-aa4f-a10acd1157f4"},"isManuallyLayouted":true},"057c998e-225b-4981-82fb-76bb9a5e2d5d":{"id":"057c998e-225b-4981-82fb-76bb9a5e2d5d","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":130,"y":-5,"width":90,"height":1},"path":[{"x":0,"y":0},{"x":90,"y":0}],"source":{"direction":"Right","element":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1"},"target":{"direction":"Left","element":"ffccb348-25e1-42c6-a9da-78727a550168"},"isManuallyLayouted":false},"a12c58d6-a9b5-4552-804b-eb5899110440":{"id":"a12c58d6-a9b5-4552-804b-eb5899110440","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":45,"y":30,"width":1,"height":190},"path":[{"x":0,"y":0},{"x":0,"y":190}],"source":{"direction":"Down","element":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1"},"target":{"direction":"Up","element":"72941dd9-cfa3-42f2-b530-12ff6a68ea79"},"isManuallyLayouted":false},"e9d635c3-5620-41db-ae6b-495ad1b9249c":{"id":"e9d635c3-5620-41db-ae6b-495ad1b9249c","name":"","type":"ComponentInterfaceProvided","owner":null,"bounds":{"x":670,"y":-5,"width":90,"height":1},"path":[{"x":90,"y":0},{"x":0,"y":0}],"source":{"direction":"Left","element":"1622c70a-9eee-436b-a8d6-a33bfaa0bf67"},"target":{"direction":"Right","element":"6fa57659-aa94-4550-9884-821fada9a088"},"isManuallyLayouted":false},"e6674871-a52e-4862-89bd-3da25c1bc054":{"id":"e6674871-a52e-4862-89bd-3da25c1bc054","name":"","type":"ComponentInterfaceProvided","owner":null,"bounds":{"x":670,"y":255,"width":90,"height":1},"path":[{"x":90,"y":0},{"x":0,"y":0}],"source":{"direction":"Left","element":"7b4148cf-9bfa-4024-bdd6-7ad3a0fe1ac8"},"target":{"direction":"Right","element":"2d564d3e-4a8d-4502-bf7a-78b01ac69e40"},"isManuallyLayouted":false},"0d8d99af-81b8-435e-9331-cf2802c947f4":{"id":"0d8d99af-81b8-435e-9331-cf2802c947f4","name":"","type":"ComponentInterfaceProvided","owner":null,"bounds":{"x":45,"y":290,"width":1,"height":80},"path":[{"x":0,"y":80},{"x":0,"y":0}],"source":{"direction":"Up","element":"f6fb6e90-986a-4922-adc7-e9c10c99c033"},"target":{"direction":"Down","element":"72941dd9-cfa3-42f2-b530-12ff6a68ea79"},"isManuallyLayouted":false},"53c053a9-82de-43c0-ac40-9554f06b507c":{"id":"53c053a9-82de-43c0-ac40-9554f06b507c","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":130,"y":255,"width":90,"height":1},"path":[{"x":0,"y":0},{"x":90,"y":0}],"source":{"direction":"Right","element":"72941dd9-cfa3-42f2-b530-12ff6a68ea79"},"target":{"direction":"Left","element":"b490ed0a-4809-4688-aa4f-a10acd1157f4"},"isManuallyLayouted":false}},"assessments":{}},"lastUpdate":"2025-05-14T15:35:55.442Z"} \ No newline at end of file +{"id":"121ba6dc-a583-46c4-b213-1d04e6c56ed3","title":"meetatmensa_uml_component","model":{"version":"3.0.0","type":"ComponentDiagram","size":{"width":2220,"height":1480},"interactive":{"elements":{},"relationships":{}},"elements":{"648ff300-09d3-4ad1-b97a-63faa22031d5":{"id":"648ff300-09d3-4ad1-b97a-63faa22031d5","name":"Meet@Mensa","type":"Subsystem","owner":null,"bounds":{"x":-1090,"y":-720,"width":1440,"height":810},"stereotype":"subsystem","displayStereotype":false},"c9a8ef86-554b-428f-a9f1-16be0a514239":{"id":"c9a8ef86-554b-428f-a9f1-16be0a514239","name":"Client","type":"Subsystem","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":-1050,"y":-660,"width":260,"height":160},"stereotype":"subsystem","displayStereotype":true},"b5298186-e971-4cef-a18b-8185d5abf451":{"id":"b5298186-e971-4cef-a18b-8185d5abf451","name":"Web UI","type":"Component","owner":"c9a8ef86-554b-428f-a9f1-16be0a514239","bounds":{"x":-1000,"y":-600,"width":170,"height":70},"strokeColor":"#2bcbba","displayStereotype":true},"18864ff8-f3d6-48f4-ac96-4ddeac12465e":{"id":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","name":"Server","type":"Subsystem","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":-480,"y":-660,"width":500,"height":360},"stereotype":"subsystem","displayStereotype":true},"f4748b20-56e8-49fe-9a20-b5cb198a5bd1":{"id":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1","name":"API Gateway","type":"Component","owner":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","bounds":{"x":-440,"y":-600,"width":170,"height":70},"strokeColor":"#fd9644","displayStereotype":true},"ffccb348-25e1-42c6-a9da-78727a550168":{"id":"ffccb348-25e1-42c6-a9da-78727a550168","name":"Matching Service","type":"Component","owner":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","bounds":{"x":-180,"y":-600,"width":170,"height":70},"strokeColor":"#a55eea","displayStereotype":true},"b490ed0a-4809-4688-aa4f-a10acd1157f4":{"id":"b490ed0a-4809-4688-aa4f-a10acd1157f4","name":"User Service","type":"Component","owner":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","bounds":{"x":-180,"y":-410,"width":170,"height":70},"strokeColor":"#a55eea","displayStereotype":true},"72941dd9-cfa3-42f2-b530-12ff6a68ea79":{"id":"72941dd9-cfa3-42f2-b530-12ff6a68ea79","name":"GenAI Service","type":"Component","owner":"18864ff8-f3d6-48f4-ac96-4ddeac12465e","bounds":{"x":-440,"y":-410,"width":170,"height":70},"strokeColor":"#fd9644","displayStereotype":true},"f07209c4-1521-4b71-8068-923c2c0ed0e6":{"id":"f07209c4-1521-4b71-8068-923c2c0ed0e6","name":"Database","type":"Subsystem","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":60,"y":-660,"width":240,"height":360},"stereotype":"subsystem","displayStereotype":true},"6fa57659-aa94-4550-9884-821fada9a088":{"id":"6fa57659-aa94-4550-9884-821fada9a088","name":"Matching DB","type":"Component","owner":"f07209c4-1521-4b71-8068-923c2c0ed0e6","bounds":{"x":100,"y":-600,"width":170,"height":70},"strokeColor":"#a55eea","displayStereotype":true},"2d564d3e-4a8d-4502-bf7a-78b01ac69e40":{"id":"2d564d3e-4a8d-4502-bf7a-78b01ac69e40","name":"User DB","type":"Component","owner":"f07209c4-1521-4b71-8068-923c2c0ed0e6","bounds":{"x":100,"y":-410,"width":170,"height":70},"strokeColor":"#a55eea","displayStereotype":true},"a6006600-1bc3-4716-8348-39050831e23b":{"id":"a6006600-1bc3-4716-8348-39050831e23b","name":"Monitoring","type":"Subsystem","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":-490,"y":-120,"width":500,"height":170},"stereotype":"subsystem","displayStereotype":true},"040616f3-b6b8-4f0a-b090-6dd5f12f9919":{"id":"040616f3-b6b8-4f0a-b090-6dd5f12f9919","name":"Grafana","type":"Component","owner":"a6006600-1bc3-4716-8348-39050831e23b","bounds":{"x":-190,"y":-60,"width":170,"height":70},"strokeColor":"#2bcbba","displayStereotype":true},"a2448cc0-fad2-4370-bfe4-02b43607dc03":{"id":"a2448cc0-fad2-4370-bfe4-02b43607dc03","name":"Prometheus","type":"Component","owner":"a6006600-1bc3-4716-8348-39050831e23b","bounds":{"x":-450,"y":-60,"width":170,"height":70},"strokeColor":"#2bcbba","displayStereotype":true},"0ac0dae2-5b7b-458a-b15d-2037491bec33":{"id":"0ac0dae2-5b7b-458a-b15d-2037491bec33","name":"CI / CD","type":"Subsystem","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":-1050,"y":-450,"width":510,"height":500},"stereotype":"subsystem","displayStereotype":true},"f7a2a428-c63d-4542-8b27-35974823da1c":{"id":"f7a2a428-c63d-4542-8b27-35974823da1c","name":"Rancher (Kubernetes)","type":"Component","owner":"0ac0dae2-5b7b-458a-b15d-2037491bec33","bounds":{"x":-780,"y":-190,"width":190,"height":100},"strokeColor":"#fd9644","displayStereotype":true},"defcbd8d-c07a-4c53-8ae3-a9d7b2997eee":{"id":"defcbd8d-c07a-4c53-8ae3-a9d7b2997eee","name":"AWS (Compose)","type":"Component","owner":"0ac0dae2-5b7b-458a-b15d-2037491bec33","bounds":{"x":-780,"y":-310,"width":190,"height":100},"strokeColor":"#2bcbba","displayStereotype":true},"a1f6402b-e71b-4729-a6a5-1afc8faac3e4":{"id":"a1f6402b-e71b-4729-a6a5-1afc8faac3e4","name":"API Generation","type":"Component","owner":"0ac0dae2-5b7b-458a-b15d-2037491bec33","bounds":{"x":-780,"y":-70,"width":190,"height":100},"strokeColor":"#a55eea","displayStereotype":true},"7dca103a-ba91-4e2a-8192-7e1cd15bd04f":{"id":"7dca103a-ba91-4e2a-8192-7e1cd15bd04f","name":"GitHub Actions","type":"Component","owner":"0ac0dae2-5b7b-458a-b15d-2037491bec33","bounds":{"x":-1040,"y":-400,"width":190,"height":100},"strokeColor":"#a55eea","displayStereotype":true},"f7d89c5d-23b8-4b80-81c7-bc9b37310160":{"id":"f7d89c5d-23b8-4b80-81c7-bc9b37310160","name":"E. Bausenhart","type":"ColorLegend","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":120,"y":-120,"width":160,"height":50},"strokeColor":"#2bcbba"},"571cb201-8ca2-4ca4-a949-0d46ab3b9371":{"id":"571cb201-8ca2-4ca4-a949-0d46ab3b9371","name":"G. Stark","type":"ColorLegend","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":120,"y":-60,"width":160,"height":50},"strokeColor":"#a55eea"},"4ea17129-8edc-4652-a57f-07d0377cd544":{"id":"4ea17129-8edc-4652-a57f-07d0377cd544","name":"A. Korzhylova","type":"ColorLegend","owner":"648ff300-09d3-4ad1-b97a-63faa22031d5","bounds":{"x":120,"y":0,"width":160,"height":50},"strokeColor":"#fd9644"}},"relationships":{"f07eb39b-9ba0-4518-ae33-ad6e55194925":{"id":"f07eb39b-9ba0-4518-ae33-ad6e55194925","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-830,"y":-565,"width":390,"height":1},"path":[{"x":0,"y":0},{"x":390,"y":0}],"source":{"direction":"Right","element":"b5298186-e971-4cef-a18b-8185d5abf451"},"target":{"direction":"Left","element":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1"},"isManuallyLayouted":false},"73254762-9c4d-4a5b-bf0d-d6e85c03ad3f":{"id":"73254762-9c4d-4a5b-bf0d-d6e85c03ad3f","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-10,"y":-565,"width":110,"height":1},"path":[{"x":0,"y":0},{"x":110,"y":0}],"source":{"direction":"Right","element":"ffccb348-25e1-42c6-a9da-78727a550168"},"target":{"direction":"Left","element":"6fa57659-aa94-4550-9884-821fada9a088"},"isManuallyLayouted":false},"feea505b-f7ef-4618-9afe-9fd7a02bf69c":{"id":"feea505b-f7ef-4618-9afe-9fd7a02bf69c","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-10,"y":-375,"width":110,"height":1},"path":[{"x":0,"y":0},{"x":110,"y":0}],"source":{"direction":"Right","element":"b490ed0a-4809-4688-aa4f-a10acd1157f4"},"target":{"direction":"Left","element":"2d564d3e-4a8d-4502-bf7a-78b01ac69e40"},"isManuallyLayouted":false},"b420358b-5aae-4ddd-b10b-7e14c231f450":{"id":"b420358b-5aae-4ddd-b10b-7e14c231f450","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-95,"y":-530,"width":1,"height":120},"path":[{"x":0,"y":0},{"x":0,"y":120}],"source":{"direction":"Down","element":"ffccb348-25e1-42c6-a9da-78727a550168"},"target":{"direction":"Up","element":"b490ed0a-4809-4688-aa4f-a10acd1157f4"},"isManuallyLayouted":false},"0a0f3214-6dbf-4717-a744-e31defbd4869":{"id":"0a0f3214-6dbf-4717-a744-e31defbd4869","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-270,"y":-565,"width":90,"height":190},"path":[{"x":0,"y":0},{"x":45,"y":0},{"x":45,"y":190},{"x":90,"y":190}],"source":{"direction":"Right","element":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1"},"target":{"direction":"Left","element":"b490ed0a-4809-4688-aa4f-a10acd1157f4"},"isManuallyLayouted":false},"057c998e-225b-4981-82fb-76bb9a5e2d5d":{"id":"057c998e-225b-4981-82fb-76bb9a5e2d5d","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-270,"y":-565,"width":90,"height":1},"path":[{"x":0,"y":0},{"x":90,"y":0}],"source":{"direction":"Right","element":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1"},"target":{"direction":"Left","element":"ffccb348-25e1-42c6-a9da-78727a550168"},"isManuallyLayouted":false},"a12c58d6-a9b5-4552-804b-eb5899110440":{"id":"a12c58d6-a9b5-4552-804b-eb5899110440","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-355,"y":-530,"width":1,"height":120},"path":[{"x":0,"y":0},{"x":0,"y":120}],"source":{"direction":"Down","element":"f4748b20-56e8-49fe-9a20-b5cb198a5bd1"},"target":{"direction":"Up","element":"72941dd9-cfa3-42f2-b530-12ff6a68ea79"},"isManuallyLayouted":false},"53c053a9-82de-43c0-ac40-9554f06b507c":{"id":"53c053a9-82de-43c0-ac40-9554f06b507c","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-270,"y":-375,"width":90,"height":1},"path":[{"x":0,"y":0},{"x":90,"y":0}],"source":{"direction":"Right","element":"72941dd9-cfa3-42f2-b530-12ff6a68ea79"},"target":{"direction":"Left","element":"b490ed0a-4809-4688-aa4f-a10acd1157f4"},"isManuallyLayouted":false},"3fe900c1-e902-47f2-801b-aebce6ad2a78":{"id":"3fe900c1-e902-47f2-801b-aebce6ad2a78","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-945,"y":-300,"width":165,"height":40},"path":[{"x":0,"y":0},{"x":0,"y":40},{"x":165,"y":40}],"source":{"direction":"Down","element":"7dca103a-ba91-4e2a-8192-7e1cd15bd04f"},"target":{"direction":"Left","element":"defcbd8d-c07a-4c53-8ae3-a9d7b2997eee"},"isManuallyLayouted":false},"ced9e3bf-6d1a-4b22-b165-c85dcae7f0fa":{"id":"ced9e3bf-6d1a-4b22-b165-c85dcae7f0fa","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-945,"y":-300,"width":165,"height":160},"path":[{"x":0,"y":0},{"x":0,"y":160},{"x":165,"y":160}],"source":{"direction":"Down","element":"7dca103a-ba91-4e2a-8192-7e1cd15bd04f"},"target":{"direction":"Left","element":"f7a2a428-c63d-4542-8b27-35974823da1c"},"isManuallyLayouted":false},"703c666f-d058-46bc-a102-596f5cfc0538":{"id":"703c666f-d058-46bc-a102-596f5cfc0538","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-945,"y":-300,"width":165,"height":280},"path":[{"x":0,"y":0},{"x":0,"y":280},{"x":165,"y":280}],"source":{"direction":"Down","element":"7dca103a-ba91-4e2a-8192-7e1cd15bd04f"},"target":{"direction":"Left","element":"a1f6402b-e71b-4729-a6a5-1afc8faac3e4"},"isManuallyLayouted":false},"b488745c-4edb-4dae-bb55-9975beb782f3":{"id":"b488745c-4edb-4dae-bb55-9975beb782f3","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-280,"y":-25,"width":90,"height":1},"path":[{"x":0,"y":0},{"x":90,"y":0}],"source":{"direction":"Right","element":"a2448cc0-fad2-4370-bfe4-02b43607dc03"},"target":{"direction":"Left","element":"040616f3-b6b8-4f0a-b090-6dd5f12f9919"},"isManuallyLayouted":false},"97af2cea-d986-451c-97e3-a3c3cd173cf7":{"id":"97af2cea-d986-451c-97e3-a3c3cd173cf7","name":"","type":"ComponentDependency","owner":null,"bounds":{"x":-365,"y":-300,"width":1,"height":240},"path":[{"x":0,"y":0},{"x":0,"y":240}],"source":{"direction":"Down","element":"18864ff8-f3d6-48f4-ac96-4ddeac12465e"},"target":{"direction":"Up","element":"a2448cc0-fad2-4370-bfe4-02b43607dc03"},"isManuallyLayouted":false}},"assessments":{}},"lastUpdate":"2025-05-14T15:35:55.442Z"} \ No newline at end of file diff --git a/resources/diagrams/meetatmensa_uml_component.png b/resources/diagrams/meetatmensa_uml_component.png index 33975688..ee0aff60 100644 Binary files a/resources/diagrams/meetatmensa_uml_component.png and b/resources/diagrams/meetatmensa_uml_component.png differ diff --git a/resources/diagrams/meetatmensa_uml_component.svg b/resources/diagrams/meetatmensa_uml_component.svg index 6a65fa2b..d2e2a6d4 100644 --- a/resources/diagrams/meetatmensa_uml_component.svg +++ b/resources/diagrams/meetatmensa_uml_component.svg @@ -1,4 +1,4 @@ -Meet@Mensa«subsystem»Client«component»Web UI«subsystem»Server«component»API Gateway«component»Matching Service«component»User Service«component»GenAI Service«subsystem»Database«component»Matching DB«component»User DB«subsystem»Monitoring«component»Grafana«component»Prometheus«subsystem»CI / CD«component»Rancher (Kubernetes)«component»AWS (Compose)«component»API Generation«component»GitHub ActionsE. BausenhartG. StarkA. Korzhylova \ No newline at end of file diff --git a/server/gateway/generated-client/src/test/java/org/openapitools/client/api/GenAiApiTest.java b/server/gateway/generated-client/src/test/java/org/openapitools/client/api/GenAiApiTest.java index db931aea..a8352123 100644 --- a/server/gateway/generated-client/src/test/java/org/openapitools/client/api/GenAiApiTest.java +++ b/server/gateway/generated-client/src/test/java/org/openapitools/client/api/GenAiApiTest.java @@ -42,7 +42,7 @@ public class GenAiApiTest { @Test public void getApiV2GenaiConversationStarterTest() throws ApiException { UserCollection userCollection = null; - ConversationStarterCollection response = api.getApiV2GenaiConversationStarter(userCollection); + ConversationStarterCollection response = api.postApiV2GenaiConversationStarter(userCollection); // TODO: test validations } diff --git a/server/matching/README.md b/server/matching/README.md index 88c83495..78f556cd 100644 --- a/server/matching/README.md +++ b/server/matching/README.md @@ -2,18 +2,65 @@ A Spring Boot application built with Gradle supporting the matching process in the Meet@Mensa app. -Implementation details to follow. +## Class Diagram +Diagram showing the basic class structure for the Matching Microservice + +![Class Diagram](../../resources/diagrams/meetatmensa_uml_class_matching.png) + +## The Meet@Mensa Matching Algorithm + +### Goal +Match students into groups of 3-5, taking preferences into consideration, but prioritizing primarily including as many students in the match as possible. + +### Step 0: Prepare Clusters + +Students are assigned to "clusters" representing the potential start-times of an event. +Since events take 45 minutes, a student is added to cluster 1 (11:00 - 11:45) if they are available in time-slots 1 (11:00 - 11:15) , 2 (11:15-11:30) and 3 (11:30-11:45). +A single student can be assigned to multiple clusters. + +### Step 1: Eliminate Dead Clusters + +Meet@Mensa groups must be made up of at least 3 students. Clusters containing less than 2 students therefore are considered "dead" and are removed. +If removing a cluster would remove a student's last entry in any cluster, that student is considered unmatchable. + +### Step 2: Determine Critical Candidate + +Our priority is ensuring as many students are matched as possible. +To enable this, we next determine which user is in the fewest clusters, and therefore most at risk of becoming unmatchable. +In case of ties we select the most flexible student (with the fewest filters set) as critical. + +### Step 3: Construct Minimal Group around Critical Candidate + +The algorithm then generates all possible 3-person groups that can include the critical candidate and checks them for quality. +Group quality is determined by the preferences of each user in said group. +For all users with preferences in the group, one "quality point" is awarded every time another student in the group fulfills one of their preferences. +Students without preferences are treated as if all their preferences were fulfilled. +The algorithm then selects the highest quality group that includes the Critical Candidate. + +### Step 4: Remove Matched Users from Clusters + +All entries corresponding to the 3 users are then removed from the clusters + +### Step 5: Loop + +Repeat Steps 1-4 until all clusters are empty + +### Step 6: Attempt to fit Unmatchable Students + +Finally, the algorithm check for any possibility to include students that were previously set as unmatchable into one of the matched groups. +If multiple such groups are possible, the one with the highest quality is picked. +Because of the nature of the clusters, at most 2 unmatchable users should left per cluster, meaning group sizes will not exceed 5. ## Local Deployment with Docker ``` # Build and tag the Docker image -docker build -t ghcr.io/aet-devops25/team-devoops/server/matching . +docker build -t ghcr.io/aet-devops25/team-devoops/matching . # Push the image to GHCR (latest tag by default, access needed) -docker push ghcr.io/aet-devops25/team-devoops/server/matching +docker push ghcr.io/aet-devops25/team-devoops/matching # Run the Docker container on port 8082 -docker run --name matching-service -p 8082:80 ghcr.io/aet-devops25/team-devoops/server/matching +docker run --name matching-service -p 8082:80 ghcr.io/aet-devops25/team-devoops/matching # List running containers (if needed) docker ps diff --git a/server/user/README.md b/server/user/README.md index 5de96f83..e2711850 100644 --- a/server/user/README.md +++ b/server/user/README.md @@ -2,18 +2,23 @@ A Spring Boot application built with Gradle supporting the user-related features and database interaction in the Meet@Mensa app. -Implementation details to follow. +## Class Diagram +Diagram showing the basic class structure for the User Microservice + +![Class Diagram](../../resources/diagrams/meetatmensa_uml_class_user.png) + +## ## Local Deployment with Docker ``` # Build and tag the Docker image -docker build -t ghcr.io/aet-devops25/team-devoops/server/user . +docker build -t ghcr.io/aet-devops25/team-devoops/user . # Push the image to GHCR (latest tag by default, access needed) -docker push ghcr.io/aet-devops25/team-devoops/server/user +docker push ghcr.io/aet-devops25/team-devoops/user # Run the Docker container on port 8083 -docker run --name user-service -p 8083:80 ghcr.io/aet-devops25/team-devoops/server/user +docker run --name user-service -p 8083:80 ghcr.io/aet-devops25/team-devoops/user # List running containers (if needed) docker ps