Skip to content

Latest commit

 

History

History
704 lines (535 loc) · 33.9 KB

File metadata and controls

704 lines (535 loc) · 33.9 KB

RERO ILS — Protocole de test utilisateur (QA manuel)

Objectif : Vérifier le bon fonctionnement de toutes les interfaces utilisateur face à une mise à jour (Angular, dépendances, refactoring). Ce protocole couvre ce que les tests unitaires backend ne couvrent pas : l'affichage, les interactions, les mises à jour de listes, les formulaires, les retours visuels.

Prérequis : Environnement de test avec données de démonstration (fixtures RERO ILS). Comptes disponibles : visiteur anonyme, lecteur, bibliothécaire de succursale, bibliothécaire système, admin.

Convention :

  • [ ] — case à cocher pour chaque étape
  • ⚠️ — point souvent raté lors de migrations, vérifier attentivement
  • 🔒 — nécessite un rôle spécifique
  • 🔄 — vérifier que la liste/vue se met à jour sans rechargement manuel de la page

Table des matières

  1. Transversal & infrastructure
  2. Recherche (interface publique et admin)
  3. Interface publique — Détail document
  4. Interface publique — Profil lecteur
  5. Administration — Circulation (checkout/checkin)
  6. Administration — Gestion des lecteurs
  7. Administration — Catalogue (documents, exemplaires, holdings)
  8. Administration — Acquisitions
  9. Administration — Configuration
  10. Administration — Rapports & monitoring
  11. Administration — Migrations

1. Transversal & infrastructure

1.1 Authentification

# Étape OK
1.1.1 Login avec identifiants valides → redirection vers page d'accueil [ ]
1.1.2 Login avec identifiants invalides → message d'erreur affiché [ ]
1.1.3 Logout → session terminée, redirection vers login [ ]
1.1.4 ⚠️ Accès direct à une URL protégée sans session → redirection login, puis retour à l'URL d'origine [ ]
1.1.5 Session expirée : ouvrir DevTools → Application → Cookies → supprimer tous les cookies du domaine, puis tenter une action (ex. sauvegarder un formulaire) → redirection vers login, pas de crash silencieux ni page blanche [ ]

1.2 Navigation principale (admin)

# Étape OK
1.2.1 Menu principal visible avec ses 5 catégories : Services aux usagers, Catalogue, Acquisitions, Rapports, Admin [ ]
1.2.2 Sous-menus s'ouvrent au clic [ ]
1.2.3 ⚠️ Les raccourcis clavier fonctionnent (c → checkout, p → lecteurs, etc.) [ ]
1.2.4 🔒 Les entrées de menu masquées selon le rôle (bibliothécaire système = tous les menus VS rôle pro_circulation = pas de menus acquisitions par exemple) [ ]
1.2.5 Sélecteur de bibliothèque active présent et fonctionnel [ ]

1.3 Retours visuels — points de vérification ciblés

# Étape OK
1.3.1 Après un checkin réussi : toast de confirmation affiché. Après un checkin en erreur (exemplaire inconnu) : toast d'erreur avec message explicite [ ]
1.3.2 Après sauvegarde d'un formulaire (enregistrement lecteur ou notice bibliographique) : toast de succès affiché [ ]
1.3.3 Formulaire de création de lecteur : saisir un email déjà existant → message d'erreur inline sous le champ email. Saisir un nom d'utilisateur existant → message d'erreur inline sous ce champ [ ]
1.3.4 Formulaire de changement de mot de passe : saisir deux mots de passe différents → erreur inline visible. Après correction → erreur disparaît [ ]
1.3.5 Console navigateur : aucune erreur JavaScript critique (vérifier au moins 1× par module) [ ]

1.4 Changement de langue

# Étape OK
1.4.1 Sélecteur de langue accessible et fonctionnel [ ]
1.4.2 ⚠️ Après changement de langue, les labels d'interface sont bien traduits (pas de clé brute visible, ex. translate.key.path) [ ]

2. Recherche (interface publique et admin)

La plupart des comportements de cette section s'appliquent à la fois à l'interface publique et aux listes de ressources de l'interface admin (documents, lecteurs, exemplaires, commandes…). La recherche avancée (§ 2.3) est spécifique à l'admin.

2.1 Page d'accueil publique

