docs(audit): document phase 1 implementation
This commit is contained in:
parent
ff507130da
commit
e73a2e8fa8
6 changed files with 132 additions and 16 deletions
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
74
docs/ui-audit/IMPLEMENTATION_PHASE1.md
Normal file
74
docs/ui-audit/IMPLEMENTATION_PHASE1.md
Normal 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.
|
||||||
|
|
@ -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 |
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue