Protocole QA OpsFlux — 200 étapes
Test exhaustif des modules Tiers / Projets / Planner / PaxLog / PackLog / TravelWiz.
Chaque étape a une action , une vérification attendue , et des checks transverses (i18n / responsive / perms / console / réseau).
Format suivi : ✅ PASS / ❌ FAIL / 🔧 FIXED:<sha> / ⏭️ SKIPPED:<raison> dans docs/QA-LOG.md.
Préconditions
Compte admin : admin@opsflux.io / RldgAHGJqlrq6TRjsZq3is
Frontend : https://app.opsflux.io
Backend : https://api.opsflux.io
Branche prod : main (auto-deploy via Dokploy)
Outils navigateur : mcp__Claude_in_Chrome__* (DOM-aware), mcp__chrome-devtools__* (CDP)
Légende checks transverses
Chaque étape vérifie en plus, sauf mention contraire :
- i18n : strings affichées sont des clés traduites, pas du hardcoded ; switch FR/EN cohérent
- responsive : pas de débordement à 360px, 768px, 1280px
- perms : utilisateur non-admin reçoit 403 ou écran dégradé sans fuite d'info
- console : aucun error ni warning React non-attendu
- réseau : pas de 4xx/5xx inattendus, pas de payload contenant des secrets
Phase 0 — Préconditions (5 étapes)
#
Action
Vérif attendue
0.1
Vérifier statut Dokploy done
API + front répondent 200
0.2
Vérifier api.opsflux.io/docs accessible
Swagger UI charge, liste tous les routers
0.3
Compter routes API par module
Cohérent avec models ; pas de routes orphelines
0.4
Tester login admin + récupérer token JWT
200 + token valide ; cookie httpOnly+secure
0.5
Inventorier les permissions disponibles
Liste *.read/create/update/delete complète
Phase 1 — Auth & permissions (10)
#
Action
Vérif
1.1
Login OK
redir dashboard ; token stocké ; profil utilisateur affiché
1.2
Login KO (mauvais MDP)
401 ; message FR/EN ; pas de stack trace
1.3
Login KO (compte inexistant)
message identique à 1.2 (pas de fuite)
1.4
Logout
token invalidé ; redir login ; ré-accès aux routes protégées → 401
1.5
Token expiré
redir login transparent ; pas de panique JS
1.6
Refresh page authentifiée
session persistée
1.7
Créer un user qa_viewer avec rôle viewer
OK
1.8
Login qa_viewer → accès /projects
lecture seule ; boutons create/edit/delete cachés
1.9
qa_viewer tente POST /api/v1/projects
403 propre
1.10
qa_viewer voit dashboard sans erreur
widgets restreints aux permissions
Entreprises
#
Action
Vérif
2.1
Créer entreprise QA Test Corp avec tous les champs (nom, sigle, type, NAF, SIRET, TVA, IBAN, BIC, adresse complète, téléphones, emails, site web, tags)
enregistrement complet ; ID retourné
2.2
Vérifier validation SIRET (faux numéro)
erreur claire ; pas de submit
2.3
Vérifier validation IBAN
format strict
2.4
Ajouter 3 adresses (siège, facturation, livraison)
distinctes ; type par adresse
2.5
Ajouter 2 emails + 2 téléphones
OK ; format validé
2.6
Ajouter 5 tags
unicité ; pas de doublon
2.7
Ajouter note interne
rich-text préservé ; auteur + date
2.8
Ajouter identifiant légal externe
type + valeur ; visible sur fiche
2.9
Ajouter imputation analytique
cost center sélectionnable
2.10
Lien vers MOC / projet
navigation bidirectionnelle
#
Action
Vérif
2.11
Créer contact rattaché à QA Test Corp
full name, civilité, poste, email pro, mobile, fixe, avatar
2.12
Tester champs habilitations (médical, sécurité)
dates valides ; alerte si expiré
2.13
Ajouter document PDF (CV / habilitation)
upload OK ; preview ; download
2.14
Lier contact à un user OpsFlux
XOR respecté (un user OU contact dans pax)
2.15
Modifier le poste
inline-edit fonctionne ; audit trail
2.16
Tester import CSV de contacts
bulk import ; rapport erreurs/succès
2.17
Tester recherche full-text sur nom + email
résultats classés ; surlignage
2.18
Tester filtre par entreprise + tag
combinaisons OK
2.19
Archive contact
retiré des listes par défaut ; visible avec filtre archived=true
2.20
Transfert contact vers autre entreprise
historique conservé
Transverse Tiers
#
Action
Vérif
2.21
Export CSV de l'annuaire
encodage UTF-8 + BOM ; séparateur paramétrable
2.22
Page entreprise → onglets (contacts / projets / ADS / docs)
tous chargent sans 404
2.23
Compliance matrix sur entreprise
règles applicables affichées
2.24
Bloquer un tier
message clair ; impossible d'ajouter en ADS
2.25
Audit trail sur QA Test Corp
toutes les modifs listées avec auteur+timestamp
Phase 3 — Projets (25)
Création projet
#
Action
Vérif
3.1
Créer projet QA-DRILL-2026 (tous champs : nom, code, type, dates, budget, devise, manager, sponsor, description riche)
OK
3.2
Tester sélection template projet
structure pré-remplie
3.3
Ajouter site / asset rattaché
hiérarchie respectée
3.4
Ajouter 3 jalons avec date + responsable
timeline rendue chronologiquement
3.5
Ajouter 10 tâches (parent + sous-tâches)
hiérarchie ; drag-drop reorder
Équipes projet (SUP-0040)
#
Action
Vérif
3.6
Créer équipe inline Équipe QA-1 (publique)
visible immédiatement
3.7
Attacher équipe à projet avec rôle main_team
OK ; idempotent (re-attach = même résultat)
3.8
Tenter d'attacher 2× même équipe au même projet
2ème tentative ignorée silencieusement
3.9
Détacher équipe
OK ; pas d'effet de bord sur membres
3.10
Tester équipe privée vs autre user
invisible dans picker pour non-membre
Édition + workflow
#
Action
Vérif
3.11
Édition inline du nom
optimistic update ; rollback si 400
3.12
Édition inline du statut (draft → active → closed)
transitions autorisées seulement
3.13
CPM du projet
dates calculées ; critique mise en rouge
3.14
Dépendances entre tâches
cycle détecté ; erreur
3.15
Activity feed
actions des 30 derniers jours
Avancé
#
Action
Vérif
3.16
Dupliquer projet
clone avec préfixe Copy of ; relations conservées
3.17
Archiver projet
retiré liste défaut ; consultable en archive
3.18
Restaurer projet archivé
retour liste active
3.19
Supprimer projet test
confirmation modale ; cascade contrôlée
3.20
Permissions par projet
viewer ne voit pas budget
3.21
Export projet en PDF
fichier généré ; mise en page propre
3.22
Export projet en CSV (tâches)
OK
3.23
Tags projet
autocomplete sur tags existants
3.24
Pivots dashboard projet
KPI cohérents avec données
3.25
Recherche projet par nom partiel
matching insensible accents/casse
Phase 4 — Planner (30)
Création d'activités
#
Action
Vérif
4.1
Créer activité type workover complète (titre, dates, asset, responsable, coût estimé, description)
OK
4.2
Créer activité type study
champs spécifiques affichés
4.3
Créer activité type mobilisation
OK
4.4
Créer activité type inspection
OK
4.5
Type meeting
OK
4.6
Type pob_planning
champs POB affichés
4.7
Type event
OK
4.8
Type other avec sous-catégorie libre
OK
4.9
Activité sans date début → blocage
erreur claire
4.10
Activité date fin < date début → blocage
erreur claire
Dépendances + conflits
#
Action
Vérif
4.11
Lier A → B (FS dependency)
flèche dans gantt
4.12
Créer cycle A → B → A
bloqué
4.13
Provoquer conflit ressource (même équipement, 2 activités chevauchantes)
conflit listé ; sévérité
4.14
Résoudre conflit (déplacement)
conflit s'efface
4.15
Audit conflit
trace dans PlannerConflictAudit
Scenarios
#
Action
Vérif
4.16
Créer scenario QA-Scenario-A
branche planner indépendante
4.17
Modifier activité dans scenario uniquement
base inchangée
4.18
Merger scenario
base mise à jour ; merge log
4.19
Comparer scenario vs base
diff visuel
4.20
Archiver scenario
inactif ; non visible par défaut
Équipes (SUP-0040 phase 1 final, déployé aujourd'hui)
#
Action
Vérif
4.21
Attacher équipe à activité avec rôle
OK ; visible dans panel
4.22
Réattacher même équipe → idempotent
pas de 409
4.23
Détacher
propre
4.24
Lister équipes d'une activité via API
GET /planner/activities/{id}/teams 200
4.25
Tenter attach sur activité inexistante
404
Cross-module
#
Action
Vérif
4.26
Créer ADS depuis activité validée (SUP-0027)
ADS créée + lien retour activité
4.27
Activity feed projet voit l'activité
OK
4.28
Export gantt PDF
rendu correct
4.29
Filtre activités par site / asset / type
combinaisons OK
4.30
Recherche full-text sur activités
matches sur titre + description
Phase 5 — PaxLog / ADS (30)
Création ADS
#
Action
Vérif
5.1
Créer ADS QA-ADS-001 avec tous les champs (titre, type, site destination, dates, asset, budget, demandeur)
OK
5.2
Ajouter 5 pax (mix users + contacts)
XOR respecté ; avatar + entreprise visibles
5.3
Vérifier regroupement par entreprise
sections triées alphabétiquement
5.4
Import CSV pax — fichier Excel FR (BOM + ;)
encodage auto-détecté ; rapport import
5.5
Import CSV pax — fichier malformé
erreurs ligne par ligne ; rien créé
#
Action
Vérif
5.6
Conformité pax verte sur tous critères
badge vert ; détail accessible
5.7
Pax avec credential expiré
badge rouge ; raison ; lien fiche
5.8
Profile habilitation matrix
règles bien appliquées
5.9
Override admin sur non-conformité
trace audit ; alerte sécurité
5.10
Compliance type custom
éditable via Settings
Workflow ADS
#
Action
Vérif
5.11
Transition draft → submitted → approved → executed
événements AdsEvent stockés
5.12
Tentative transition invalide
bloquée + msg
5.13
Refus avec motif
motif obligatoire
5.14
Demande d'info complémentaire
retour à draft ; commentaire visible
5.15
Suivi historique des transitions
timeline propre
Suggestions + équipes
#
Action
Vérif
5.16
Suggestions pax basées sur historique
top 10 ; score visible
5.17
Ajouter équipe entière à ADS (SUP-0040)
tous les membres actifs ajoutés ; skip_duplicates
5.18
Retirer équipe de l'ADS
pax associés retirés
5.19
ADS sans équipe = pax individuels seulement
OK
Mission program + stakeholders
#
Action
Vérif
5.20
Créer mission program lié à ADS
tâches préparatoires listées
5.21
Compléter une mission preparation task
progression % mise à jour
5.22
Ajouter stakeholder externe
email + rôle ; lien externe possible
5.23
Mission notice envoyée
log envoi ; statut delivered
5.24
Stay program
rotation cycles configurables
Incidents + groupes
#
Action
Vérif
5.25
Déclarer incident pax
sévérité ; statut investigation
5.26
Lier incident à ADS
bidirectionnel
5.27
PaxGroup création
membres ajoutés en masse
5.28
PaxCompanyGroup
regroupement automatique par entreprise
5.29
External access link (token)
URL signée ; consultable sans login
5.30
Audit complet ADS
toutes les mutations tracées
Phase 6 — PackLog (25)
Cargo request
#
Action
Vérif
6.1
Créer cargo request (origine, destination, urgence, demandeur, dates)
OK
6.2
Statut draft → validate workflow
transitions claires
6.3
Vérifier que le bouton Modifier réapparaît après validation (SUP-0034)
OK
6.4
Édition cargo request après validation
OK (lock retiré)
6.5
Annulation avec motif
OK
Cargo items
#
Action
Vérif
6.6
Créer 10 cargo items (mix types : matériel, conso, fragile, dangerous)
OK
6.7
Tous champs items (qty, unit, dim, poids, HS code, IMO class, T° req, valeur, devise)
OK
6.8
Édition inline cargo item (SUP-0034 v2)
OK
6.9
Statut item indépendant (collecte, contrôle, prêt, expédié)
transitions auditées
6.10
Article catalog → preselect un item
champs auto-remplis
Packaging
#
Action
Vérif
6.11
Créer package element (caisse)
dim + poids ; capacité visible
6.12
Affecter items à package
poids/volume cumulé recalculé
6.13
Vérifier alerte surpoids
warning visible
6.14
Étiquette PDF du package
format standard ; QR code
6.15
Manifeste expédition
liste items + packages
Deck + attachments
#
Action
Vérif
6.16
Deck layout (plan de pont)
placement drag-drop
6.17
Ajouter pièce jointe (PDF, photo)
upload OK ; preview ; download
6.18
Attachment evidence (signature + photo)
trace
6.19
Lier cargo à voyage
bidirectionnel
6.20
Lier cargo à ADS
OK
Recherche + export
#
Action
Vérif
6.21
Recherche cargo par code HS
filtré
6.22
Recherche par IMO class
filtré
6.23
Export manifest CSV
encodage OK ; tous les champs
6.24
Statistiques cargo dashboard
volumes / poids cohérents
6.25
Archivage cargo terminé
retiré listes actives
Phase 7 — TravelWiz (25)
Voyage + manifest
#
Action
Vérif
7.1
Créer voyage (vector, départ, arrivée, capitaine, ETD, ETA)
OK
7.2
Ajouter stops intermédiaires
ordre conservé
7.3
Créer manifest avec 20 passagers
tous renseignés
7.4
Embarquement check-in (scan QR)
statut mis à jour ; horodatage
7.5
No-show passager
tracé ; raison
Vector + position
#
Action
Vérif
7.6
Configurer vector (capacité, certifs, zones autorisées)
OK
7.7
Position vector en temps réel (manuel ou API GPS)
carte mise à jour
7.8
Certifications vector
dates d'expiration ; alerte 30j avant
7.9
Zone restreinte
warning si vector hors zone
7.10
Pickup round (ramassage multiple)
itinéraire optimisé
Captain log + events
#
Action
Vérif
7.11
Captain log entrée (sea state, weather, incident)
horodaté
7.12
Voyage event (départ, arrivée, escale, incident)
typé ; lié au voyage
7.13
VoyageEventType catalogue
éditable via Settings
7.14
Pickup stop confirmation
trace passager présent/absent
7.15
Weather data importée
source visible ; timestamp
KPI + rotations
#
Action
Vérif
7.16
Trip KPI (durée, retard, occupancy %)
calculés automatiquement
7.17
Transport rotation (planning vector)
conflit détecté si surbooking
7.18
TransportVectorZone management
zones définissables
7.19
Vehicle certification expiry alert
visible dashboard
7.20
TripCodeAccess (lien externe pour passager)
OK
Cross
#
Action
Vérif
7.21
Lier voyage à ADS
bidirectionnel
7.22
Manifeste imprimé conforme
PDF propre, signatures pré-imprimées
7.23
Export historique voyages
CSV
7.24
Recherche voyage par vector / date
OK
7.25
Audit complet voyage
mutations tracées
Phase 8 — Cross-module (15)
#
Action
Vérif
8.1
Créer équipe → l'utiliser sur projet + activité + ADS
mêmes membres partout
8.2
Retirer membre de l'équipe → impact sur les 3 usages
propre
8.3
Équipe privée non visible à un user externe
filtré côté API
8.4
History d'équipe (joined_at / left_at)
timeline complète
8.5
Recherche globale (Cmd+K si dispo)
retourne résultats des 6 modules
8.6
Notifications (in-app + email)
délivrées ; lues
8.7
Dashboard widgets
données live ; cache widgets respecté
8.8
Page home configurable
drag-drop widgets
8.9
Tab user dashboard personnalisé
persisté
8.10
Module manifest (settings → modules)
tous activables/désactivables
8.11
MOC bridge (changement → impact projet/ADS)
tracé
8.12
Audit trail global (qui a fait quoi)
filtrable par user/module/date
8.13
Asset hierarchy navigation
breadcrumb cohérent
8.14
Settings → cost centers
utilisable dans imputations
8.15
Settings → compliance types
utilisable dans pax
Phase 9 — UX transverse (10)
#
Action
Vérif
9.1
Mobile 360px sur dashboard
pas de scroll horizontal ; menus pliés
9.2
Mobile 360px sur liste ADS
layout cartes, pas tableau
9.3
Mobile 360px sur détail Pax
colonnes empilées
9.4
Tablette 768px
layout intermédiaire ; nav drawer
9.5
Desktop 1280px+
layout full ; sidebar sticky
9.6
Switch FR → EN
toutes les strings traduites ; pas de clé brute affichée
9.7
Switch EN → FR
symétrique
9.8
Date / number formats
adaptés à la locale
9.9
Navigation clavier (Tab, Enter, Esc)
focus visible ; ordre logique
9.10
Contraste WCAG AA
textes / boutons OK
À grepper sur tout le code :
Rapport final
À la fin du run, un fichier docs/QA-LOG.md contient :
- Résultat par étape (PASS / FAIL / FIXED: / SKIPPED:)
- Liste exhaustive des bugs trouvés
- Liste des commits de correctifs
- Reste à faire (tickets pour Bastien)