docs(audit): document phase 1 implementation

This commit is contained in:
root 2026-08-22 22:44:25 +00:00
parent ff507130da
commit e73a2e8fa8
6 changed files with 132 additions and 16 deletions

View file

@ -490,19 +490,17 @@ profil de demande. Statut : **VALIDÉ LOCALEMENT SUR COPIE VM**.
## Phase finale — éléments encore ouverts ## Phase finale — éléments encore ouverts
### UI-011 — centre documentaire global absent ### UI-011 — centre documentaire global absent (corrigé localement)
- **Reproduction locale** : `GET /documents/` répond HTTP 404. - **Reproduction historique** : `GET /documents/` répondait HTTP 404.
- **Constat** : les documents sont exposés dans les fiches équipement, - **Correction Phase 1** : route globale par adaptateurs en lecture,
intervention et produits d'entretien ; aucune route d'index documentaire agrégation interventions/équipements/produits et vue FDS ; aucun fichier
globale n'est clairement prévue. ni document métier n'est dupliqué.
- **Impact** : un utilisateur peut suivre une URL ou chercher « Documents » - **Impact** : un utilisateur peut suivre une URL ou chercher « Documents »
et recevoir une erreur au lieu d'une orientation. et recevoir une erreur au lieu d'une orientation.
- **Statut** : **OUVERT — P2 / décision fonctionnelle nécessaire**. - **Statut** : **CORRIGÉ DANS LE CODE — À REVALIDER SUR VM**.
- **Recommandation** : choisir entre un centre documentaire global (recherche, - **Limites** : Contract, prévention et documents sensibles restent hors V1 ;
permissions et catégories à définir) ou supprimer/redirecter le lien global téléchargement refusé si le fichier physique est absent ou hors racine.
vers les pages documentaires existantes. Proposition détaillée dans
`UX_PROPOSALS.md`. Aucun module nouveau n'a été ajouté pendant l'audit.
### Observations UX non corrigées ### Observations UX non corrigées

View file

@ -129,3 +129,12 @@ modifiée.
Le groupe importé ID 1 a été replacé dans sa salle d'origine après un essai Le groupe importé ID 1 a été replacé dans sa salle d'origine après un essai
de déplacement ; aucune donnée antérieure ni `alban` n'a été supprimée. de déplacement ; aucune donnée antérieure ni `alban` n'a été supprimée.
## Données ajoutées — Phase 1 locale — 22/08/2026
- Utilisateur `TEST_UI_PHASE1_ADMIN` (ID 6), compte administrateur temporaire
utilisé uniquement pour vérifier `/documents/` et `/planning/rooms` sur la
copie locale. Le mot de passe n'est pas documenté dans Git et le compte est
conservé pour inspection manuelle.
- Les tests automatisés créent des objets préfixés `Phase1` dans leur base de
test isolée ; aucune donnée `TEST_UI_*` existante n'a été nettoyée.

View file

@ -0,0 +1,74 @@
# Phase 1 — implémentation documentaire et planning interne
Date : 22 août 2026
Base de vérification : copie locale de la base MariaDB issue de la VM
Périmètre : fondations V1, sans moteur d'optimisation complet.
## Migration
`g1a2b3c4d5e6_phase1_documents_planning.py` (depuis
`9f4a1b2c3d5e`) ajoute :
- `document_type` indexé à `intervention_documents` et
`equipment_documents`, avec valeur historique `autre` ;
- provenance, identifiant externe, synchronisation, protection, statut de
résolution, période de validité, type d'événement et conflit à
`room_schedules` ;
- permission `documents.view` et ses attributions aux rôles métier existants.
La migration est idempotente sur les colonnes et préserve les lignes
existantes. Aucun fichier ni document métier n'est copié.
## Centre documentaire
Le service `app_new/documents/service.py` fournit des adaptateurs de lecture
pour `InterventionDocument`, `EquipmentDocument` et `ProductDocument`.
Chaque résultat expose sa source, son objet parent, son type, sa date, son
contexte, son téléchargement et sa localisation calculée. Les produits avec
plusieurs soldes affichent plusieurs emplacements.
Routes ajoutées :
- `/documents/` : recherche, filtres source/type/période, pagination ;
- `/documents/fds` : vue FDS des produits accessibles ;
- `/documents/download/<source>/<id>` : contrôle RBAC, racine de stockage,
existence du fichier et nom de téléchargement.
Le lien de navigation est conditionné à `documents.view`. Les permissions de
lecture du module source restent obligatoires ; aucune permission
`documents.manage` ou `documents.download` n'est créée.
## Planning interne des salles
`app_new/core/services/room_planning.py` est la vue résolue commune. Elle
ignore les créneaux désactivés/supplantés, permet à Pronote de supplanter un
manuel non protégé, conserve un manuel protégé et signale les conflits.
`sync_pronote_schedules()` reçoit uniquement des données normalisées et ne
contacte pas Pronote.
Routes ajoutées : `/planning/rooms` et `/planning/rooms/new`, avec protection
manuelle exprimée en français. Les détails de salle et l'affichage Pronote
réutilisent la résolution interne.
## Préventif et disponibilité
`PlanningService` délègue désormais la disponibilité de salle au service
interne. La durée existante d'une `ScheduledTask` est utilisée pour le contrôle
de créneau ; aucun solveur, replanificateur ou moteur multi-techniciens n'est
inclus dans cette phase.
## Tests et données
- `tests/integration/test_phase1_documents_planning.py` : 3 scénarios ciblés ;
- suites P1/formulaires/stock/interventions : 20 tests passants ;
- compte local `TEST_UI_PHASE1_ADMIN` conservé pour inspection manuelle ;
- aucune donnée `TEST_UI_*` supprimée et `alban` inchangé.
## Limites restantes
- synchronisation Pronote réelle et résolution de rapprochements ambigus à
brancher sur l'intégration existante ;
- optimisation journalière, replanification, tâches multi-techniciens et
classeur FDS hors périmètre ;
- revalidation VM distante et campagne complète responsive/accessibilité à
effectuer séparément.

