namespace Distribution.Features.Route; public record CreateRouteRequest(Guid RegionId, string RouteName, string StartPoint, string EndPoint, decimal Length); public record UpdateRouteRequest(Guid RegionId, string RouteName, string StartPoint, string EndPoint, decimal Length); public record RouteResponse(Guid Id, Guid RegionId, string RouteName, string StartPoint, string EndPoint, decimal Length, Guid? OwnerUserId, bool IsActive, DateTime CreatedAt); public record AssignRouteToRegionRequest(Guid RegionId); public record AssignStoresToRouteRequest(List StoreIds); public record AssignRouteOwnerRequest(Guid SalesRepId); public record RecordCheckInRequest( Guid StoreId, decimal Latitude, decimal Longitude, DateTime? Timestamp, // TEMPORARY: required while auth doesn't resolve a logged-in user server-side — see testbug.md #28. Guid? CheckedInByUserId = null); public record RecordCheckOutRequest(Guid StoreId, DateTime? Timestamp); public record RouteVisitResponse(Guid Id, Guid RouteId, Guid StoreId, Guid UserId, DateTime CheckInAt, bool IsDeviationFlagged, DateTime? CheckOutAt);