# Étape OK
2.1.1 Page d'accueil charge sans erreur [ ]
2.1.2 Barre de recherche présente et focalisable [ ]
2.1.3 Saisie d'un terme et soumission → résultats affichés [ ]

2.2 Résultats de recherche

S'applique à la recherche publique et aux listes de l'admin.

# Étape OK
2.2.1 Liste de résultats affichée avec les données attendues (titre, auteur, date, disponibilité pour les documents) [ ]
2.2.2 Facettes (filtres) affichées, cliquables [ ]
2.2.3 ⚠️ Caractères spéciaux dans la recherche (*, ?, +) → résultats affichés sans encodage parasite visible dans l'URL (%2A ou équivalent), sans message d'erreur [ ]
2.2.4 Pagination fonctionne (page suivante, précédente, saut direct) [ ]
2.2.5 Tri des résultats change l'ordre affiché [ ]
2.2.6 Filtre par facette → liste se restreint, facette cochée visible [ ]
2.2.7 Retrait d'un filtre (croix) → liste revient à l'état précédent [ ]
2.2.8 Combinaison de plusieurs facettes actives simultanément [ ]
2.2.9 Recherche sans résultat → message "aucun résultat" affiché, pas d'erreur [ ]

2.3 Recherche experte (admin uniquement)

Accessible depuis les listes de ressources admin (documents, lecteurs…) via le lien "Recherche experte" / mode expert.

# Étape OK
2.3.1 Accès à la recherche experte depuis la liste des documents admin [ ]
2.3.2 Saisie d'une requête Elasticsearch/Lucene → résultats corrects [ ]
2.3.3 Retour en recherche simple → interface normale [ ]

3. Interface publique — Détail document

3.1 Onglet "Obtenir" (holdings et exemplaires)

# Étape OK
3.1.1 Onglet "Obtenir" affiché par défaut [ ]
3.1.2 Holdings de l'organisation affichés avec bibliothèque et localisation [ ]
3.1.3 ⚠️ Filtre par bibliothèque (multi-select) fonctionne et réduit la liste [ ]
3.1.4 Accordéon holding : clic sur l'en-tête ouvre/ferme le détail [ ]
3.1.5 Exemplaires listés avec statut de disponibilité, cote, localisation [ ]
3.1.6 Badge de disponibilité correct (disponible/emprunté/en transit) [ ]
3.1.7 Notes publiques des exemplaires affichées [ ]
3.1.8 Liens URL (texte intégral électronique) cliquables [ ]
3.1.9 ⚠️ Holdings d'autres organisations affichés dans une section séparée [ ]
3.1.10 Pagination des exemplaires si nombreux [ ]

3.2 Holdings sériaux (périodiques)

# Étape OK
3.2.1 Cote, énumération/chronologie affichées [ ]
3.2.2 ⚠️ Contenus supplémentaires, index, lacunes affichés si présents [ ]
3.2.3 ⚠️ "Ajouter une réclamation" → action déclenchée (bouton fonctionnel) [ ]

3.3 Demandes et PEB (usager connecté)

# Étape OK
3.3.1 🔒 Bouton "Demander" visible pour usager connecté [ ]
3.3.2 ⚠️ Bouton "Demander" disabled avec tooltip explicatif si demande impossible [ ]
3.3.3 Clic "Demander" → sélecteur de lieu de retrait affiché [ ]
3.3.4 Confirmation de la demande → message de succès, bouton change d'état [ ]
3.3.5 🔒 Bouton PEB visible depuis la vue globale pour usager connecté [ ]

3.4 Onglet "Description"

# Étape OK
3.4.1 Résumé, sujets, auteurs, éditeur affichés [ ]
3.4.2 ⚠️ Les champs conditionnels (spécifiques à certains types de documents) s'affichent pour les documents qui les ont et sont absents pour les autres (ex. informations de fiction pour les romans, notes de musique pour les partitions) [ ]
3.4.3 Liens vers les entités (auteurs, sujets) cliquables [ ]

3.5 Options d'export

# Étape OK
3.5.1 Boutons d'export présents [ ]
3.5.2 Export fonctionne et télécharge le fichier [ ]

4. Interface publique — Profil lecteur

Accès : usager connecté, interface publique

4.1 Navigation dans le profil

