fix(preventive): signal unknown task durations
Some checks are pending
CI - Tests et Syntax / lint-and-test (push) Waiting to run

This commit is contained in:
root 2026-08-23 12:19:16 +00:00
parent 0f6770611f
commit 4ae1d9925a
3 changed files with 9 additions and 9 deletions

View file

@ -232,7 +232,8 @@ class Intervention(db.Model):
Sinon si estimated_duration existe (duree manuelle), on l'utilise. Sinon si estimated_duration existe (duree manuelle), on l'utilise.
Sinon on calcule la moyenne des durees reelles des interventions Sinon on calcule la moyenne des durees reelles des interventions
passees sur le meme equipement + meme type. passees sur le meme equipement + meme type.
Fallback: 60 minutes par defaut. Sans durée connue, retourne 0 : le moteur signale alors « durée à
renseigner » au lieu d'inventer une heure.
""" """
if self.actual_duration: if self.actual_duration:
return self.actual_duration return self.actual_duration
@ -467,7 +468,7 @@ class LotTask(db.Model):
).scalar() ).scalar()
if avg and avg > 0: if avg and avg > 0:
return int(round(avg)) return int(round(avg))
return 60 return 0
def __repr__(self): def __repr__(self):
return f"<LotTask {self.num_tache or self.id}>" return f"<LotTask {self.num_tache or self.id}>"

View file

@ -68,9 +68,8 @@ création initiale passe par l'assistant, désormais indiqué depuis la liste de
lots. lots.
La durée et la périodicité sont donc des champs UI de `LotTask`. Attention : La durée et la périodicité sont donc des champs UI de `LotTask`. Attention :
`LotTask.effective_duration()` conserve un fallback historique de 60 minutes `LotTask.effective_duration()` ne fabrique plus une durée de 60 minutes si
si aucune durée n'est saisie ; ce comportement doit rester visible et être aucune durée n'est saisie : la tâche est signalée comme à renseigner. La génération
remplacé ou confirmé avant une validation métier définitive. La génération
préventive complète depuis un lot et deux équipements n'a pas été rejouée via préventive complète depuis un lot et deux équipements n'a pas été rejouée via
UI dans cette passe : elle reste **NON VALIDÉE**. UI dans cette passe : elle reste **NON VALIDÉE**.

View file

@ -25,10 +25,10 @@ préventives. Le dump contient 36 catégories et 92 lots, déjà représentés d
- les valeurs `jours_entre_interventions`, type, contrat, gestionnaire, - les valeurs `jours_entre_interventions`, type, contrat, gestionnaire,
déclenchement et politiques ont été conservées lorsqu'elles existent. déclenchement et politiques ont été conservées lorsqu'elles existent.
La valeur de 60 minutes de `LotTask.effective_duration()` n'est pas présente La valeur historique de 60 minutes n'est pas présente dans le dump : c'était
dans le dump : c'est un fallback du code actuel, pas une donnée historique. un fallback du code, pas une donnée métier. Il est maintenant supprimé : une
Elle reste temporairement compatible avec les anciennes données, mais une tâche tâche sans durée retourne 0 et doit être renseignée avant planification
sans durée doit être signalée avant une validation métier définitive. automatique.
## Catalogue embarqué ## Catalogue embarqué