Skip to content

Conversation

@Abi107717
Copy link
Contributor

@Abi107717 Abi107717 commented Jan 20, 2026

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) and too complex database calls.
  • I strictly followed the principle of data economy for all database calls.
  • I strictly followed the server coding and design guidelines.
  • I documented the Java code using JavaDoc style.

Client

  • Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data (e.g. using paging).
  • I strictly followed the principle of data economy for all client-server REST calls.
  • I strictly followed the client coding and design guidelines.
  • I documented the TypeScript code using JSDoc style.
  • I added multiple screenshots/screencasts of my UI changes.

Motivation and Context

The previous conflict detection logic for interview slots was too strict, preventing professors from creating parallel "availability" slots across different interview processes. This need to be refined to allow flexibility while strictly preventing double-bookings. Additionally, to keep the schedule clean, overlapping unused slots should be automatically removed once a booking is confirmed.

Description

Refined the server-side and client-side conflict logic to distinguish between different types of overlaps:

Cross-Process Logic:
Allowed: Overlap with unbooked slots from other processes. This allows professors to offer the same time window in multiple job openings.
Blocked: Overlap with booked slots from other processes. This strictly prevents double-booking the professor.

Same-Process Logic:
Blocked: Any overlap within the same process is forbidden to prevent duplicate or messy slot creation.

Auto-Cleanup:
When a slot is booked by an applicant, the system now automatically finds and deletes any overlapping unbooked slots in other processes to ensure the schedule is consistent.

UI Updates:
Client side now visually distinguishes these conflicts and displays appropriate error messages (e.g., specific warning for "Conflict with booked slot in another process").

Steps for Testing

Prerequisites:
Log in to TumApply as Professor
Go to interviews/overview and choose an Interview Process

Case 1: Same Process Conflict (Strict)

  1. Create a slot (e.g., 10:00 - 11:00).
  2. Try to add another slot that overlaps this time (e.g., 10:30 - 11:30) within the same process.
  3. Verify: The UI shows a conflict error. Saving is disabled.

Case 2: Other Process - Unbooked Slot (Allowed)

  1. Ensure you have an unbooked slot in "Process A" (e.g., 12:00 - 13:00).
  2. Switch to "Process B".
  3. Create a slot at the exact same time (12:00 - 13:00).
  4. Verify: No conflict error is shown. You can save the slot successfully.

Case 3: Other Process - Booked Slot (Blocked)

  1. Ensure you have a booked slot (with an assigned applicant) in "Process A" (e.g., 14:00 - 14:30).
  2. Switch to "Process B".
  3. Try to create a slot at that time (14:00 - 14:30).
  4. Verify: The UI displays a red error: "Conflict with a booked slot in another Job Position". Saving is disabled.

Case 4: Auto-Cleanup on Booking

  1. Create an unbooked slot in "Process A" and an unbooked slot in "Process B" at the same time (e.g., 15:00 - 15:30).
  2. Assign an Applicant to the created Slot in Process A
  3. Go back to the slot management for "Process B".
  4. Verify: The unbooked slot in "Process B" (15:00 - 15:30) overlaps the new booking and should have been automatically deleted by the system.

Review Progress

Code Review

  • Code Review 1

Manual Tests

  • Test 1

Test Coverage

Warning: Both client and server tests failed. Coverage could not be fully measured. Please check the workflow logs.

Last updated: 2026-01-20 21:11:52 UTC

Screenshots

Slot conflict in same process

image

Slot conlfict with a booked slot in another process
image

image

@Abi107717 Abi107717 self-assigned this Jan 20, 2026
@Abi107717 Abi107717 linked an issue Jan 20, 2026 that may be closed by this pull request
3 tasks
@github-actions github-actions bot added the server Pull requests that update Java code. (Added Automatically!) label Jan 20, 2026
@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@Abi107717 Abi107717 marked this pull request as ready for review January 20, 2026 15:25
@Abi107717 Abi107717 requested a review from az108 as a code owner January 20, 2026 15:25
@Abi107717 Abi107717 marked this pull request as draft January 20, 2026 15:25
…nflict-validation' into 1689-implement-interview-slot-conflict-validation
@github-actions
Copy link
Contributor

📊 Client Test Coverage Too Low

🔍 View coverage locally:

npm run test:ci
open build/test-results/lcov-report/index.html

🌐 View coverage from GitHub:
Download the "coverage-report-client" artifact from this workflow run.

@github-actions
Copy link
Contributor

🤖 OpenAPI spec and client code auto-updated and committed.

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions github-actions bot added the client Pull requests that update TypeScript code. (Added Automatically!) label Jan 20, 2026
@github-actions
Copy link
Contributor

📊 Client Test Coverage Too Low

🔍 View coverage locally:

npm run test:ci
open build/test-results/lcov-report/index.html

🌐 View coverage from GitHub:
Download the "coverage-report-client" artifact from this workflow run.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

@github-actions
Copy link
Contributor

🤖 No OpenAPI or client changes needed.

@Abi107717 Abi107717 marked this pull request as ready for review January 20, 2026 21:09
@github-actions
Copy link
Contributor

@Abi107717 Test coverage could not be fully measured because some tests failed. Please check the workflow logs for details.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

client Pull requests that update TypeScript code. (Added Automatically!) ready for review server Pull requests that update Java code. (Added Automatically!)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Interview Slot Conflict Validation

2 participants