# Étape OK
4.1.1 Page profil accessible après login [ ]
4.1.2 ⚠️ Onglets visibles : Prêts, Demandes, Frais, Historique (si activé), PEB, Données personnelles [ ]
4.1.3 Code-barres usager affiché en haut [ ]
4.1.4 🔒 Sélecteur d'organisation pour usager multi-affilié [ ]

4.2 Onglet "Prêts"

# Étape OK
4.2.1 Liste des prêts en cours avec titre, bibliothèque, date d'échéance [ ]
4.2.2 ⚠️ Badge "En retard" affiché si date dépassée [ ]
4.2.3 ⚠️ Badge "Bientôt dû" affiché si proche échéance [ ]
4.2.4 Bouton "Prolonger" actif si renouvellement possible [ ]
4.2.5 ⚠️ Bouton "Prolonger" disabled avec tooltip explicatif si impossible [ ]
4.2.6 🔄 Après renouvellement : nouvelle date d'échéance affichée sans rechargement [ ]
4.2.7 Compteur de renouvellements mis à jour [ ]

4.3 Onglet "Demandes"

# Étape OK
4.3.1 Liste des demandes avec titre, statut, lieu de retrait [ ]
4.3.2 Statuts affichés : En attente, Disponible au guichet, En transit [ ]
4.3.3 Rang dans la file d'attente affiché si applicable [ ]
4.3.4 Date limite de retrait affichée si disponible [ ]
4.3.5 Bouton "Annuler" visible pour demandes annulables [ ]
4.3.6 🔄 Après annulation : demande disparaît de la liste sans rechargement [ ]

4.4 Onglet "Frais"

# Étape OK
4.4.1 Liste des frais avec montant, date, document concerné [ ]
4.4.2 Détail expandable par frais : historique des transactions [ ]
4.4.3 Montant total affiché dans l'en-tête de l'onglet [ ]

4.5 Onglet "Historique"

# Étape OK
4.5.1 ⚠️ Onglet visible seulement si keep_history activé pour l'usager [ ]
4.5.2 Liste des prêts passés avec document, date de retour [ ]
4.5.3 Chargement progressif ("Afficher plus") fonctionnel [ ]

4.6 Onglet "PEB" (Prêt entre bibliothèques)

# Étape OK
4.6.1 Liste des demandes PEB avec statut, document, lieu de retrait [ ]
4.6.2 Champs spécifiques : portée (copie/prêt), pages, URL source [ ]
4.6.3 Section expandable "Informations supplémentaires" [ ]

4.7 Onglet "Données personnelles"

# Étape OK
4.7.1 Informations personnelles affichées (nom, adresse, email, tél.) [ ]
4.7.2 Date d'expiration du compte affichée [ ]
4.7.3 ⚠️ Indicateur "Conserver l'historique" affiché [ ]
4.7.4 Bouton "Modifier" ouvre le formulaire d'édition [ ]
4.7.5 ⚠️ Champs désactivés (readOnlyFields) bien en lecture seule dans le formulaire [ ]
4.7.6 Validation async email/nom d'utilisateur (doublon) fonctionne [ ]
4.7.7 Soumission formulaire → retour au profil, données mises à jour [ ]

4.8 Changement de mot de passe

# Étape OK
4.8.1 Formulaire 3 champs : mot de passe actuel, nouveau, confirmation [ ]
4.8.2 ⚠️ Validation force du mot de passe affiche les règles non respectées [ ]
4.8.3 Mot de passe actuel incorrect → message d'erreur [ ]
4.8.4 Nouveaux mots de passe ne correspondent pas → erreur inline [ ]
4.8.5 Changement réussi → message de confirmation [ ]

5. Administration — Circulation (checkout/checkin)

🔒 Rôle : bibliothécaire (circulation)

5.1 Accès et recherche de lecteur

# Étape OK
5.1.1 Interface checkout accessible via menu ou raccourci c [ ]
5.1.2 Saisie d'un code-barres lecteur (ou nom) → carte lecteur affichée [ ]
5.1.3 ⚠️ Carte lecteur affiche : nom, date de naissance, âge, type, code-barres, notes [ ]
5.1.4 Compte bloqué → message d'avertissement visible sur la carte [ ]
5.1.5 Compte expiré → message d'avertissement visible [ ]
5.1.6 Lecteur introuvable → message d'erreur clair [ ]

