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