docs(phase21b): documenter le workflow preventif

This commit is contained in:
root 2026-08-23 14:02:47 +00:00
parent c2cdacb0fa
commit a23e01b4ab
6 changed files with 66 additions and 15 deletions

View file

@ -563,3 +563,11 @@ oubliées, dont les quatre fonctions ENT/Pronote signalées. Elles sont
maintenant représentées dans `Ancien menu > Configuration` et dans la matrice maintenant représentées dans `Ancien menu > Configuration` et dans la matrice
(`MENU_MIGRATION_MATRIX.md`). Aucun endpoint, contrôle RBAC ou comportement (`MENU_MIGRATION_MATRIX.md`). Aucun endpoint, contrôle RBAC ou comportement
d'intégration n'a été modifié. Nouveau total : 76/76. d'intégration n'a été modifié. Nouveau total : 76/76.
### Phase 2.1b
- Les 147 durées annoncées ne correspondent actuellement qu'à 132 lignes
numériques dans le document de proposition ; l'écart est documenté et ne
doit pas être comblé par une valeur arbitraire.
- La sélection en masse filtrée des équipements et le raccord automatique des
durées espaces verts aux tâches de lot restent à faire.

View file

@ -172,3 +172,8 @@ données existantes de la copie VM.
Le mot de passe du compte de test est local uniquement et n'est pas stocké Le mot de passe du compte de test est local uniquement et n'est pas stocké
dans ce dépôt. dans ce dépôt.
## Phase 2.1b
Aucune donnée `TEST_UI_PHASE21B_*` n'a été créée dans cette passe : les
scénarios entreprise doivent être rejoués depuis l'interface avant validation.

View file

@ -8,9 +8,18 @@ possède également lentreprise, le contrat, léquipement, la salle,
laffectation et les dates prévues/réelles. `ContractVisit` représente une laffectation et les dates prévues/réelles. `ContractVisit` représente une
visite de contrat avec une date et un statut. visite de contrat avec une date et un statut.
Cette base permet dassocier une tâche à une entreprise, mais ne distingue pas Cette base permet d'associer une tâche à une entreprise, mais ne distingue pas
encore proprement : date déchéance, rendez-vous avec heure, passage libre, encore proprement : date d'échéance, rendez-vous avec heure, passage libre,
arrivée réelle, non-venue et temps daccompagnement du technicien. arrivée réelle, non-venue et temps d'accompagnement du technicien.
## Implémentation Phase 2.1b
La migration `i4d5e6f7a8b9` et la page **Passages & contrôles** couvrent les
modes « Sur rendez-vous », « Date connue, heure inconnue » et « Passage libre »,
ainsi que la date réelle, l'arrivée, la non-venue et l'accompagnement
ponctuel/complet. Un rendez-vous avec heures devient une contrainte fixe de
`DayPlanner`; les autres modes sont des informations non bloquantes jusqu'à
l'arrivée de l'entreprise.
## Parcours métier proposé ## Parcours métier proposé

View file

