From e73a2e8fa843d7dc263cb5ddc156ea8183380657 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 22 Aug 2026 22:44:25 +0000 Subject: [PATCH] docs(audit): document phase 1 implementation --- docs/ui-audit/BUGS.md | 18 +++---- docs/ui-audit/CREATED_TEST_DATA.md | 9 ++++ docs/ui-audit/IMPLEMENTATION_PHASE1.md | 74 ++++++++++++++++++++++++++ docs/ui-audit/PAGES_MATRIX.md | 13 ++++- docs/ui-audit/PROGRESS.md | 26 +++++++++ docs/ui-audit/REPORT.md | 8 +-- 6 files changed, 132 insertions(+), 16 deletions(-) create mode 100644 docs/ui-audit/IMPLEMENTATION_PHASE1.md diff --git a/docs/ui-audit/BUGS.md b/docs/ui-audit/BUGS.md index 3abb8ef..09ac421 100644 --- a/docs/ui-audit/BUGS.md +++ b/docs/ui-audit/BUGS.md @@ -490,19 +490,17 @@ profil de demande. Statut : **VALIDÉ LOCALEMENT SUR COPIE VM**. ## 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. -- **Constat** : les documents sont exposés dans les fiches équipement, - intervention et produits d'entretien ; aucune route d'index documentaire - globale n'est clairement prévue. +- **Reproduction historique** : `GET /documents/` répondait HTTP 404. +- **Correction Phase 1** : route globale par adaptateurs en lecture, + agrégation interventions/équipements/produits et vue FDS ; aucun fichier + ni document métier n'est dupliqué. - **Impact** : un utilisateur peut suivre une URL ou chercher « Documents » et recevoir une erreur au lieu d'une orientation. -- **Statut** : **OUVERT — P2 / décision fonctionnelle nécessaire**. -- **Recommandation** : choisir entre un centre documentaire global (recherche, - permissions et catégories à définir) ou supprimer/redirecter le lien global - vers les pages documentaires existantes. Proposition détaillée dans - `UX_PROPOSALS.md`. Aucun module nouveau n'a été ajouté pendant l'audit. +- **Statut** : **CORRIGÉ DANS LE CODE — À REVALIDER SUR VM**. +- **Limites** : Contract, prévention et documents sensibles restent hors V1 ; + téléchargement refusé si le fichier physique est absent ou hors racine. ### Observations UX non corrigées diff --git a/docs/ui-audit/CREATED_TEST_DATA.md b/docs/ui-audit/CREATED_TEST_DATA.md index 953b13e..f2b4983 100644 --- a/docs/ui-audit/CREATED_TEST_DATA.md +++ b/docs/ui-audit/CREATED_TEST_DATA.md @@ -129,3 +129,12 @@ modifiée. 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. + +## 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. diff --git a/docs/ui-audit/IMPLEMENTATION_PHASE1.md b/docs/ui-audit/IMPLEMENTATION_PHASE1.md new file mode 100644 index 0000000..de410d1 --- /dev/null +++ b/docs/ui-audit/IMPLEMENTATION_PHASE1.md @@ -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//` : 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. diff --git a/docs/ui-audit/PAGES_MATRIX.md b/docs/ui-audit/PAGES_MATRIX.md index 1fe1f90..2a733dd 100644 --- a/docs/ui-audit/PAGES_MATRIX.md +++ b/docs/ui-audit/PAGES_MATRIX.md @@ -106,8 +106,17 @@ activement. | 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 | | 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é | -| 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 | diff --git a/docs/ui-audit/PROGRESS.md b/docs/ui-audit/PROGRESS.md index 156590b..84ecac2 100644 --- a/docs/ui-audit/PROGRESS.md +++ b/docs/ui-audit/PROGRESS.md @@ -369,3 +369,29 @@ Date : 22 août 2026 Aucune route, migration, permission, modèle, template, synchronisation ou fonctionnalité n'a été créée. Développement conditionné à la validation des 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. diff --git a/docs/ui-audit/REPORT.md b/docs/ui-audit/REPORT.md index 5abeb9f..4a976f5 100644 --- a/docs/ui-audit/REPORT.md +++ b/docs/ui-audit/REPORT.md @@ -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 se trouve dans `UX_PROPOSALS.md` et n'est pas implémentée. -`/documents/` répond toujours 404 (UI-011). Les documents sont actuellement -gérés dans les fiches intervention, équipement et produits d'entretien ; la -décision entre centre documentaire global et suppression du lien global reste -à valider. +Le Centre documentaire global est désormais implémenté localement sur la +copie VM : `/documents/` et `/documents/fds` agrègent en lecture les documents +d'interventions, d'équipements et de produits sans copier les fichiers. UI-011 +est corrigé dans le code et reste à revalider sur une VM distante si exigé. ### Expérience débutant