Esempio n. 1
0
def _a_required_diploma(scoring_project: scoring_base.ScoringProject) -> str:
    diplomas = scoring_project.requirements().diplomas
    if not diplomas:
        logging.warning(
            'Trying to show required diplomas when there are none.\n%s',
            str(scoring_project))
        return scoring_project.translate_static_string('un diplôme')
    return scoring_project.translate_static_string(
        'un {diplomas} ou équivalent').format(diplomas=diplomas[0].name)
Esempio n. 2
0
    def score_and_explain(self, project: scoring_base.ScoringProject) \
            -> scoring_base.ExplainedScore:
        """Compute a score for the given ScoringProject."""

        # This job group has jobs that are too different to consider them as a
        # small change.
        if project.details.target_job.job_group.rome_id in _EXCLUDE_JOB_LIST:
            return scoring_base.NULL_EXPLAINED_SCORE

        specific_jobs = project.requirements().specific_jobs
        if not specific_jobs or specific_jobs[
                0].code_ogr == project.details.target_job.code_ogr:
            return scoring_base.NULL_EXPLAINED_SCORE

        try:
            target_job_percentage = next(
                j.percent_suggested for j in specific_jobs
                if j.code_ogr == project.details.target_job.code_ogr)
        except StopIteration:
            target_job_percentage = 0

        has_way_better_job = target_job_percentage + 30 < specific_jobs[
            0].percent_suggested
        has_better_job = target_job_percentage + 5 < specific_jobs[
            0].percent_suggested
        is_looking_for_new_job = project.details.kind == project_pb2.REORIENTATION

        reasons = []
        if has_way_better_job:
            reasons.append(
                project.translate_static_string(
                    "il y a beaucoup plus d'offres dans des métiers proches"))
        elif (project.get_search_length_at_creation() > 6 and has_better_job):
            reasons.append(
                project.translate_static_string(
                    "il y a plus d'offres dans des métiers proches"))
        if is_looking_for_new_job:
            reasons.append(
                project.translate_static_string(
                    'vous nous avez dit vouloir vous reconvertir'))
        if reasons:
            return scoring_base.ExplainedScore(3, reasons)
        return scoring_base.ExplainedScore(2, [
            project.translate_static_string(
                "il y a un bon nombre d'offres dans des métiers proches")
        ])