class MaintenanceNotification NOTIFIABLE_STATUSES = %w[upcoming overdue].freeze def self.record_status_change(schedule, status) return if schedule.last_status == status.status previous_status = schedule.last_status.presence || "unknown" schedule.update!(last_status: status.status, last_status_changed_at: Time.current) return unless NOTIFIABLE_STATUSES.include?(status.status) Rails.logger.warn( "Maintenance schedule #{status.status}: vehicle_id=#{schedule.vehicle_id} " \ "maintenance_schedule_id=#{schedule.id} maintenance_type=#{schedule.maintenance_type.inspect} " \ "previous_status=#{previous_status} due_odometer=#{status.due_odometer} due_date=#{status.due_date} " \ "reason=#{status.reason.inspect}" ) end end