Mettre en œuvre la recherche d'emploi basée sur le temps de trajet dans votre interface utilisateur (v3)

En intégrant la recherche d'emploi basée sur le temps de trajet dans votre interface utilisateur, vous donnez aux demandeurs d'emploi la possibilité de restreindre leurs recherches à une zone géographique définie par leur temps de trajet domicile-travail. La recherche basée sur le temps de trajet évalue le temps de trajet domicile-travail en fonction du mode de transport choisi par l'utilisateur et du moment de la journée auquel il compte effectuer ses trajets.

  1. Pour pouvoir mettre en œuvre la recherche d'emploi basée sur le temps de trajet, vous devez avoir connecté Cloud Talent Solution à votre interface utilisateur. Suivez les guides de quickstart pour configurer Cloud Talent Solution.

  2. La recherche basée sur le temps de trajet s'appuie sur les données d'adresse que vous avez téléchargées avec vos offres d'emploi lors de la mise en œuvre de CTS pour calculer le temps de trajet. Pour activer cette fonctionnalité dans votre interface utilisateur CTS existante, envoyez une requête jobs.search en incluant un objet CommuteFilter dans le champ JobQuery.commuteFilter. Les champs commuteMethod, travelDuration et startCoordinates sont obligatoires.

    Java

    Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

    
    public static void commuteSearch(String companyName) throws IOException, InterruptedException {
      // Make sure to set the requestMetadata the same as the associated search request
      RequestMetadata requestMetadata =
          new RequestMetadata()
              // Make sure to hash your userID
              .setUserId("HashedUserId")
              // Make sure to hash the sessionID
              .setSessionId("HashedSessionID")
              // Domain of the website where the search is conducted
              .setDomain("www.google.com");
      JobQuery jobQuery =
          new JobQuery()
              .setCommuteFilter(
                  new CommuteFilter()
                      .setRoadTraffic("TRAFFIC_FREE")
                      .setCommuteMethod("TRANSIT")
                      .setTravelDuration("1000s")
                      .setStartCoordinates(
                          new LatLng().setLatitude(37.422408).setLongitude(-122.085609)));
      if (companyName != null) {
        jobQuery.setCompanyNames(Arrays.asList(companyName));
      }
    
      SearchJobsRequest searchJobsRequest =
          new SearchJobsRequest()
              .setJobQuery(jobQuery)
              .setRequestMetadata(requestMetadata)
              .setJobView("JOB_VIEW_FULL")
              .setRequirePreciseResultSize(true);
      SearchJobsResponse response =
          talentSolutionClient
              .projects()
              .jobs()
              .search(DEFAULT_PROJECT_ID, searchJobsRequest)
              .execute();
      Thread.sleep(1000);
      System.out.printf("Search jobs for commute results: %s\n", response);
    }

    Python

    Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

    def commute_search(client_service, company_name):
        request_metadata = {
            "user_id": "HashedUserId",
            "session_id": "HashedSessionId",
            "domain": "www.google.com",
        }
        start_location = {"latitude": 37.422408, "longitude": -122.085609}
        commute_preference = {
            "road_traffic": "TRAFFIC_FREE",
            "commute_method": "TRANSIT",
            "travel_duration": "1000s",
            "start_coordinates": start_location,
        }
        job_query = {"commute_filter": commute_preference}
        if company_name is not None:
            job_query.update({"company_names": [company_name]})
        request = {
            "job_query": job_query,
            "request_metadata": request_metadata,
            "job_view": "JOB_VIEW_FULL",
            "require_precise_result_size": True,
        }
        response = (
            client_service.projects().jobs().search(parent=parent, body=request).execute()
        )
        print(response)
    
    

    Go

    Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

    
    // commuteSearch searches for jobs within commute filter.
    func commuteSearch(w io.Writer, projectID, companyName string) (*talent.SearchJobsResponse, error) {
    	ctx := context.Background()
    
    	client, err := google.DefaultClient(ctx, talent.CloudPlatformScope)
    	if err != nil {
    		return nil, fmt.Errorf("google.DefaultClient: %w", err)
    	}
    	// Create the jobs service client.
    	service, err := talent.New(client)
    	if err != nil {
    		return nil, fmt.Errorf("talent.New: %w", err)
    	}
    
    	jobQuery := &talent.JobQuery{
    		CommuteFilter: &talent.CommuteFilter{
    			RoadTraffic:    "TRAFFIC_FREE",
    			CommuteMethod:  "TRANSIT",
    			TravelDuration: "1000s",
    			StartCoordinates: &talent.LatLng{
    				Latitude:  37.422408,
    				Longitude: -122.085609,
    			},
    		},
    	}
    	if companyName != "" {
    		jobQuery.CompanyNames = []string{companyName}
    	}
    
    	parent := "projects/" + projectID
    	req := &talent.SearchJobsRequest{
    		// Make sure to set the RequestMetadata the same as the associated
    		// search request.
    		RequestMetadata: &talent.RequestMetadata{
    			// Make sure to hash your userID.
    			UserId: "HashedUsrId",
    			// Make sure to hash the sessionID.
    			SessionId: "HashedSessionId",
    			// Domain of the website where the search is conducted.
    			Domain: "www.googlesample.com",
    		},
    		// Set the actual search term as defined in the jobQuery.
    		JobQuery: jobQuery,
    		// Set the search mode to a regular search.
    		SearchMode:               "JOB_SEARCH",
    		RequirePreciseResultSize: true,
    	}
    	resp, err := service.Projects.Jobs.Search(parent, req).Do()
    	if err != nil {
    		return nil, fmt.Errorf("failed to search for jobs with commute filter: %w", err)
    	}
    	return resp, nil
    }
    

    Ruby

    Pour en savoir plus sur l'installation et la création d'un client Cloud Talent Solution, consultez la page Bibliothèques clientes Cloud Talent Solution.

    # project_id              = "Id of the project"
    # commute_method          = "The method of transportation for which to calculate the commute time"
    # travel_duration         = "The maximum travel time in seconds"
    # start_coordinates       = "The latitude and longitude of the location from which to calculate the commute time"
    
    require "google/apis/jobs_v3"
    
    jobs = Google::Apis::JobsV3
    talent_solution_client = jobs::CloudTalentSolutionService.new
    # @see https://developers.google.com/identity/protocols/application-default-credentials#callingruby
    talent_solution_client.authorization = Google::Auth.get_application_default(
      "https://www.googleapis.com/auth/jobs"
    )
    
    # Make sure to set the request_metadata the same as the associated search request
    request_metadata = jobs::RequestMetadata.new user_id:    "HashedUserId",
                                                 session_id: "HashedSessionId",
                                                 domain:     "www.google.com"
    # Set location filter
    commute_filter = jobs::CommuteFilter.new road_traffic:      "TRAFFIC_FREE",
                                             commute_method:    commute_method,
                                             travel_duration:   travel_duration,
                                             start_coordinates: start_coordinates
    # Perform a search for analyst  related jobs
    search_jobs_request =
      jobs::SearchJobsRequest.new request_metadata:            request_metadata,
                                  job_query:                   (jobs::JobQuery.new commute_filter: commute_filter),
                                  job_view:                    "JOB_VIEW_FULL",
                                  require_precise_result_size: true
    search_jobs_response = talent_solution_client.search_jobs project_id, search_jobs_request
    puts search_jobs_response.to_json
    search_jobs_response

