feat: implement scheduling service#33
Conversation
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
There was a problem hiding this comment.
Pull request overview
Implements a new backend scheduling/voting flow for competency relationship mapping, backed by new tables for aggregated vote counts + raw vote logs and a denormalized degree counter to prioritize low-connected competencies. Also includes minor frontend typography/style updates (Geist fonts, badge weight, subtle gradient tweak).
Changes:
- Added Scheduling Service + Controller to fetch relationship tasks (coverage/consensus pipelines) and submit votes.
- Introduced new scheduling/voting schema (relationships table w/ aggregated counters + vote log table) and a
degreecolumn on competencies with backfill/index. - Updated UI styling: switched default fonts to Geist, adjusted badge font weight, tweaked homepage gradient opacity.
Reviewed changes
Copilot reviewed 20 out of 22 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| src/pages/HomePage.tsx | Minor gradient opacity tweak. |
| src/index.css | Adds Geist font-face definitions and switches CSS variables/body font to Geist. |
| src/components/ui/badge.tsx | Changes badge font weight from medium to semibold. |
| server/src/main/resources/db/migration/V7__add_competency_degree.sql | Adds degree column + index and backfills from existing relationships. |
| server/src/main/resources/db/migration/V6__create_scheduling_tables.sql | Creates new denormalized competency_relationships + vote log table with indexes/constraints. |
| server/src/main/resources/db/migration/V5__drop_old_relationships.sql | Drops legacy relationships table/constraints. |
| server/src/main/resources/db/migration/V2__seed_sample_data.sql | Removes seeding of legacy competency relationships. |
| server/src/main/java/de/tum/cit/memo/service/SchedulingService.java | Core coverage/consensus scheduling logic and vote submission with entropy updates. |
| server/src/main/java/de/tum/cit/memo/service/CompetencyRelationshipService.java | Refactors relationship creation to maintain denormalized degree counter and add find-or-create behavior. |
| server/src/main/java/de/tum/cit/memo/repository/CompetencyRepository.java | Adds degree-based query + atomic degree increment method. |
| server/src/main/java/de/tum/cit/memo/repository/CompetencyRelationshipVoteRepository.java | New repository for vote log access and existence checks. |
| server/src/main/java/de/tum/cit/memo/repository/CompetencyRelationshipRepository.java | Refactors repository API and adds scheduling queries (entropy, batch relationship fetch, NOT EXISTS). |
| server/src/main/java/de/tum/cit/memo/entity/CompetencyRelationshipVote.java | New JPA entity for per-user per-relationship vote log rows. |
| server/src/main/java/de/tum/cit/memo/entity/CompetencyRelationship.java | Refactors entity to aggregated counters/entropy + timestamps (removes per-row relationship_type/user_id). |
| server/src/main/java/de/tum/cit/memo/entity/Competency.java | Adds denormalized degree field. |
| server/src/main/java/de/tum/cit/memo/dto/VoteResponse.java | New DTO for returning updated vote counts + entropy after voting. |
| server/src/main/java/de/tum/cit/memo/dto/VoteRequest.java | New DTO for submitting a vote. |
| server/src/main/java/de/tum/cit/memo/dto/RelationshipTaskResponse.java | New DTO for returning scheduled relationship tasks. |
| server/src/main/java/de/tum/cit/memo/controller/SchedulingController.java | New REST endpoints for fetching next task and voting. |
| server/src/main/java/de/tum/cit/memo/controller/CompetencyRelationshipController.java | Changes POST to upsert relationship + record a vote through SchedulingService. |
| public/fonts/GeistMono-Variable.woff2 | Adds Geist Mono font asset for new typography. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 25 out of 28 changed files in this pull request and generated 9 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
🔍 Code Quality Report📊 Code Statistics🚨 Potential Issues✅ No console statements found |
|
@MaximilianAnzinger Ready to review |
Description
Implemented and optimized the Scheduling Service to utilize O(1) algorithms for the Coverage Pipeline and O(log n) for the Consensus Pipeline. Refactored database schema to support denormalized 'degree' counting for performance scaling.
Type of Change
Changes Made
Server:
Database:
Documentation:
Testing
Test Cases
Manual Testing