Auto-validations

Explication du fonctionnement des auto-validations et de l'impact sur l'API

Nous avons mis en place un système d'auto-validations ayant pour objectifs de valider les missions après un certain délai si cela n'a pas été fait par le salarié ou le gestionnaire :

  • validation salarié un jour ouvré après le démarrage de la mission (moment où la première activité est ajoutée dans la mission pour un utilisateur)

  • validation gestionnaire deux jours ouvrés après la validation salarié

L'auto-validation ne s'effectue qu'en cas d'oubli de validation dans le délai imparti.

L'objet MissionValidation contient un nouveau champ is_auto . De plus le champ submitter peut être null (car une auto-validation n'a pas de submitter).

validations {
  id
  isAdmin
  isAuto     # NEW: true pour une auto-validation
  justification
  userId
  receptionTime
  missionId
  submitter { # peut être null
    id
    firstName
    lastName
  }
}

Auto-validation salarié

Une auto-validation salarié est équivalente à une validation salarié classique, il n'est plus possible pour le salarié de modifier ou de valider la mission.

Si un salarié tente de valider une mission auto-validée une erreur sera retournée

class MissionAlreadyAutoValidatedError(MobilicError):
    code = "MISSION_ALREADY_AUTO_VALIDATED"
    default_message = "This mission has already been automatically validated"

Auto-validation gestionnaire

Un gestionnaire peut toujours modifier/valider une mission auto-validée à sa place, mais dans ce cas il est nécessaire d'ajouter un argument justification qui peut prendre un des valeurs suivantes :

  • personal

  • professional

  • time_off

class OverValidationJustification(str, Enum):
    PERSONAL = "personal"
    PROFESSIONAL = "professional"
    TIME_OFF = "time_off"
    __description__ = """
Enumération des valeurs suivantes.
- "personal" : Raisons personnelles
- "professional" : Raisons professionnelles
- "time_off" : Congé
"""

mutation de validation gestionnaire :

mutation validateMission(
    $missionId: Int!
    $usersIds: [Int]!
    $creationTime: TimeStamp
    $activityItems: [BulkActivityItem]
    $expendituresCancelIds: [Int]
    $expendituresInputs: [BulkExpenditureItem]
    $justification: OverValidationJustificationEnum # NEW: argument nécessaire si la mission a déja été auto-validée
  ) {
    activities {
      validateMission(
        missionId: $missionId
        usersIds: $usersIds
        creationTime: $creationTime
        activityItems: $activityItems
        expendituresCancelIds: $expendituresCancelIds
        expendituresInputs: $expendituresInputs
        justification: $justification # NEW: argument nécessaire si la mission a déja été auto-validée
      ) {
        ...FullMissionData
      }
    }

Mis à jour