Recommandations relatives à votre interface utilisateur

  1. Cloud Talent Solution ne permet pas de faire porter une recherche à la fois sur la distance (via un filtre d'emplacement CTS) ET sur le temps de trajet. Pour permettre aux chercheurs d'emploi d'accéder aux deux options, recourez à un dispositif à deux onglets ou à une approche équivalente.

  2. Modifiez l'interface de votre application de sorte que, lorsqu'un demandeur d'emploi envoie une requête de recherche basée sur le temps de trajet, le serveur backend insère les informations pertinentes dans le filtre de temps de trajet et appelle l'API comme il le ferait pour une requête de recherche normale.

  3. Intégrez ces éléments nouvellement ajoutés dans votre interface utilisateur :

    • une option permettant d'indiquer si la recherche doit être basée sur la distance ou sur le temps de trajet. Par exemple, votre interface de recherche pourrait se présenter comme suit :

    • un menu déroulant proposant les différents modes de transport ;

    • une option permettant d'ajuster les conditions de circulation ;

    • la durée totale du trajet (la durée maximale de trajet autorisée est de 60 minutes) ;

    • l'heure de début du trajet.

  4. Les informations relatives au temps de trajet renvoyées par l'API sont ensuite utilisées pour présenter des informations au demandeur d'emploi. Seules les offres d'emploi pertinentes situées dans la zone géographique correspondant au temps de trajet indiqué sont renvoyées dans la liste des résultats. Reportez-vous à la documentation Meilleures pratiques relatives à la recherche d'emploi pour une discussion sur les moyens de modifier l'ordre et le nombre des offres d'emploi renvoyées pour cette zone.

L'API Maps vous permet de générer une carte basée sur les informations de temps de trajet renvoyées par l'API CTS et d'intégrer celle-ci aux résultats renvoyés à un demandeur d'emploi. La suite API Google Maps propose différentes options pour afficher une telle carte. Certaines options de l'API Google Maps sont plus efficaces que d'autres. Par exemple, la visualisation des cartes de densité JavaScript Google Maps associée au regroupement de marqueurs constitue un excellent moyen d'afficher les offres d'emploi pertinentes qui sont renvoyées à un demandeur d'emploi en fonction d'une zone déterminée par ses préférences de trajet domicile-travail. En revanche, le mode Itinéraire n'affiche pas la totalité des offres d'emploi renvoyées dans le cadre d'une requête de recherche et ne constitue donc pas une option recommandée.

Pour plus d'informations sur la mise en œuvre d'une recherche basée sur le temps de trajet domicile-travail, consultez le Guide d'utilisation de la recherche d'emploi basée sur le temps de trajet.