@ -47,34 +47,46 @@ verts.
Les champs existants `company_id`, `contract_id`, `periodicite` et Les champs existants `company_id`, `contract_id`, `periodicite` et
`jours_entre_interventions` sont exposés dans la fiche de tâche, ainsi que le `jours_entre_interventions` sont exposés dans la fiche de tâche, ainsi que le
type d'exécutant. En revanche, le workflow complet de passage (rendez-vous, type d'exécutant. La migration `i4d5e6f7a8b9` ajoute les modes `appointment`,
fenêtre, non-venue, date réelle, accompagnement et tableau Passages & `date_only` et `open_window`, les heures/fenêtres, la date réelle, l'arrivée,
contrôles) n'est pas encore implémenté dans cette passe. `ContractVisit` ne l'accompagnement et le technicien. La page **Passages & contrôles** permet
porte actuellement qu'une date obligatoire et ne peut pas représenter les actions Réalisée, Non venue et Entreprise arrivée. Un rendez-vous avec
fidèlement les trois modes demandés sans migration métier dédiée. heures est transmis à `DayPlanner` comme contrainte fixe ; les autres modes
restent informatifs et ne bloquent pas une plage horaire.
Le fichier `preventive_duration_proposals.py` embarque les **132** valeurs
numériques effectivement présentes dans la proposition documentaire. Elles
sont appliquées uniquement aux nouvelles lignes de catalogue dont la durée est
vide ; les personnalisations existantes ne sont jamais écrasées. L'écart avec
les 147 valeurs minimales annoncées doit être clarifié métier avant d'ajouter
des valeurs.
## Migration ## Migration
`h3c4d5e6f7a8_phase21b_preventive_scope.py` ajoute sans perte : `h3c4d5e6f7a8_phase21b_preventive_scope.py` et
`i4d5e6f7a8b9_phase21b_contract_visits.py` ajoutent sans perte :
- les trois colonnes de qualification à `lot_tasks` ; - les trois colonnes de qualification à `lot_tasks` ;
- la table d'association `lot_task_equipments` ; - la table d'association `lot_task_equipments` ;
- les quatre durées d'espaces verts à `zones`. - les quatre durées d'espaces verts à `zones`.
- les données de passage entreprise à `contract_visits`.
La migration est additive et possède un downgrade. Elle n'attribue aucun La migration est additive et possède un downgrade. Elle n'attribue aucun
horaire, lot ou exécutant à `alban`. horaire, lot ou exécutant à `alban`.
## Tests ajoutés ## Tests ajoutés
`tests/unit/test_preventive_scope.py` couvre le calcul par quantité, le forfait `tests/unit/test_preventive_scope.py` et
par cible et l'absence explicite de durée. La compilation Python et le `tests/unit/test_external_maintenance_visit.py` couvrent le calcul par
quantité, les modes de passage, le forfait par cible et l'absence explicite de durée. La compilation Python et le
chargement des modèles passent. La suite intégration locale est actuellement chargement des modèles passent. La suite intégration locale est actuellement
bloquée par l'erreur historique de teardown (`equipment_lifecycle_events` bloquée par l'erreur historique de teardown (`equipment_lifecycle_events`
absente de la base de test), déjà présente avant cette passe. absente de la base de test), déjà présente avant cette passe.
## État de validation ## État de validation
Cette passe est **partiellement validée** : la durée unitaire, le périmètre et Cette passe est **partiellement validée** : durée unitaire, périmètre, durées
les durées de zone ont une base persistante et une UI simple ; le workflow de zone et workflow de passage de base sont persistants et exposés dans l'UI.
entreprise complet et le scénario intégral sans intervention technique restent La sélection en masse avancée, le raccord automatique espaces verts → lot et
à réaliser. Phase 2.2 non commencée. le scénario intégral sans intervention technique restent à renforcer. Phase
2.2 non commencée.

View file

@ -506,3 +506,12 @@ aux administrateurs.
teardown. teardown.
- Validation visuelle réelle non exécutée : aucun navigateur instrumenté - Validation visuelle réelle non exécutée : aucun navigateur instrumenté
disponible ; contrôles HTTP et HTML effectués. disponible ; contrôles HTTP et HTML effectués.
## Phase 2.1b — préventif et passages entreprise
- Durée unitaire, périmètre dynamique/manuel, exécutant et durées d'espaces
verts ajoutés via migration additive.
- Passages entreprise : rendez-vous, date sans heure, passage libre, arrivée,
non-venue, date réelle et accompagnement ; page `Passages & contrôles`.
- Phase partiellement validée : sélection en masse avancée et scénario complet
UI restent à compléter.

View file

@ -376,3 +376,11 @@ administrables par technicien et isolés dans `DayPlanner`. En revanche, la
chaîne préventive complète n'a pas été configurée depuis l'UI : les données chaîne préventive complète n'a pas été configurée depuis l'UI : les données
Phase 2.1 historiques venaient de scripts/fixtures. Aucun lot ou équipement Phase 2.1 historiques venaient de scripts/fixtures. Aucun lot ou équipement
marqué Phase 2.1 n'était présent dans la copie VM inspectée. marqué Phase 2.1 n'était présent dans la copie VM inspectée.
## Phase 2.1b
La durée par élément et les périmètres d'équipements sont persistants et
modifiables. Les passages entreprise disposent de trois modes et d'un suivi
réalisé/non-venue. La phase reste **PARTIELLEMENT VALIDÉE** : la sélection en
masse et le scénario de bout en bout n'ont pas encore été rejoués entièrement
depuis l'interface.