5.2 Prêt (checkout)

# Étape OK
5.2.1 Saisie d'un code-barres exemplaire → prêt enregistré [ ]
5.2.2 🔄 ⚠️ Exemplaire apparaît immédiatement dans la liste des prêts du lecteur [ ]
5.2.3 Exemplaire déjà prêté → message d'erreur avec information [ ]
5.2.4 Exemplaire introuvable → message d'erreur [ ]
5.2.5 ⚠️ Notes de circulation de l'exemplaire affichées dans la liste expandée ET dans un toast d'alerte [ ]
5.2.6 Exemplaire avec type d'exemplaire temporaire → note affichée dans la liste expandée ET dans un toast [ ]
5.2.7 Exemplaire appartenant à une collection → note affichée dans la liste expandée ET dans un toast [ ]

5.3 Liste des prêts en cours (pendant le checkout)

# Étape OK
5.3.1 Liste affiche : code-barres, titre, auteur, date d'échéance [ ]
5.3.2 Clic "expand" par ligne → détails affichés (cote, localisation, notifications) [ ]
5.3.3 Renouvellement individuel (bouton par ligne) [ ]
5.3.4 ⚠️ "Renouveler tout" → tous les renouvelables mis à jour en une action [ ]
5.3.5 🔄 Après renouvellement, date d'échéance mise à jour dans la liste [ ]
5.3.6 Bouton "Renouveler" disabled si non renouvelable (tooltip explicatif) [ ]
5.3.7 Badge frais affiché si des frais sont associés à un prêt existant [ ]
5.3.8 Badge demandes (réservations) affiché si d'autres lecteurs attendent [ ]

5.4 Retour (checkin)

Le retour peut se faire depuis l'onglet "Prêts" d'un lecteur chargé (retour dans le contexte du lecteur) ou directement depuis l'interface checkout/checkin sans lecteur sélectionné (retour anonyme). Tester les deux cas.

# Étape OK
5.4.1 Retour sans lecteur chargé : saisie code-barres exemplaire → retour enregistré [ ]
5.4.2 🔄 ⚠️ Après retour, exemplaire apparaît dans la liste des retours sans rechargement [ ]
5.4.3 Retour depuis l'onglet "Prêts" d'un lecteur : même comportement, prêt disparaît de la liste du lecteur [ ]
5.4.4 Exemplaire en transit → message indiquant la bibliothèque de destination [ ]
5.4.5 Exemplaire avec demande en attente → message signalant la demande [ ]
5.4.6 Frais générés au retour → message ou badge visible [ ]
5.4.7 ⚠️ Scan d'un exemplaire sans prêt actif → exemplaire apparaît dans la liste avec un bandeau d'avertissement (icône triangle), pas de crash ni d'erreur bloquante [ ]

5.5 Onglet "Demandes" (patron en cours)

# Étape OK
5.5.1 Liste des demandes du lecteur : titre, date de demande [ ]
5.5.2 Annulation d'une demande → 🔄 disparaît de la liste [ ]

5.6 Onglet "À récupérer" (pickup)

# Étape OK
5.6.1 Exemplaires disponibles au guichet listés [ ]
5.6.2 Date limite de retrait affichée [ ]

5.7 Onglet "Frais" (transactions lecteur)

# Étape OK
5.7.1 ⚠️ Accordéon "Frais engagés" affiche liste avec date, catégorie, bibliothèque, montant [ ]
5.7.2 ⚠️ Bouton "Ajouter un frais" → formulaire s'ouvre [ ]
5.7.3 🔄 ⚠️ Après ajout d'un frais, il apparaît dans la liste sans rechargement [ ]
5.7.4 ⚠️ Bouton "Tout payer" fonctionne (split button, avec option "Payer pour ma bibliothèque") [ ]
5.7.5 🔄 Après paiement, montant total mis à jour [ ]
5.7.6 Accordéon "Frais de retard prévisionnels" : liste avec date d'échéance, document, montant [ ]
5.7.7 Accordéon "Historique" : transactions passées listées [ ]
5.7.8 Montant total dans les badges d'onglet mis à jour dynamiquement [ ]

5.8 Gestion des demandes (interface globale)

