Jump to a problem, path or page
Jump to a problem, path or page
Updates as you edit. Run the review to record it; passing every check completes the problem.
Not yet passed: Scheduling controller responsibility
Add Scheduling controller and define its responsibility.
Not yet passed: Booking service responsibility
Add Booking service and define its responsibility.
Not yet passed: Room repository responsibility
Add Room repository and define its responsibility.
Not yet passed: Reservation repository responsibility
Add Reservation repository and define its responsibility.
Not yet passed: Availability policy responsibility
Add Availability policy and define its responsibility.
Not yet passed: Clock responsibility
Add Clock and define its responsibility.
Not yet passed: Scheduling controller → Booking service
A directed path must connect Scheduling controller to Booking service. Arrows represent requests, dependencies, or event flow.
Not yet passed: Booking service → Room repository
A directed path must connect Booking service to Room repository. Arrows represent requests, dependencies, or event flow.
Not yet passed: Booking service → Reservation repository
A directed path must connect Booking service to Reservation repository. Arrows represent requests, dependencies, or event flow.
Not yet passed: Booking service → Availability policy
A directed path must connect Booking service to Availability policy. Arrows represent requests, dependencies, or event flow.
Not yet passed: Booking service → Clock
A directed path must connect Booking service to Clock. Arrows represent requests, dependencies, or event flow.
Not yet passed: Do [10:00,11:00) and [11:00,12:00) overlap?
Not yet passed: What prevents concurrent double booking?
Not yet passed: What if a reschedule conflicts?
Not yet passed: Interfaces and invariants
Write at least 80 characters describing concrete operations, inputs, outputs, state and errors. This check measures completeness, not semantic correctness.
Not yet passed: Trade-offs and failure cases
Write at least 80 characters about alternatives, failure handling and edge cases. Review the reasoning yourself using the reference discussion.
Rule-based educational feedback. Notes are checked by length only; topology checks confirm directed reachability. These checks do not validate semantics, latency, reliability or every valid design.
Model room reservations as half-open intervals of explicit instants. Enforce overlap prevention in the durable repository and make creation, rescheduling and cancellation idempotent or version guarded. Validate start < end, attendees and required equipment. Convert unambiguous timezone inputs to instants; this exercise handles one-time reservations, not recurrence expansion. AvailabilityPolicy filters eligible rooms. A shared transactional repository serializes per-room booking or uses an overlap exclusion constraint before inserting an active reservation. A reschedule checks the expected reservation version and validates the replacement interval in one transaction. On conflict or stale version it leaves the prior reservation intact. Cancellation marks a reservation inactive once and increments its version. Idempotency keys return matching previous create results and reject different payloads with the same key.
There is no single correct diagram. Explain where yours differs and which requirement justifies it.