View file

@ -106,8 +106,17 @@ activement.
| Page | URL | Résultat local | Commentaire | | Page | URL | Résultat local | Commentaire |
|---|---|---:|---| |---|---|---:|---|
| Centre documentaire global | `/documents/` | 404 | UI-011 ouvert ; documents disponibles dans leurs modules | | Centre documentaire global | `/documents/` | Implémenté localement | UI-011 corrigé dans le code ; revalidation VM à faire |
| FDS / fiches techniques | `/cleaning/documents` | 200 | Page stock documentaire | | FDS / fiches techniques | `/cleaning/documents` | 200 | Page stock documentaire |
| Détail équipement groupé | `/equipments/3` | 200 | Filtre `nl2br` enregistré ; quantité 30 affichée | | Détail équipement groupé | `/equipments/3` | 200 | Filtre `nl2br` enregistré ; quantité 30 affichée |
| Hiérarchie équipement groupé | `/equipments/3/hierarchy` | 200 | Bâtiment → zone → salle → quantité | | Hiérarchie équipement groupé | `/equipments/3/hierarchy` | 200 | Bâtiment → zone → salle → quantité |
| Health | `/health/` | 200 | Version finale `0.1.0-dev.4` à vérifier après rebuild | | Health | `/health/` | 200 | Version `0.1.0-dev.4` avant le bump Phase 1 |
### Phase 1 — nouvelles routes locales
| Fonction | URL | État local | Périmètre |
|---|---|---:|---|
| Centre documentaire | `/documents/` | Implémenté, à revalider après rebuild | Interventions, équipements, produits |
| FDS globales | `/documents/fds` | Implémenté, à revalider après rebuild | Produits d'entretien |
| Planning interne des salles | `/planning/rooms` | Implémenté, à revalider après rebuild | Saisie manuelle et créneaux résolus |
| Nouveau créneau salle | `/planning/rooms/new` | Implémenté | Permission planning.edit |

View file

@ -369,3 +369,29 @@ Date : 22 août 2026
Aucune route, migration, permission, modèle, template, synchronisation ou Aucune route, migration, permission, modèle, template, synchronisation ou
fonctionnalité n'a été créée. Développement conditionné à la validation des fonctionnalité n'a été créée. Développement conditionné à la validation des
questions listées dans les deux documents. questions listées dans les deux documents.
## Phase 1 d'implémentation — fondations documentaires et planning interne
Date de reprise : 22 août 2026 — URL locale `http://127.0.0.1:5080/`.
La migration `g1a2b3c4d5e6` a été appliquée à la copie locale de la base VM.
Elle ajoute les types documentaires intervention/équipement, la provenance et
la résolution des créneaux `RoomSchedule`, ainsi que la permission
`documents.view`. Les données `TEST_UI_*` et `alban` sont conservées.
Fondations livrées et testées localement :
- Centre documentaire en lecture `/documents/` et vue FDS `/documents/fds`,
agrégation par adaptateurs des interventions, équipements et produits,
recherche, filtres, pagination, localisation calculée et téléchargement
contrôlé sans stockage parallèle ;
- types métier intervention/équipement avec valeur historique `autre` ;
- planning interne `/planning/rooms`, saisie manuelle, protection contre la
synchronisation, provenance et résolution manuel/Pronote/import ;
- service de disponibilité de salle consommant uniquement la vue interne
résolue, sans appel direct à Pronote ; préparation de l'usage d'une durée
préventive existante.
Tests ciblés Phase 1 : **3 passed** ; suites P1/formulaires/stock/interventions :
**20 passed**. Le rebuild Docker et la revalidation HTTP sur la copie locale
restent à finaliser avant le bilan de phase.

View file

@ -258,10 +258,10 @@ restent toutefois très denses et regroupent des fonctions quotidiennes,
administratives et d'intégration ; la proposition de regroupement par tâches administratives et d'intégration ; la proposition de regroupement par tâches
se trouve dans `UX_PROPOSALS.md` et n'est pas implémentée. se trouve dans `UX_PROPOSALS.md` et n'est pas implémentée.
`/documents/` répond toujours 404 (UI-011). Les documents sont actuellement Le Centre documentaire global est désormais implémenté localement sur la
gérés dans les fiches intervention, équipement et produits d'entretien ; la copie VM : `/documents/` et `/documents/fds` agrègent en lecture les documents
décision entre centre documentaire global et suppression du lien global reste d'interventions, d'équipements et de produits sans copier les fichiers. UI-011
à valider. est corrigé dans le code et reste à revalider sur une VM distante si exigé.
### Expérience débutant ### Expérience débutant