# Étape OK
5.8.1 Page "Demandes" accessible depuis le menu [ ]
5.8.2 Rafraîchissement automatique configurable (toggle + intervalle) [ ]
5.8.3 Tri des demandes fonctionnel [ ]
5.8.4 Annulation d'une demande depuis cette vue [ ]

6. Administration — Gestion des lecteurs

🔒 Rôle : bibliothécaire

6.1 Recherche de lecteurs

# Étape OK
6.1.1 Accès à la liste des lecteurs via le menu [ ]
6.1.2 Recherche par nom, prénom, code-barres [ ]
6.1.3 Filtres : expiré / non expiré / bloqué [ ]
6.1.4 Tri par pertinence ou nom complet [ ]
6.1.5 Facettes : rôles, ville, type de lecteur [ ]
6.1.6 Résultats affichent nom, rôles (tags colorés), date de naissance, ville [ ]

6.2 Création d'un compte lecteur (user + patron)

Un compte lecteur est composé de deux parties dans le formulaire : la partie utilisateur (identité, accès) et la partie lecteur (informations bibliothécaires). Tester les deux.

# Étape OK
6.2.1 Formulaire de création accessible [ ]
6.2.2 ⚠️ Champs obligatoires visibles dès l'ouverture du formulaire (notamment sous-champs requis) [ ]
6.2.3 Partie utilisateur : validation email en temps réel (unicité async) [ ]
6.2.4 Partie utilisateur : validation nom d'utilisateur en temps réel (unicité async) [ ]
6.2.5 ⚠️ Sélection du rôle : les rôles disponibles dépendent des permissions du bibliothécaire connecté [ ]
6.2.6 🔒 Bibliothécaire de succursale : sélection de bibliothèque limitée à ses bibliothèques [ ]
6.2.7 Partie lecteur : date d'expiration pré-remplie (+3 ans) [ ]
6.2.8 Partie lecteur : code-barres, type de lecteur, bibliothèque(s) d'affiliation renseignables [ ]
6.2.9 Sauvegarde → redirect vers le détail, message de succès [ ]

6.3 Édition d'un lecteur

# Étape OK
6.3.1 Formulaire pré-rempli avec les données existantes [ ]
6.3.2 ⚠️ blocked_note effacé si case "bloqué" décochée [ ]
6.3.3 ⚠️ Retrait du rôle "patron" : si le lecteur a des prêts, frais ou demandes actifs → message d'erreur/blocage explicite [ ]
6.3.4 Sauvegarde → données mises à jour dans la vue détail [ ]

6.4 Vue détail du lecteur

# Étape OK
6.4.1 Coordonnées affichées : date de naissance, email, téléphones (triés par poids), adresse [ ]
6.4.2 Accordéon "Notes" visible si des notes existent [ ]
6.4.3 Accordéon "Informations utilisateur" : nom, keep_history, rôles, date de création [ ]
6.4.4 Accordéon "Informations lecteur" : code-barres (lien circulation), type, expiration, affiliations [ ]
6.4.5 Accordéon "Informations bibliothécaire" si rôle présent [ ]
6.4.6 ⚠️ Accordéon "Permissions" se charge correctement (ne doit pas rester vide ni en erreur) [ ]
6.4.7 Bouton "Circulation" visible pour CIRC_ADMIN [ ]

7. Administration — Catalogue

7.1 Recherche de documents

# Étape OK
7.1.1 Liste des documents accessible [ ]
7.1.2 Recherche plein texte fonctionne [ ]
7.1.3 Facettes (type, langue, date…) fonctionnelles [ ]
7.1.4 Boutons Modifier / Dupliquer / Supprimer présents selon les permissions du rôle ; bouton Supprimer disabled (avec tooltip) si la notice a des exemplaires liés [ ]

7.2 Création/édition d'un document

# Étape OK
7.2.1 Éditeur de fiche bibliographique s'ouvre [ ]
7.2.2 ⚠️ Tous les sous-champs obligatoires sont visibles en mode création [ ]
7.2.3 ⚠️ Les champs conditionnels s'affichent ou se masquent correctement selon les valeurs saisies (ex. type de document, type de contenu) [ ]
7.2.4 Ajout/suppression de répétitions de champs (auteurs, sujets, etc.) [ ]
7.2.5 Sauvegarde → message de succès, redirect vers le détail [ ]
7.2.6 ⚠️ "Enregistrer comme modèle" fonctionne et le modèle est récupérable depuis l'éditeur [ ]
7.2.7 Duplication d'un document → nouvel enregistrement avec données copiées [ ]

7.3 Import depuis le web

# Étape OK
7.3.1 Interface d'import accessible depuis le menu Catalogue [ ]
7.3.2 Recherche par ISBN/titre retourne des résultats [ ]
7.3.3 Sélection d'un résultat et import dans l'éditeur [ ]
7.3.4 Données importées préremplissent l'éditeur correctement [ ]

7.4 Vue détail d'un document (admin)

# Étape OK
7.4.1 Titre, auteurs, données bibliographiques affichés [ ]
7.4.2 Section Holdings de l'organisation courante visible [ ]
7.4.3 ⚠️ Filtre bibliothèques (multi-select) visible si >1 bibliothèque, fonctionne [ ]
7.4.4 Accordéon holdings : expand/collapse par holding [ ]
7.4.5 ⚠️ Menu déroulant "Ajouter" (holding/exemplaire) fonctionnel, visible selon permissions [ ]
7.4.6 Holdings d'autres organisations affichés dans une section séparée [ ]
7.4.7 Exemplaires listés dans chaque holding avec statut, cote, énumération [ ]
7.4.8 Filtre texte sur les exemplaires fonctionnel [ ]
7.4.9 Suppression d'un exemplaire → confirmation, disparaît de la liste [ ]
7.4.10 Holdings électroniques : liens URL affichés et cliquables [ ]

7.5 Gestion des exemplaires (items)

# Étape OK
7.5.1 Création d'un exemplaire depuis le détail document [ ]
7.5.2 ⚠️ Sous-champs obligatoires visibles dans le formulaire [ ]
7.5.3 Édition d'un exemplaire [ ]
7.5.4 "Changer de localisation" (switch location) fonctionnel [ ]
7.5.5 Recherche d'exemplaires par code-barres, localisation, type [ ]

7.6 Entités (autorités)

# Étape OK
7.6.1 Accès à la liste des entités locales [ ]
7.6.2 Création d'une entité locale (personne, organisation, concept) [ ]
7.6.3 Dans l'éditeur de document : recherche et import d'entité depuis une source externe (VIAF, etc.) via le champ auteur/sujet [ ]
7.6.4 Lien entité ↔ document affiché dans le détail document [ ]

7.7 Collections (expositions/cours)

# Étape OK
7.7.1 Création d'une collection [ ]
7.7.2 Ajout d'exemplaires à une collection [ ]
7.7.3 ⚠️ Titre de collection masqué dans la vue publique si aucune collection n'existe pour cet exemplaire [ ]
7.7.4 Tags de collection dans les listes : pas de doublons d'icône de suppression [ ]

7.8 Champs locaux (local_fields)

Les champs locaux sont définis par type de ressource (document, exemplaire, holding). Tester sur chaque ressource concernée.

# Étape OK
7.8.1 Champ local défini pour un document → visible et éditable dans l'éditeur de notice [ ]
7.8.2 Champ local défini pour un exemplaire → visible et éditable dans l'éditeur d'exemplaire [ ]
7.8.3 Champ local défini pour un holding → visible et éditable dans l'éditeur de holding [ ]

8. Administration — Acquisitions

🔒 Rôle : bibliothécaire avec accès acquisitions

8.1 Fournisseurs (vendors)

# Étape OK
8.1.1 Liste des fournisseurs accessible [ ]
8.1.2 Création d'un fournisseur avec adresses, contacts [ ]
8.1.3 Édition d'un fournisseur [ ]
8.1.4 Suppression (si non utilisé) [ ]

8.2 Budgets

Les budgets sont créés en dehors de l'interface admin. Seules la consultation et la vérification sont disponibles ici.

# Étape OK
8.2.1 Liste des budgets accessible [ ]
8.2.2 Vue détail d'un budget : nom, montant total, exercice fiscal [ ]
8.2.3 ⚠️ Avertissement affiché si exercice fiscal clôturé [ ]

8.3 Comptes budgétaires (accounts)

# Étape OK
8.3.1 Liste des comptes accessible [ ]
8.3.2 Création d'un compte avec montant [ ]
8.3.3 ⚠️ Transfert de fonds entre comptes : formulaire et confirmation fonctionnels [ ]
8.3.4 Montants (alloué, engagé, disponible) affichés correctement [ ]

8.4 Commandes (orders)

# Étape OK
8.4.1 Liste des commandes accessible [ ]
8.4.2 Création d'une commande (fournisseur, compte, lignes) [ ]
8.4.3 ⚠️ Ajout de lignes de commande : bouton "Ajouter" dans l'accordéon lignes [ ]
8.4.4 ⚠️ Édition d'une ligne de commande PENDING (pas d'erreur d'autorisation) [ ]
8.4.5 ⚠️ Suppression d'une ligne de commande PENDING (pas d'erreur d'autorisation) [ ]
8.4.6 Notes de commande affichées avec coloration [ ]
8.4.7 Badge de priorité sur les lignes [ ]
8.4.8 ⚠️ Bouton "Envoyer la commande" visible pour commandes PENDING (avec permission update) [ ]
8.4.9 Dialog de confirmation "Envoyer la commande" fonctionne [ ]
8.4.10 ⚠️ Onglet "Réception" visible dès que la commande peut faire l'objet d'une réception (statut approprié), même sans réceptions déjà enregistrées [ ]
8.4.11 Onglet "Historique" affiche les changements d'état [ ]

8.5 Réceptions (receipts)

# Étape OK
8.5.1 Formulaire de réception s'ouvre depuis une commande [ ]
8.5.2 Champs du formulaire visibles et fonctionnels [ ]
8.5.3 Sauvegarde → réception enregistrée, liste mise à jour [ ]
8.5.4 Annulation → aucun enregistrement créé [ ]

8.6 Fascicules en retard (late issues)

# Étape OK
8.6.1 Liste des fascicules en retard accessible [ ]
8.6.2 Envoi d'une réclamation depuis cette interface [ ]

9. Administration — Configuration

🔒 Rôle : bibliothécaire système ou admin

9.1 Politiques de circulation (circ_policies)

# Étape OK
9.1.1 Liste des politiques accessible [ ]
9.1.2 Création d'une politique (durée de prêt, renouvellements, etc.) [ ]
9.1.3 Édition d'une politique existante [ ]
9.1.4 Suppression d'une politique (si non utilisée) [ ]

9.2 Types d'exemplaires (item_types)

# Étape OK
9.2.1 Liste des types accessible [ ]
9.2.2 Création / édition / suppression [ ]

9.3 Types de lecteurs (patron_types)

# Étape OK
9.3.1 Liste des types accessible [ ]
9.3.2 Création / édition / suppression [ ]

9.4 Bibliothèques et localisations

# Étape OK
9.4.1 Fiche de ma bibliothèque accessible et éditable [ ]
9.4.2 Localisations listées dans la bibliothèque [ ]
9.4.3 Création / édition d'une localisation [ ]

9.5 Modèles (templates)

# Étape OK
9.5.1 Liste des modèles accessible [ ]
9.5.2 ⚠️ Enregistrement en tant que modèle (depuis l'éditeur) fonctionnel et modèle récupérable [ ]

9.6 Matrice des permissions

# Étape OK
9.6.1 Matrice accessible depuis le menu Admin [ ]
9.6.2 Permissions affichées par rôle [ ]
9.6.3 ⚠️ Modifications sauvegardées et reflétées dans le comportement de l'application [ ]

10. Administration — Rapports & monitoring

10.1 Liste d'inventaire

# Étape OK
10.1.1 Accès à l'inventaire via le menu [ ]
10.1.2 Filtres disponibles : bibliothèque, localisation, type, état [ ]
10.1.3 Export de la liste [ ]

10.2 Frais (rapport global)

# Étape OK
10.2.1 Liste des transactions accessible [ ]
10.2.2 Filtres par bibliothèque, date, type de frais [ ]

10.3 Statistiques (stats_cfg)

# Étape OK
10.3.1 Liste des configurations de statistiques accessible [ ]
10.3.2 Création / édition d'une configuration [ ]
10.3.3 ⚠️ Vue détail d'une configuration : bouton "Données en temps réel" → données chargées et affichées dans le tableau de rapport [ ]
10.3.4 Export des données de rapport (si disponible) télécharge le fichier [ ]

10.4 Prêts en cours (vue globale)

# Étape OK
10.4.1 Liste accessible depuis le menu [ ]
10.4.2 Filtres (bibliothèque, type, état) fonctionnels [ ]

10.5 Demandes PEB (ILL — vue admin)

# Étape OK
10.5.1 Liste des demandes PEB accessible [ ]
10.5.2 Changement de statut d'une demande [ ]
10.5.3 Création d'une demande PEB pour un lecteur [ ]

11. Administration — Migrations

🔒 Rôle : admin système

11.1 Tâches de migration

# Étape OK
11.1.1 Liste des migrations accessible [ ]
11.1.2 Détail d'une migration (statut, progression) [ ]

11.2 Données de migration (format)

# Étape OK
11.2.1 Recherche dans les données de migration [ ]
11.2.2 Vue détail d'un enregistrement de migration [ ]

11.3 Dédoublonnage

# Étape OK
11.3.1 Interface de dédoublonnage accessible [ ]
11.3.2 Recherche avec UI de dédoublonnage fonctionne [ ]
11.3.3 Vue détail d'un doublon potentiel [ ]

Annexe A — Points de contrôle transversaux à vérifier sur chaque page

Ces vérifications s'appliquent à chaque section du protocole. Les noter séparément si elles échouent.

Point Description
Console propre Ouvrir les DevTools → Console. Aucune erreur JS non gérée, aucun ERROR TypeError, aucun ExpressionChangedAfterItHasBeenCheckedError Angular
Requêtes réseau Aucune requête en 400/500 sans gestion visible côté UI
Mise à jour de liste Toute action (créer, modifier, supprimer, payer, rembourser) met à jour la liste/vue sans nécessiter F5
Formulaires invalides Bouton "Sauvegarder" désactivé si formulaire invalide ; messages d'erreur inline visibles
Boutons disabled Les boutons disabled ont un tooltip explicatif
Champs requis Tous les champs requis sont visibles (pas masqués par défaut)
Traductions Aucune clé de traduction brute (KEY.NOT.FOUND ou translate.xxx) visible
Accordéons/tabs Ouverture et fermeture sans crasher, contenu chargé au bon moment
Pagination Navigation entre pages de résultats cohérente (pas de saut de page, pas de doublon)

Annexe B — Patterns de régression à surveiller lors de mises à jour majeures

Ces patterns représentent les types de bugs les plus fréquents lors de mises à jour du framework ou de refactorings importants. Les utiliser comme grille de lecture pendant le parcours de l'application.

Catégorie Symptôme à surveiller Où chercher en priorité
Mises à jour de liste Une action (ajout, paiement, retour) semble réussir (pas d'erreur) mais la liste ne reflète pas le changement → rechargement manuel révèle que l'action a bien eu lieu Frais lecteur, liste des retours, lignes de commande
Boutons inactifs Un bouton cliquable ne déclenche rien, pas de retour visuel, pas d'erreur console Boutons d'action dans les vues détail, formulaires avec logique conditionnelle
Champs formulaire absents En mode création, certains sous-champs requis ou optionnels n'apparaissent pas alors qu'ils devraient Éditeurs de notices (surtout champs répétables), éditeur de lecteur
Affichage conditionnel cassé Un champ ou bloc s'affiche toujours (ou jamais) quel que soit l'état des données Sections conditionnelles dans les vues détail (notes, sections par rôle)
Encodage URL La navigation ou la recherche produit des URLs avec des caractères encodés en double ou mal encodés, causant des erreurs ou des résultats inattendus URLs de recherche avec filtres actifs, navigation avec paramètres spéciaux
Onglet/panneau vide Un onglet ou accordéon s'ouvre mais reste vide alors que des données existent Onglet Permissions dans le détail lecteur, onglets de commande
Erreurs 400 silencieuses Une action de formulaire retourne 400 côté réseau sans message d'erreur UI, ou avec un message générique peu utile Formulaires de frais, formulaires acquisitions

Protocole rédigé sur la base de l'analyse du code source de rero-ils-ui. À maintenir à jour lors de l'ajout de nouvelles fonctionnalités.