# Score
  Le total du score est stocké sur la demande et candidature dans le champs `profile_score`. 
  
  Ce champs test filtrable/triable sur les routes des demandes et candidatures 

    GET /api/dmo/housing_offers/:id/eligible_requests?sort[profile_score]=-1

  Le détails du score est stocké dans le champs `score_details` uniquement dans la demande, ce champs n'est pas filtrable/triable
  ```json
  "score_details": {
    "seniority_points": 0,
    "under_30_year_points": 0,
    "bonus_points": 0,
    "entity_validated_points": 0,
    "priority_points": 0,
    "professional_mobility_points": 0,
    "closer_to_workplace_points": 0,
    "violence_points": 0,
    "handicap_points": 0,
    "workplace_insee_code_points": 0,
    "application_rejected_points": 0,
    "application_not_selected_points": 0,
    "application_taken_back_points": 0,
  }
  ```

## Recalcul du score: 

* Lorsqu'une demande passe au status COMPLETE ou EN ATTENTE DE PIECES
* Lorsque un des champs lié sur la demande est modifié et que la demande a déja eu un score

## Ajout de points

Il est possible d'ajouter des points à une demande via les champs `priority_points_indexes` et `bonus_points`

## Détails des calculs 

  * seniority_points : mois d'ancienneté, les 12 premiers mois comptent pour 1 point, les 12 suivant pour 2 points et les mois après 24 comptent pour 3 points. Il y a un job qui le recalcul tous les mois.
  * under_30_year_points : 70 points ajoutés si le demandeur principal à moins de 30 ans, il n'y a pas de job de mise à jour de ce champs. Il est recalculé quand on met à jour la demande ou le score.
  * bonus_points : Points ajoutables via l'API
  * entity_validated_points : 240 ajoutés quand la demandes à entity_validated: true, avec un consent_level différent de 1 et non nul et dont l'applicant_used_for_siret.work_contract_type est CDIP, CDI ou  APP
  * priority_points : Somme des points du champs priority_points_indexes si la demande est validée
  * professional_mobility_points : 70 points ajoutés si les motivations contiennent la valeur 28
  * closer_to_workplace_points : 120 points ajoutés si les motivations contiennent la valeur 19
  * violence_points : 40 points ajoutés si les motivations contiennent la valeur 06
  * handicap_points : 40 points ajoutés si le champs disability_details contient sensory_disability_kinds avec DA ou DV ou alors le champs physical_disability_kinds avec MS ou MI
  * workplace_insee_code_points : 40 points ajoutés si le code insee de l'offre liée à la candidature active corresponds au workplace_insee_code de l'applicant_used_for_siret. Ce champs n'est pas mise à jour quand le code insee du demandeur ou de l'offre change, uniquement à la creation/suppresion de la candidature.
  * application_rejected_points : 40 points ajoutés par candidature REFUSEE EN CAL sur cette demande, le total des candidatures est stocké dans `application_rejected_nb`
  * application_not_selected_points : 5 points ajoutés par candidature NON RETENUE sur cette demande (max 100 pts), le total des candidatures est stocké dans `application_not_selected_nb`
  * application_taken_back_points : 40 points ajoutés par candidature REPRIS BAILLEUR sur cette demande, le total des candidatures est stocké dans `application_taken_back_nb`