Skip to content

Support per-waypoint schedule constraints and dwell time #308

Description

@Medformatik

Problem

OpenMapX supports a single trip-level departure or arrival time, but a multi-stop trip cannot express “leave this stop after 10:00,” “arrive here by 11:30,” or “stay for 20 minutes.” That prevents realistic appointment and errand planning and can produce an itinerary that is individually routable but temporally impossible.

Current state

  • Ground and transit planning support global depart-at/arrive-by behavior.
  • The shared Waypoint type contains identity, coordinates, label, and type, but no time constraints or dwell duration.
  • Routing providers have different time-dependent capabilities, so passing fields through blindly is unsafe.

Proposed solution

Add provider-neutral per-waypoint temporal constraints and a canonical timeline solver. Plan ordered legs around fixed/earliest/latest times and dwell, using native provider support where semantics match and explicit leg chaining otherwise.

Acceptance criteria

  • The shared model represents departAfter, arriveBy, optional fixed appointment time, dwell duration, and waypoint time zone.
  • Validation rejects contradictory constraints and reports the specific infeasible interval/waypoint.
  • A canonical timeline accounts for travel, dwell, wait time, transfers, and time-zone/DST boundaries.
  • Provider capability metadata declares which temporal semantics are native, emulated, approximate, or unsupported.
  • Leg chaining preserves scheduled-transit feasibility and propagates delays/waiting between legs.
  • Arrive-by planning works backward where possible and fails clearly when a provider cannot support it.
  • Route optimization either respects all constraints or is disabled with an explanation.
  • The web waypoint editor exposes accessible date/time/dwell controls without cluttering unconstrained trips.
  • Constraints serialize through route state/deep links using a versioned representation.
  • Cache keys include every temporal input and resolved time zone.
  • Tests cover DST transitions, midnight/multi-day trips, impossible schedules, zero dwell, provider fallback, and transit disruptions.

Alternatives considered

Applying only a trip-level time cannot model appointments. Treating dwell as an added travel-time fudge obscures waiting and breaks arrive-by reasoning.

Area

Routing contracts, directions store, transit/ground providers, directions UI.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestneeds-triageNeeds initial review and categorization

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions