KaxentraDocumentation
2104 lignes16121 mots45 diagrammes01-produit/14-diagrammes-uml-activite-sequence.md

14 — Diagrammes UML : activité, séquence, états et classes#

Suite directe de 11-diagrammes-cas-utilisation.md. Le document précédent répond à qui peut demander quoi. Celui-ci répond à dans quel ordre, par quel échange et dans quel état.

Tous les diagrammes sont adossés au code source relevé le 17 août 2026 : registre de contextes partagé web et mobile, registres de navigation des trois portails web, points d'entrée des 85 services applicatifs. Chaque flux qui s'arrête avant son terme le dit dans le diagramme lui-même, pas seulement en note de bas de page.

Version : 1.0 — 17 août 2026 Statut : Référence active Documents liés : 00-brief-commun.md · 11-diagrammes-cas-utilisation.md · 06-portail-admin.md


1. Méthode#

1.1 Trois questions, trois notations#

NotationQuestion à laquelle elle répondCe qu'elle ne dit pas
Diagramme d'activitéDans quel ordre les étapes s'enchaînent-elles, et qui exécute chaque étape ?Quels messages circulent entre les composants.
Diagramme de séquenceQuels messages sont échangés, dans quel ordre, entre quels participants ?Ce que devient l'objet métier au fil du temps.
Diagramme d'étatsQuels états un objet métier peut-il prendre, et par quelles transitions ?Qui déclenche la transition, ni comment.

Un même parcours peut donc apparaître trois fois dans ce document, sous trois angles. Ce n'est pas de la redondance : c'est la seule façon de rendre visible qu'un flux d'écran, un échange technique et un cycle de vie métier ne coïncident pas toujours. Le cas A20 — demande d'export — en est la démonstration : le flux d'écran est complet, l'échange technique s'arrête, et l'objet métier reste bloqué dans un état.

1.2 Mermaid n'a pas de couloirs natifs — il faut le dire#

UML représente les responsabilités par des couloirs verticaux ou horizontaux. Mermaid 11 n'implémente pas les couloirs dans flowchart. Il n'existe aucun mot-clef swimlane, aucune partition native.

Nous simulons donc chaque couloir par un subgraph nommé d'après l'acteur responsable. C'est une approximation, et elle a deux limites qu'il faut connaître pour lire correctement les diagrammes :

  1. La position d'un nœud dans un subgraph ne contraint pas sa position visuelle finale — le moteur de disposition place les nœuds selon les arêtes, pas selon les cadres. Un nœud peut donc apparaître visuellement décalé par rapport à son couloir.
  2. Une arête qui traverse deux subgraph n'est pas marquée comme un passage de responsabilité. Nous compensons en nommant l'acteur dans la colonne Acteur du tableau qui suit chaque diagramme. Le tableau fait foi.

Cette limite est assumée plutôt que contournée par une image externe : un diagramme Mermaid reste lisible dans le code source, comparable ligne à ligne d'une version à l'autre, et traduisible. Une image ne l'est pas.

1.3 Conventions de forme#

ÉlémentForme MermaidEmploi
Début et finn00(["Début"])Bornes du flux
Actionn01["Action"]Étape exécutée
Décisiond01{"Question"}Branchement, deux sorties au minimum
Couloirsubgraph lane01["Acteur"]Responsabilité
Arrêt assumén99["Fin sans exécution"] avec mention explicite dans le libelléFlux qui n'aboutit pas dans le produit

1.4 Conventions de séquence#

Les participants sont déclarés en ASCII pur, avec un libellé accentué en alias : participant a01 as "Client". Les messages sont notés a01->>a02: texte pour un appel, a02-->>a01: texte pour une réponse. Les blocs alt et opt portent les branchements. Les notes portent les invariants qui ne sont pas des messages.

1.5 Conventions d'états#

Les identifiants d'état sont ASCII et les libellés accentués sont déclarés par state "Libellé" as s01. Un état terminal est relié à [*]. Un état qui n'existe pas encore dans le produit est signalé dans le tableau qui suit le diagramme, jamais par une transition fictive.

1.6 Convention de statut — reprise du document précédent#

StatutSignification
LivréÉcran et point d'entrée de service vus dans le code.
Livré — conditionnéLivré, accès soumis à une clef d'offre active.
Livré — partielLe parcours démarre mais n'aboutit pas dans le produit.
Non livréAucun écran, aucun point d'entrée.

2. Diagrammes d'activité#

Vingt diagrammes. Chacun est suivi de son tableau Étape | Acteur | Action | Règle | Sortie.

2.1 A01 — Inscription et premier contexte#

flowchart TD
  subgraph l1["Visiteur"]
    n01(["Arrivée sur le portail"])
    n02["Saisir courriel et mot de passe"]
    n03["Confirmer le courriel"]
    n06["Choisir un contexte de départ"]
  end
  subgraph l2["Plateforme"]
    n04["Créer le compte et le locataire"]
    n05["Attribuer le forfait Gratuit"]
    n07["Vérifier les droits du contexte"]
    d01{"Contexte conditionné"}
    n08["Recomposer navigation et tableau de bord"]
    n09["Ouvrir le tableau de bord du contexte"]
    n10["Masquer la carte du contexte"]
    n11(["Compte actif"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> d01
  d01 -->|"non"| n08
  d01 -->|"oui sans clef active"| n10
  n10 --> n06
  n08 --> n09
  n09 --> n11
ÉtapeActeurActionRègleSortie
1VisiteurArrive sur le portailAucuneFormulaire affiché
2VisiteurSaisit courriel et mot de passeMot de passe conforme à la politiqueCompte en attente de confirmation
3VisiteurConfirme son courrielLien à usage uniqueCourriel vérifié
4PlateformeCrée le compte et son locataireUn compte appartient toujours à un locataireLocataire créé
5PlateformeAttribue le forfait Gratuit1 siège, 10 crédits par moisAbonnement actif
6VisiteurChoisit un contexte de départDix contextes Client, neuf ProfessionnelsContexte demandé
7PlateformeVérifie les droits du contexteLe catalogue de la plateforme fait foiDécision d'accès
8PlateformeRecompose la navigation et le tableau de bordLa bascule est un mécanisme produit, pas un rechargement de pageNavigation du contexte
9PlateformeOuvre le tableau de bordTrois contextes ont un tableau de bord dédiéÉcran d'accueil du contexte
10PlateformeMasque la carte du contexte conditionnébusiness, epicerie, startup exigent une clef d'offre activeCarte absente du sélecteur
11PlateformeMarque le compte actifAucune authentification à deux facteurs — non implémentéeCompte utilisable

Statut : Livré.

2.2 A02 — Déclaration T1 et TP1#

flowchart TD
  subgraph l1["Contribuable"]
    n01(["Ouvrir le dossier fiscal"])
    n03["Téléverser les feuillets"]
    n05["Valider ou corriger les montants"]
    n09["Marquer la déclaration prête"]
  end
  subgraph l2["Plateforme"]
    n02["Afficher la liste de contrôle"]
    n04["Extraire par vision et proposer les montants"]
    d01{"Feuillet reconnu"}
    n06["Classer en pièce générique"]
    n07["Calculer crédits et déductions"]
    n08["Présenter résultat fédéral et provincial"]
    n10["Transmettre par voie électronique"]
    d02{"Transmission acceptée"}
    n11["Enregistrer l accusé"]
    n12["Afficher le code de refus"]
    n13(["Déclaration transmise"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> d01
  d01 -->|"oui"| n05
  d01 -->|"non"| n06
  n06 --> n05
  n05 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
  n10 --> d02
  d02 -->|"oui"| n11
  d02 -->|"non"| n12
  n12 --> n05
  n11 --> n13
ÉtapeActeurActionRègleSortie
1ContribuableOuvre le dossier fiscal de l'annéeUn dossier par année d'impositionDossier ouvert
2PlateformeAffiche la liste de contrôle et les pièces présentesLes pièces déjà déposées ne sont pas redemandéesListe affichée
3ContribuableTéléverse ses feuilletsFormats acceptés annoncés avant le dépôtDocuments stockés
4PlateformeExtrait par vision et propose les montantsLa proposition n'écrit rien tant qu'elle n'est pas validéeMontants proposés
5ContribuableValide ou corrige chaque montantUn montant contradictoire affiche les deux valeurs et leur origineMontants retenus
6PlateformeClasse en pièce générique si le type est inconnuAucun montant n'est devinéPièce attachée
7PlateformeCalcule crédits et déductionsUn crédit sans pièce est marqué non applicable, avec son motifCalcul produit
8PlateformePrésente le résultat fédéral et provincialUn écart entre les deux au-delà du seuil est signaléRésultats affichés
9ContribuableMarque la déclaration prêteVerrouillage des montantsDéclaration prête
10PlateformeTransmet par voie électroniqueAucune transmission sans validation expliciteTransmission engagée
11PlateformeEnregistre l'accuséSans accusé, l'état reste « prête » — jamais « transmise »Accusé au dossier
12PlateformeAffiche le code de refusLe code et son libellé sont affichés, pas un message génériqueDéclaration modifiable

Statut : Livré.

2.3 A03 — Déclaration de société T2#

flowchart TD
  subgraph l1["Fiscaliste"]
    n01(["Ouvrir le dossier de société"])
    n03["Vérifier la clôture de l exercice"]
    n06["Revoir les ajustements fiscaux"]
    n09["Valider et transmettre"]
  end
  subgraph l2["Plateforme"]
    n02["Rattacher la société au cabinet"]
    d01{"Exercice clôturé"}
    n04["Renvoyer vers la clôture comptable"]
    n05["Importer le résultat comptable"]
    n07["Calculer l impôt fédéral"]
    n08["Calculer l impôt provincial"]
    n10["Enregistrer l accusé"]
    n11(["Déclaration de société transmise"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> d01
  d01 -->|"non"| n04
  n04 --> n03
  d01 -->|"oui"| n05
  n05 --> n06
  n06 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1FiscalisteOuvre le dossier de sociétéContexte fiscaliste actifDossier ouvert
2PlateformeRattache la société au cabinetLe rattachement conditionne l'accès aux donnéesSociété liée
3FiscalisteVérifie la clôture de l'exerciceUne déclaration ne se calcule pas sur un exercice ouvertDécision
4PlateformeRenvoie vers la clôture comptableLe renvoi nomme l'écran cible plutôt qu'un message d'erreurRetour au parcours comptable
5PlateformeImporte le résultat comptableLe résultat vient des états financiers, jamais d'une ressaisieRésultat importé
6FiscalisteRevoit les ajustements fiscauxChaque ajustement porte sa justificationAjustements retenus
7PlateformeCalcule l'impôt fédéralTaux datés, source uniqueImpôt fédéral
8PlateformeCalcule l'impôt provincialTaux datés, source uniqueImpôt provincial
9FiscalisteValide et transmetValidation explicite obligatoireTransmission engagée
10PlateformeEnregistre l'accuséSans accusé, aucun état de succèsAccusé au dossier

Statut : Livré.

2.4 A04 — Cycle de paie#

flowchart TD
  subgraph l1["Gestionnaire de paie"]
    n01(["Ouvrir le cycle de la période"])
    n06["Revoir le cycle employé par employé"]
    n07["Valider le cycle"]
  end
  subgraph l2["Plateforme"]
    n02["Rassembler employés heures et absences"]
    d01{"Données complètes"}
    n03["Marquer l employé incomplet"]
    n04["Calculer le brut"]
    n05["Calculer les retenues à la source"]
    n08["Produire les bulletins"]
    n09["Notifier les employés"]
    n10["Préparer le montant de la remise"]
    n11(["Cycle verrouillé"])
  end
  n01 --> n02
  n02 --> d01
  d01 -->|"non"| n03
  n03 --> n06
  d01 -->|"oui"| n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1Gestionnaire de paieOuvre le cycleUne période verrouillée ne se rouvre pas implicitementCycle ouvert
2PlateformeRassemble employés, heures et absencesLes employés sans rémunération configurée sont signalés, pas calculés à zéroDonnées du cycle
3PlateformeMarque un employé incompletLe cycle ne se valide pas tant que l'écart persisteEmployé signalé
4PlateformeCalcule le brutRémunération, heures et avantages imposablesBrut par employé
5PlateformeCalcule les retenues à la sourceBarèmes fédéraux et provinciauxRetenues déterminées
6Gestionnaire de paieRevoit le cycleUne correction relance le calcul et conserve l'historiqueCycle revu
7Gestionnaire de paieValide le cycleValidation expliciteCycle validé
8PlateformeProduit les bulletinsUn bulletin par employéBulletins disponibles
9PlateformeNotifie les employésL'absence de canal actif est signalée, jamais silencieuseNotifications remises
10PlateformePrépare le montant de la remiseLe montant est mis en attente avec sa date d'échéanceRemise préparée

Statut : Livré.

2.5 A05 — Rapprochement bancaire#

flowchart TD
  subgraph l1["Comptable"]
    n01(["Ouvrir le rapprochement"])
    n05["Valider les appariements proposés"]
    n06["Apparier manuellement le reste"]
    n09["Justifier ou passer les écritures"]
    n10["Clôturer la période"]
  end
  subgraph l2["Plateforme"]
    n02["Charger les transactions importées"]
    d01{"Transactions présentes"}
    n03["Afficher aucune transaction importée"]
    n04["Proposer des appariements"]
    n07["Calculer l écart résiduel"]
    d02{"Écart sous le seuil"}
    n08["Bloquer la clôture"]
    n11(["Période rapprochée"])
  end
  n01 --> n02
  n02 --> d01
  d01 -->|"non"| n03
  d01 -->|"oui"| n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> d02
  d02 -->|"non"| n08
  n08 --> n09
  n09 --> n07
  d02 -->|"oui"| n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1ComptableOuvre le rapprochement d'un compte et d'une périodeCompte bancaire déclaréÉcran de rapprochement
2PlateformeCharge les transactions importéesL'import est déclenché par l'ordonnanceur ou à la demandeTransactions chargées
3PlateformeAffiche « aucune transaction importée »Jamais un rapprochement à zéro qui ressemblerait à un compte à jourÉtat honnête affiché
4PlateformePropose des appariementsSur montant, date et libelléPropositions
5ComptableValide les appariements proposésAucune validation automatiqueLignes pointées
6ComptableApparie manuellement le resteUne transaction sans contrepartie ouvre la création d'écritureLignes restantes traitées
7PlateformeCalcule l'écart résiduelÉcart affiché en valeur, pas en pourcentage seulÉcart connu
8PlateformeBloque la clôture au-delà du seuilUn écart non justifié empêche la clôtureClôture refusée
9ComptableJustifie l'écart ou passe les écrituresChaque justification est tracéeÉcart traité
10ComptableClôture la périodeUne période déjà close exige une réouverture explicite et tracéePériode rapprochée

Statut : Livré.

2.6 A06 — Demande de documents#

flowchart TD
  subgraph l1["Cabinet"]
    n01(["Ouvrir le dossier client"])
    n02["Créer la demande de document"]
    n10["Voir la pièce au dossier"]
  end
  subgraph l2["Plateforme"]
    d01{"Pièce déjà au dossier"}
    n03["Signaler la présence de la pièce"]
    n04["Placer la demande en attente"]
    n05["Notifier le client"]
    n08["Passer la demande à satisfaite"]
    n09["Notifier le cabinet"]
  end
  subgraph l3["Client"]
    n06["Voir la demande dans ses actions"]
    n07["Téléverser la pièce"]
  end
  n01 --> n02
  n02 --> d01
  d01 -->|"oui"| n03
  n03 --> n02
  d01 -->|"non"| n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
ÉtapeActeurActionRègleSortie
1CabinetOuvre le dossier clientClient rattaché au cabinetDossier ouvert
2CabinetCrée la demande en nommant la pièce et l'échéanceUne demande sans pièce nommée n'est pas créableDemande formulée
3PlateformeSignale une pièce déjà présenteÉvite le doublon avant créationDemande non dupliquée
4PlateformePlace la demande en attenteÉtat initial uniqueDemande en attente
5PlateformeNotifie le clientAbsence de canal actif signalée au cabinetNotification remise
6ClientVoit la demande dans ses actions à faireMême source de vérité que le cabinetDemande visible
7ClientTéléverse la pièceUn écart de type laisse la demande en attentePièce déposée
8PlateformePasse la demande à satisfaiteTransition unique et tracéeDemande satisfaite
9PlateformeNotifie le cabinetNotification multicanalCabinet averti
10CabinetVoit la pièce au dossierAucun transfert manuel, aucun courrielPièce disponible

Statut : Livré.

2.7 A07 — Signature électronique#

flowchart TD
  subgraph l1["Cabinet"]
    n01(["Finaliser le document"])
    n02["Désigner les signataires et l ordre"]
    n03["Ouvrir le cycle de signature"]
  end
  subgraph l2["Plateforme"]
    n04["Notifier le premier signataire"]
    d01{"Signature apposée"}
    n07["Relancer le signataire"]
    n08["Passer au signataire suivant"]
    d02{"Tous ont signé"}
    n09["Sceller le document"]
    n10["Conserver la preuve d apposition"]
    n11(["Document signé"])
  end
  subgraph l3["Signataire"]
    n05["Ouvrir le document"]
    n06["Apposer sa signature"]
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> d01
  d01 -->|"non"| n07
  n07 --> n05
  d01 -->|"oui"| n08
  n08 --> d02
  d02 -->|"non"| n04
  d02 -->|"oui"| n09
  n09 --> n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1CabinetFinalise le documentAucune signature sur un brouillon modifiableDocument figé
2CabinetDésigne les signataires et leur ordreL'ordre est explicite, jamais impliciteListe de signataires
3CabinetOuvre le cycle de signatureLe document devient non modifiableCycle ouvert
4PlateformeNotifie le signataire courantUn signataire à la fois si l'ordre est séquentielInvitation remise
5SignataireOuvre le documentAccès par lien à usage encadréDocument lu
6SignataireAppose sa signatureIdentité du signataire consignéeSignature apposée
7PlateformeRelance le signataireRelance planifiée par l'ordonnanceurRelance envoyée
8PlateformePasse au signataire suivantProgression tracéeCycle avancé
9PlateformeScelle le documentLe document scellé n'est plus modifiableDocument scellé
10PlateformeConserve la preuve d'appositionLa preuve survit à la suppression d'un comptePreuve conservée

Statut : Livré.

2.8 A08 — Facture émise et encaissée#

flowchart TD
  subgraph l1["Émetteur"]
    n01(["Créer la facture"])
    n02["Saisir les lignes"]
    n04["Émettre la facture"]
  end
  subgraph l2["Plateforme"]
    n03["Appliquer la grille tarifaire"]
    n05["Numéroter et fixer l échéance"]
    n06["Notifier le payeur"]
    n09["Enregistrer le paiement"]
    n10["Mettre à jour le solde"]
    d02{"Solde nul"}
    n11["Laisser la facture ouverte"]
    n12(["Facture soldée"])
  end
  subgraph l3["Payeur"]
    n07["Ouvrir la facture"]
    n08["Payer"]
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
  n10 --> d02
  d02 -->|"non"| n11
  d02 -->|"oui"| n12
ÉtapeActeurActionRègleSortie
1ÉmetteurCrée la factureClient enregistré obligatoireFacture en brouillon
2ÉmetteurSaisit les lignesQuantité, prix, taxe par ligneLignes saisies
3PlateformeApplique la grille tarifaireLa grille prime sur la saisie libre quand elle existePrix appliqués
4ÉmetteurÉmet la factureUne facture émise n'est plus modifiable, seulement extournable par avoirFacture émise
5PlateformeNumérote et fixe l'échéanceNumérotation continue, sans trouNuméro attribué
6PlateformeNotifie le payeurMulticanalPayeur averti
7PayeurOuvre la factureAccès par lien ou par son portailFacture lue
8PayeurPaieLe prestataire de paiement est appeléPaiement engagé
9PlateformeEnregistre le paiementUn refus n'écrit aucun encaissementPaiement enregistré
10PlateformeMet à jour le soldeUn avoir antérieur est pris en compte dans le net dûSolde recalculé
11PlateformeLaisse la facture ouverte si paiement partielLe reliquat est affichéFacture partiellement soldée

Statut : Livré.

2.9 A09 — Facturation récurrente et relance#

flowchart TD
  subgraph l1["Responsable de facturation"]
    n01(["Définir le modèle de facture"])
    n02["Choisir la périodicité"]
    n03["Activer la récurrence"]
  end
  subgraph l2["Ordonnanceur"]
    n04["Déclencher à l échéance de période"]
    n09["Déclencher le contrôle des impayés"]
  end
  subgraph l3["Plateforme"]
    n05["Générer la facture de la période"]
    n06["Émettre et notifier"]
    d01{"Facture échue et non soldée"}
    n07["Ne rien faire"]
    n08["Exécuter l étape de relance suivante"]
    n10["Tracer la relance"]
    n11(["Séquence de recouvrement en cours"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> n09
  n09 --> d01
  d01 -->|"non"| n07
  d01 -->|"oui"| n08
  n08 --> n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1Responsable de facturationDéfinit le modèle de factureLignes et tarifs figés dans le modèleModèle enregistré
2Responsable de facturationChoisit la périodicitéPériodicité explicite, jamais devinéePériodicité fixée
3Responsable de facturationActive la récurrenceL'activation crée l'échéancierRécurrence active
4OrdonnanceurDéclenche à l'échéance de périodeActeur temporel, pas d'action humaineGénération demandée
5PlateformeGénère la facture de la périodeUne seule facture par période et par modèleFacture générée
6PlateformeÉmet et notifieMême parcours que A08 à partir de l'émissionFacture émise
7PlateformeNe fait rien si la facture est soldéeAucune relance sur une facture payéeAucun envoi
8PlateformeExécute l'étape de relance suivanteLa séquence est configurée par étapes et délaisRelance envoyée
9OrdonnanceurDéclenche le contrôle des impayésPassage périodiqueContrôle exécuté
10PlateformeTrace la relanceChaque relance est datée et attribuéeTrace au dossier

Statut : Livré.

2.10 A10 — Du reçu numérisé au classement#

flowchart TD
  subgraph l1["Utilisateur"]
    n01(["Photographier ou déposer le reçu"])
    n05["Valider ou corriger les champs"]
    n07["Confirmer le classement"]
  end
  subgraph l2["Plateforme"]
    n02["Stocker et horodater le fichier"]
    n03["Appeler le moteur de vision"]
    d01{"Extraction réussie"}
    n04["Proposer les champs extraits"]
    n06["Proposer la saisie manuelle"]
    n08["Classer dans le dossier"]
    n09["Rattacher à une dépense"]
    n10(["Reçu classé et exploitable"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> d01
  d01 -->|"oui"| n04
  d01 -->|"non"| n06
  n04 --> n05
  n06 --> n05
  n05 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
ÉtapeActeurActionRègleSortie
1UtilisateurPhotographie ou dépose le reçuLe mobile et le web partagent le même parcoursFichier reçu
2PlateformeStocke et horodateLe fichier est conservé même si l'extraction échoueFichier stocké
3PlateformeAppelle le moteur de visionExtraction sur image ou fichier numériséExtraction lancée
4PlateformePropose les champs extraitsLa proposition n'écrit rienChamps proposés
5UtilisateurValide ou corrigeToute écriture passe par une validation humaineChamps retenus
6PlateformePropose la saisie manuelle en cas d'échecL'échec est nommé, pas masquéFormulaire vide affiché
7UtilisateurConfirme le classementDossier de destination expliciteClassement demandé
8PlateformeClasse dans le dossierArborescence de l'utilisateurReçu classé
9PlateformeRattache à une dépenseLe rattachement rend le reçu exploitable en fiscalitéDépense documentée

Statut : Livré.

2.11 A11 — Clôture mensuelle#

flowchart TD
  subgraph l1["Comptable"]
    n01(["Lancer la clôture du mois"])
    n05["Passer les écritures de régularisation"]
    n08["Confirmer la clôture"]
  end
  subgraph l2["Plateforme"]
    n02["Vérifier les rapprochements"]
    d01{"Rapprochements complets"}
    n03["Lister les comptes non rapprochés"]
    n04["Contrôler les écritures déséquilibrées"]
    n06["Produire les états financiers"]
    n07["Présenter les écarts au mois précédent"]
    n09["Verrouiller la période"]
    n10["Calculer le report à nouveau"]
    n11(["Mois clôturé"])
  end
  n01 --> n02
  n02 --> d01
  d01 -->|"non"| n03
  n03 --> n01
  d01 -->|"oui"| n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1ComptableLance la clôture du moisUne clôture ne se lance pas sur une période déjà closeClôture engagée
2PlateformeVérifie les rapprochementsTous les comptes bancaires de la périodeContrôle exécuté
3PlateformeListe les comptes non rapprochésLa liste nomme chaque compte, pas un compteur seulBlocage motivé
4PlateformeContrôle les écritures déséquilibréesAucune écriture déséquilibrée ne passeContrôle exécuté
5ComptablePasse les écritures de régularisationAmortissements, provisions, cut-offRégularisations passées
6PlateformeProduit les états financiersBilan et résultat à la date de clôtureÉtats produits
7PlateformePrésente les écarts au mois précédentL'écart est la vraie information, pas le solde seulÉcarts affichés
8ComptableConfirme la clôtureConfirmation expliciteClôture confirmée
9PlateformeVerrouille la périodeRéouverture possible seulement de façon explicite et tracéePériode verrouillée
10PlateformeCalcule le report à nouveauOuverture du mois suivantReport calculé

Statut : Livré.

2.12 A12 — Remise TPS et TVQ#

flowchart TD
  subgraph l1["Fiscaliste"]
    n01(["Ouvrir la période de déclaration"])
    n05["Revoir la ventilation"]
    n07["Valider la remise"]
  end
  subgraph l2["Plateforme"]
    n02["Collecter les ventes taxables"]
    n03["Collecter les crédits sur intrants"]
    n04["Calculer le montant net"]
    d01{"Montant net positif"}
    n06["Préparer une demande de remboursement"]
    n08["Transmettre la déclaration"]
    n09["Enregistrer l accusé et l échéance de paiement"]
    n10(["Remise déclarée"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> d01
  d01 -->|"oui"| n05
  d01 -->|"non"| n06
  n06 --> n05
  n05 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
ÉtapeActeurActionRègleSortie
1FiscalisteOuvre la période de déclarationPériodicité déclarée par l'inscritPériode ouverte
2PlateformeCollecte les ventes taxablesDepuis la facturation, jamais par ressaisieBase de taxe
3PlateformeCollecte les crédits sur intrantsDepuis les achats enregistrésCrédits identifiés
4PlateformeCalcule le montant netTaxe perçue moins crédits sur intrantsMontant net
5FiscalisteRevoit la ventilationChaque montant remonte à sa pièceVentilation validée
6PlateformePrépare une demande de remboursementUn net négatif est un remboursement, pas un zéroDemande préparée
7FiscalisteValide la remiseValidation expliciteRemise validée
8PlateformeTransmet la déclarationTransmission à l'administration provincialeTransmission engagée
9PlateformeEnregistre l'accusé et l'échéance de paiementL'échéance alimente le calendrier fiscalÉchéance suivie

Statut : Livré.

2.13 A13 — Plan d'affaires#

flowchart TD
  subgraph l1["Entrepreneur"]
    n01(["Créer le plan d affaires"])
    n02["Décrire le projet et le marché"]
    n05["Saisir les hypothèses financières"]
    n08["Compléter les sections manquantes"]
  end
  subgraph l2["Plateforme"]
    n03["Structurer les sections attendues"]
    n04["Proposer une aide contextuelle"]
    n06["Bâtir le modèle financier"]
    n07["Calculer le seuil de rentabilité"]
    d01{"Sections complètes"}
    n09["Produire le document de plan"]
    n10(["Plan exploitable"])
  end
  n01 --> n03
  n03 --> n02
  n02 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> d01
  d01 -->|"non"| n08
  n08 --> d01
  d01 -->|"oui"| n09
  n09 --> n10
ÉtapeActeurActionRègleSortie
1EntrepreneurCrée le plan d'affairesContexte entrepreneur actifPlan créé
2EntrepreneurDécrit le projet et le marchéAucun chiffre de marché sans sa sourceSections rédigées
3PlateformeStructure les sections attenduesTrame imposée, pas une page blancheTrame affichée
4PlateformePropose une aide contextuelleL'assistance consomme des crédits et affiche ses sourcesSuggestions affichées
5EntrepreneurSaisit les hypothèses financièresChaque hypothèse est nommée et modifiableHypothèses saisies
6PlateformeBâtit le modèle financierProjections sur plusieurs exercicesModèle produit
7PlateformeCalcule le seuil de rentabilitéCoûts fixes et variables séparésSeuil calculé
8EntrepreneurComplète les sections manquantesLe plan ne se produit pas incompletSections complétées
9PlateformeProduit le document de planDocument partageablePlan exploitable

Statut : Livré.

2.14 A14 — Incorporation#

flowchart TD
  subgraph l1["Entrepreneur"]
    n01(["Décider de constituer une société"])
    n03["Choisir la dénomination"]
    n06["Fournir les pièces demandées"]
  end
  subgraph l2["Incorporateur"]
    n02["Recommander une forme juridique"]
    n05["Établir la liste des pièces"]
    n07["Constituer le dossier"]
    n08["Déposer auprès du registraire"]
  end
  subgraph l3["Plateforme"]
    n04["Vérifier la conformité de démarrage"]
    n09["Ouvrir les registres de société"]
    n10["Proposer la bascule vers le contexte PME"]
    n11(["Société constituée"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1EntrepreneurDécide de constituer une sociétéDécision documentée dans le dossierProjet ouvert
2IncorporateurRecommande une forme juridiqueRecommandation motivée et datéeForme retenue
3EntrepreneurChoisit la dénominationVérification de disponibilité à la charge du registraireDénomination proposée
4PlateformeVérifie la conformité de démarragePoints de conformité évalués, écarts listésÉcarts connus
5IncorporateurÉtablit la liste des piècesListe de contrôle attachée au dossierListe établie
6EntrepreneurFournit les piècesDemandes de documents et suivi côté clientPièces déposées
7IncorporateurConstitue le dossierLe dossier est complet ou il n'est pas déposéDossier constitué
8IncorporateurDépose auprès du registraireActeur externeDépôt effectué
9PlateformeOuvre les registres de sociétéRegistres tenus dès la constitutionRegistres ouverts
10PlateformePropose la bascule vers le contexte PMEAucune migration de données, aucune ressaisieBascule proposée

Statut : Livré.

2.15 A15 — Mandat d'audit#

flowchart TD
  subgraph l1["Auditeur"]
    n01(["Ouvrir le mandat"])
    n02["Fixer le périmètre"]
    n03["Évaluer les risques"]
    n05["Exécuter les tests"]
    n07["Documenter les conclusions"]
    n09["Émettre le rapport"]
  end
  subgraph l2["Plateforme"]
    n04["Bâtir le programme de travail"]
    n06["Rattacher les éléments probants"]
    d01{"Tests concluants"}
    n08["Ouvrir un point d attention"]
    n10["Tracer au journal d audit"]
    n11(["Mandat clos"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> d01
  d01 -->|"non"| n08
  n08 --> n05
  d01 -->|"oui"| n07
  n07 --> n09
  n09 --> n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1AuditeurOuvre le mandatClient rattaché, exercice identifiéMandat ouvert
2AuditeurFixe le périmètrePérimètre écrit, pas implicitePérimètre fixé
3AuditeurÉvalue les risquesCotation expliciteRisques cotés
4PlateformeBâtit le programme de travailLe programme découle des risquesProgramme établi
5AuditeurExécute les testsChaque test porte son résultatTests exécutés
6PlateformeRattache les éléments probantsUn test sans élément probant reste non concluantÉléments rattachés
7AuditeurDocumente les conclusionsConclusion référencée aux testsConclusions écrites
8PlateformeOuvre un point d'attentionUn test non concluant ne se referme pas seulPoint ouvert
9AuditeurÉmet le rapportRapport daté et signéRapport émis
10PlateformeTrace au journal d'auditLa trace survit à la suppression d'un comptePiste de vérification

Statut : Livré.

2.16 A16 — Demande de soumission#

flowchart TD
  subgraph l1["Demandeur"]
    n01(["Décrire le besoin"])
    n02["Fixer le budget et le délai"]
    n03["Publier la demande"]
    n08["Comparer les propositions"]
    n09["Retenir un cabinet"]
  end
  subgraph l2["Plateforme"]
    n04["Identifier les cabinets éligibles"]
    n05["Notifier les cabinets"]
    n10["Ouvrir la relation client cabinet"]
    n11(["Mandat engagé"])
  end
  subgraph l3["Cabinet"]
    n06["Consulter la demande"]
    n07["Transmettre une proposition"]
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1DemandeurDécrit le besoinUn besoin non décrit n'est pas diffusableBesoin formulé
2DemandeurFixe le budget et le délaiChamps explicitesCadre posé
3DemandeurPublie la demandePublication volontaireDemande publiée
4PlateformeIdentifie les cabinets éligiblesÉligibilité selon la vitrine et les domaines déclarésCabinets ciblés
5PlateformeNotifie les cabinetsMulticanalCabinets avertis
6CabinetConsulte la demandeAccès depuis le portail AffairesDemande lue
7CabinetTransmet une propositionProposition datée et chiffréeProposition reçue
8DemandeurCompare les propositionsComparaison côte à côteComparaison faite
9DemandeurRetient un cabinetChoix expliciteCabinet retenu
10PlateformeOuvre la relation client cabinetLe client entre dans le portefeuille du cabinetRelation ouverte

Statut : Livré.

2.17 A17 — Requête à l'assistant avec consommation de crédits#

flowchart TD
  subgraph l1["Utilisateur"]
    n01(["Saisir la question"])
    n11["Lire la réponse et ses sources"]
  end
  subgraph l2["Plateforme"]
    n02["Vérifier le solde de crédits"]
    d01{"Solde strictement positif"}
    n03["Refuser l appel et nommer la cause"]
    n04["Appliquer les garde-fous en entrée"]
    n05["Interroger la base de connaissances"]
    d02{"Base joignable"}
    n06["Répondre sans ancrage et le signaler"]
    n07["Appeler la passerelle de modèles"]
    n08["Appliquer les garde-fous en sortie"]
    n09["Décompter au tarif daté du modèle servi"]
    n10["Persister la réponse et ses sources"]
    n12(["Appel terminé"])
  end
  n01 --> n02
  n02 --> d01
  d01 -->|"non"| n03
  n03 --> n12
  d01 -->|"oui"| n04
  n04 --> n05
  n05 --> d02
  d02 -->|"non"| n06
  n06 --> n07
  d02 -->|"oui"| n07
  n07 --> n08
  n08 --> n09
  n09 --> n10
  n10 --> n11
  n11 --> n12
ÉtapeActeurActionRègleSortie
1UtilisateurSaisit la questionAucune restriction de formeQuestion soumise
2PlateformeVérifie le solde de créditsLe contrôle précède l'appel, jamais l'inverseSolde connu
3PlateformeRefuse l'appel au solde nulAucun dépassement facturé. Le message dit « crédits épuisés », jamais « service indisponible »Appel refusé
4PlateformeApplique les garde-fous en entréeUn rejet ne consomme aucun créditEntrée filtrée
5PlateformeInterroge la base de connaissancesAncrage documentaireFragments récupérés
6PlateformeRépond sans ancrage si la base est injoignableÉchec ouvert assumé : l'absence d'ancrage est visible dans la réponseRéponse non ancrée signalée
7PlateformeAppelle la passerelle de modèlesPoint de passage uniqueRéponse brute
8PlateformeApplique les garde-fous en sortieUn rejet retient la réponse et affiche son motifSortie filtrée
9PlateformeDécompte au tarif daté du modèle serviUn taux manquant lève une erreur au lieu de valoir zéroCrédits décomptés
10PlateformePersiste la réponse et ses sourcesIdentifiant et nom de document, indice de fragmentRéponse tracée

Statut : Livré.

2.18 A18 — Approbation humaine d'une action à conséquence#

flowchart TD
  subgraph l1["Agent"]
    n01(["Proposer une action à conséquence"])
  end
  subgraph l2["Plateforme"]
    n02["Différer l écriture"]
    n03["Créer la demande d approbation"]
    n04["Notifier l approbateur habilité"]
    d01{"Décision"}
    n07["Rejouer l écriture différée"]
    n08["N effectuer aucune écriture"]
    d02{"Rejeu réussi"}
    n09["Marquer approuvée non exécutée"]
    n10["Tracer la décision au journal d audit"]
    n11(["Demande close"])
  end
  subgraph l3["Approbateur"]
    n05["Lire l action ses effets et sa justification"]
    n06["Approuver ou rejeter"]
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> d01
  d01 -->|"approuvée"| n07
  d01 -->|"rejetée"| n08
  n07 --> d02
  d02 -->|"non"| n09
  d02 -->|"oui"| n10
  n08 --> n10
  n09 --> n10
  n10 --> n11
ÉtapeActeurActionRègleSortie
1AgentPropose une action à conséquenceUne action à conséquence ne s'exécute jamais directementProposition émise
2PlateformeDiffère l'écritureL'écriture est préparée, pas appliquéeÉcriture différée
3PlateformeCrée la demande d'approbationUne demande par actionDemande créée
4PlateformeNotifie l'approbateur habilitéUn non-habilité ne voit pas la demandeApprobateur averti
5ApprobateurLit l'action, ses effets et sa justificationLes effets sont affichés avant la décisionAction comprise
6ApprobateurApprouve ou rejetteDécision expliciteDécision prise
7PlateformeRejoue l'écriture différéeLe rejeu est la seule voie d'exécutionAction exécutée
8PlateformeN'effectue aucune écriture au rejetRien n'est écrit. Le rejet n'est pas une annulation après coupAucun effet
9PlateformeMarque « approuvée non exécutée » si le rejeu échoueAucun faux succès affichéÉtat honnête
10PlateformeTrace la décision au journal d'auditLa trace survit à la suppression du compte de l'approbateurPreuve conservée

Statut : Livré — sur les quatre surfaces.

2.19 A19 — Changement de forfait#

flowchart TD
  subgraph l1["Titulaire"]
    n01(["Ouvrir la page d abonnement"])
    n03["Choisir le nouveau forfait"]
    n06["Confirmer le changement"]
    n10["Demander la résiliation"]
  end
  subgraph l2["Plateforme"]
    n02["Afficher le forfait courant et ses dotations"]
    n04["Calculer l écart de sièges clients et crédits"]
    n05["Présenter le montant au prorata"]
    n07["Appeler le prestataire de paiement"]
    d01{"Paiement accepté"}
    n08["Appliquer les nouveaux droits"]
    n09["Conserver l ancien forfait"]
    d02{"Surface Affaires"}
    n11["Ouvrir l écran de résiliation en libre service"]
    n12["Router une demande vers le cabinet"]
    n13(["Abonnement à jour"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n04 --> n05
  n05 --> n06
  n06 --> n07
  n07 --> d01
  d01 -->|"oui"| n08
  d01 -->|"non"| n09
  n08 --> n13
  n09 --> n13
  n02 --> n10
  n10 --> d02
  d02 -->|"oui"| n11
  d02 -->|"non"| n12
  n11 --> n13
  n12 --> n13
ÉtapeActeurActionRègleSortie
1TitulaireOuvre la page d'abonnementCompte authentifiéPage affichée
2PlateformeAffiche le forfait courant et ses dotationsSièges, clients, crédits par moisSituation connue
3TitulaireChoisit le nouveau forfaitLes paliers retirés de la vente ne sont pas proposésForfait cible
4PlateformeCalcule l'écart de sièges, clients et créditsL'écart est affiché avant paiementÉcart affiché
5PlateformePrésente le montant au prorataMontant calculé, jamais estimé à la mainMontant affiché
6TitulaireConfirme le changementConfirmation expliciteChangement demandé
7PlateformeAppelle le prestataire de paiementAucun droit accordé avant encaissementPaiement engagé
8PlateformeApplique les nouveaux droitsLes droits viennent du catalogue de la plateformeDroits recalculés
9PlateformeConserve l'ancien forfait en cas de refusAucun état intermédiaireSituation inchangée
10TitulaireDemande la résiliationVoir la branche ci-dessousDemande émise
11PlateformeOuvre l'écran de résiliation en libre-service⚠️ Portail Affaires uniquement — confirmation par saisie, motif facultatif, effet en fin de périodeRésiliation programmée
12PlateformeRoute une demande vers le cabinet⚠️ Aucun écran de résiliation au portail Client ni sur mobile. Un particulier ne résilie pas seulDemande routée à un humain

Statut : Livré pour le changement de forfait. Résiliation en libre-service : Livré — portail Affaires seulement.

2.20 A20 — Demande d'export de données#

⚠️ Ce flux ne va pas à son terme dans le produit#

Le point d'entrée d'export existe et crée une demande à l'état « en attente ». Aucun processus ne l'exécute — le travailleur asynchrone porte une réserve de non-implémentation explicite dans le code, et l'adresse de téléchargement reste vide. Le périmètre couvert ne serait de toute façon que le profil client — profil, adhésions, avis — ni la comptabilité, ni les déclarations, ni les documents, ni les finances personnelles.

Le diagramme ci-dessous représente donc le flux réel, terminaison comprise. Formulation autorisée en communication : « vous pouvez demander l'export de vos données ; la demande est traitée par votre cabinet. » ⛔ Interdit : « export intégral en libre-service ».

flowchart TD
  subgraph l1["Titulaire"]
    n01(["Ouvrir les droits sur ses données"])
    n02["Demander un export"]
    n07["Voir la demande en attente"]
  end
  subgraph l2["Plateforme"]
    n03["Créer la demande à l état en attente"]
    n04["Router un ticket vers le cabinet"]
    n05["Ne déclencher aucun travailleur d exécution"]
    n06["Laisser l adresse de téléchargement vide"]
  end
  subgraph l3["Humain du cabinet"]
    n08["Prendre en charge le ticket"]
    n09["Constituer la remise hors produit"]
    n10(["Fin — traitement humain"])
  end
  n01 --> n02
  n02 --> n03
  n03 --> n04
  n03 --> n05
  n05 --> n06
  n06 --> n07
  n04 --> n08
  n08 --> n09
  n09 --> n10
ÉtapeActeurActionRègleSortie
1TitulaireOuvre l'écran des droits sur ses donnéesÉcran présent sur le portailÉcran affiché
2TitulaireDemande un exportLa demande est acceptéeDemande soumise
3PlateformeCrée la demande à l'état « en attente »État initial et état final dans le produitDemande en attente
4PlateformeRoute un ticket vers le cabinetLe traitement est humainTicket ouvert
5PlateformeNe déclenche aucun travailleur d'exécution⚠️ Le travailleur asynchrone n'existe pasAucune exécution
6PlateformeLaisse l'adresse de téléchargement videAucun lien fabriqué, aucun faux succèsAdresse vide
7TitulaireVoit sa demande en attenteL'écran ne promet pas de délai qu'il ne peut pas tenirÉtat visible
8Humain du cabinetPrend en charge le ticketHors du produitPrise en charge
9Humain du cabinetConstitue la remise hors produitPérimètre à convenir avec le demandeurRemise manuelle

Statut : Livré — partiel. Le flux d'écran existe ; le processus d'exécution n'existe pas.


3. Diagrammes de séquence#

Dix-huit diagrammes. Chacun est suivi de son tableau N° | Émetteur | Destinataire | Message | Condition | Réponse | Cas d'erreur.

3.1 Q01 — Authentification#

sequenceDiagram
  participant a01 as "Navigateur"
  participant a02 as "Portail"
  participant a03 as "Fournisseur d identité"
  participant a04 as "Service de comptes"
  a01->>a02: Ouvrir une page protégée
  a02->>a03: Rediriger vers l authentification
  a01->>a03: Soumettre les identifiants
  alt Identifiants valides
    a03-->>a02: Jeton signé
    a02->>a04: Résoudre le compte et le locataire
    a04-->>a02: Compte locataire et contextes autorisés
    a02-->>a01: Session ouverte et contexte par défaut
  else Identifiants refusés
    a03-->>a01: Refus explicite sans session
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1NavigateurPortailOuvrir une page protégéeAucune session activeRedirection
2PortailFournisseur d'identitéRediriger vers l'authentificationToujoursFormulaireFournisseur injoignable — le message le dit, aucune session fabriquée
3NavigateurFournisseur d'identitéSoumettre les identifiantsFormulaire rempliDécisionRefus explicite, aucune session
4Fournisseur d'identitéPortailJeton signéIdentifiants validesJetonJeton expiré — nouvelle authentification demandée
5PortailService de comptesRésoudre le compte et le locataireJeton valideCompte et locataireCompte inconnu — accès refusé
6Service de comptesPortailContextes autorisésToujoursListe des contextesAucun contexte autorisé — contexte de repli
7PortailNavigateurSession ouverte et contexte par défautRésolution réussieTableau de bord

Note. L'authentification à deux facteurs n'est pas implémentée. Elle n'apparaît donc dans aucune branche de ce diagramme, et elle ne doit être annoncée nulle part.

3.2 Q02 — Tableau de bord contextuel#

sequenceDiagram
  participant a01 as "Navigateur"
  participant a02 as "Portail"
  participant a03 as "Catalogue de la plateforme"
  participant a04 as "Services de domaine"
  a01->>a02: Demander le tableau de bord
  a02->>a03: Résoudre les droits du contexte actif
  a03-->>a02: Modules autorisés et clefs d offre
  a02->>a04: Demander les indicateurs des modules autorisés
  a04-->>a02: Indicateurs disponibles
  a02-->>a01: Tableau de bord composé
  Note over a02,a04: Une source injoignable affiche un tiret, jamais un zéro
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1NavigateurPortailDemander le tableau de bordSession activeComposition engagée
2PortailCatalogueRésoudre les droits du contexte actifContexte connuModules autorisésCatalogue injoignable — aucun droit accordé par défaut
3CataloguePortailModules autorisés et clefs d'offreToujoursListeListe vide — le tableau de bord n'affiche que le socle
4PortailServices de domaineDemander les indicateursModule autoriséValeursService injoignable — tuile en tiret
5Services de domainePortailIndicateurs disponiblesDonnées présentesValeursAucune donnée — mention explicite, jamais un zéro
6PortailNavigateurTableau de bord composéToujoursÉcran

3.3 Q03 — Bascule de contexte#

sequenceDiagram
  participant a01 as "Utilisateur"
  participant a02 as "Portail"
  participant a03 as "Catalogue de la plateforme"
  participant a04 as "Registre de navigation"
  a01->>a02: Ouvrir le sélecteur de contexte
  a02->>a03: Lister les contextes autorisés
  a03-->>a02: Contextes autorisés et contextes conditionnés
  a02-->>a01: Cartes de contexte visibles
  a01->>a02: Choisir un contexte
  alt Droits suffisants
    a02->>a04: Recomposer la navigation
    a04-->>a02: Arborescence du contexte
    a02-->>a01: Redirection vers le tableau de bord du contexte
  else Clef d offre inactive
    a02-->>a01: Carte absente et parcours d achat proposé
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1UtilisateurPortailOuvrir le sélecteur de contexteSession activeSélecteur
2PortailCatalogueLister les contextes autorisésToujoursListeCatalogue injoignable — le contexte courant est conservé
3CataloguePortailContextes autorisés et conditionnésToujoursListe qualifiée
4PortailUtilisateurCartes de contexte visiblesToujoursSélecteur affichébusiness, epicerie, startup masqués sans clef active
5UtilisateurPortailChoisir un contexteCarte visibleBascule engagée
6PortailRegistre de navigationRecomposer la navigationDroits suffisantsArborescenceÉchec — le contexte antérieur reste actif
7PortailUtilisateurRedirection vers le tableau de bordRecomposition réussieÉcran du contexteTrois contextes ont un tableau de bord dédié

3.4 Q04 — Téléversement et extraction#

sequenceDiagram
  participant a01 as "Utilisateur"
  participant a02 as "Service de documents"
  participant a03 as "Moteur de vision"
  participant a04 as "Compteur de crédits"
  a01->>a02: Téléverser le fichier
  a02-->>a01: Fichier stocké et horodaté
  a02->>a04: Vérifier le solde avant extraction
  alt Solde suffisant
    a02->>a03: Demander l extraction
    a03-->>a02: Champs extraits et indice de confiance
    a02-->>a01: Champs proposés à la validation
  else Solde épuisé
    a02-->>a01: Fichier conservé et extraction non lancée
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1UtilisateurService de documentsTéléverser le fichierFormat et taille conformesAccusé de stockageTaille dépassée — la limite est nommée
2Service de documentsUtilisateurFichier stocké et horodatéToujoursConfirmationStockage indisponible — aucun état de succès
3Service de documentsCompteur de créditsVérifier le soldeExtraction demandéeSolde
4Service de documentsMoteur de visionDemander l'extractionSolde suffisantChamps extraitsMoteur injoignable — saisie manuelle proposée
5Moteur de visionService de documentsChamps et indice de confianceExtraction réussieChampsExtraction infructueuse — aucun champ deviné
6Service de documentsUtilisateurChamps proposés à la validationToujoursFormulaire prérempliLa proposition n'écrit rien avant validation
7Service de documentsUtilisateurExtraction non lancéeSolde épuiséMessage expliciteLe fichier reste conservé

3.5 Q05 — Calcul fiscal fédéral et provincial#

sequenceDiagram
  participant a01 as "Contribuable"
  participant a02 as "Portail"
  participant a03 as "Service de fiscalité"
  participant a04 as "Table de taux datés"
  a01->>a02: Demander le calcul
  a02->>a03: Transmettre les données du dossier
  a03->>a04: Demander les taux de l année
  alt Taux présents
    a04-->>a03: Taux fédéraux et provinciaux
    a03-->>a02: Résultat fédéral résultat provincial et détail par ligne
    a02-->>a01: Résultats et détail de calcul
  else Taux manquant
    a04-->>a03: Erreur de taux manquant
    a03-->>a02: Calcul refusé avec la cause
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1ContribuablePortailDemander le calculDonnées saisiesCalcul engagé
2PortailService de fiscalitéTransmettre les données du dossierDossier ouvertTraitementDossier verrouillé — calcul refusé
3Service de fiscalitéTable de tauxDemander les taux de l'annéeAnnée connueTaux
4Table de tauxService de fiscalitéTaux fédéraux et provinciauxTaux présentsValeurs datéesUn taux manquant lève une erreur, il ne vaut jamais zéro
5Service de fiscalitéPortailRésultats et détail par ligneCalcul aboutiRésultatsÉcart entre fédéral et provincial au-delà du seuil — signalé
6PortailContribuableRésultats et détail de calculToujoursÉcran de résultatCalcul refusé — la cause est nommée, pas masquée

3.6 Q06 — Demande de document, du cabinet au client#

sequenceDiagram
  participant a01 as "Cabinet"
  participant a02 as "Service de documents"
  participant a03 as "Passerelle de notification"
  participant a04 as "Portail Client"
  a01->>a02: Créer la demande de document
  a02-->>a01: Demande en attente
  a02->>a03: Notifier le client
  a03-->>a04: Notification remise
  a04->>a02: Téléverser la pièce demandée
  a02-->>a04: Demande satisfaite
  a02->>a03: Notifier le cabinet
  a03-->>a01: Pièce disponible au dossier
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1CabinetService de documentsCréer la demandeClient rattachéDemande crééePièce déjà présente — le doublon est signalé
2Service de documentsCabinetDemande en attenteToujoursÉtat initial
3Service de documentsPasserelle de notificationNotifier le clientCanal actifEnvoiAucun canal — l'absence est signalée au cabinet
4PasserellePortail ClientNotification remiseToujoursDemande visible dans les actions
5Portail ClientService de documentsTéléverser la pièceDemande ouverteDépôtType non conforme — la demande reste en attente
6Service de documentsPortail ClientDemande satisfaiteDépôt conformeTransition d'état
7Service de documentsPasserelleNotifier le cabinetToujoursEnvoi
8PasserelleCabinetPièce disponible au dossierToujoursPièce visibleAucun transfert manuel entre les deux portails

3.7 Q07 — Signature multi-parties#

sequenceDiagram
  participant a01 as "Cabinet"
  participant a02 as "Service de documents"
  participant a03 as "Service de signature"
  participant a04 as "Signataire"
  a01->>a02: Ouvrir le cycle de signature
  a02->>a03: Créer le dossier de signature
  a03-->>a02: Cycle ouvert et ordre des signataires
  a03->>a04: Inviter le signataire courant
  a04->>a03: Apposer la signature
  a03-->>a02: Signature enregistrée
  alt Signataires restants
    a03->>a04: Inviter le signataire suivant
  else Tous ont signé
    a03-->>a02: Document scellé et preuve d apposition
    a02-->>a01: Document signé au dossier
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1CabinetService de documentsOuvrir le cycle de signatureDocument finaliséCycle demandéDocument modifiable — refus, il faut le figer
2Service de documentsService de signatureCréer le dossier de signatureSignataires désignésCycle ouvertService injoignable — aucun cycle ouvert
3Service de signatureSignataireInviter le signataire courantOrdre respectéInvitationAdresse invalide — l'échec est remonté au cabinet
4SignataireService de signatureApposer la signatureInvitation valideSignatureLien expiré — nouvelle invitation nécessaire
5Service de signatureService de documentsSignature enregistréeToujoursProgression
6Service de signatureService de documentsDocument scellé et preuveTous ont signéDocument scelléScellement échoué — le cycle reste ouvert
7Service de documentsCabinetDocument signé au dossierToujoursPièce disponible

3.8 Q08 — Paiement et rapprochement#

sequenceDiagram
  participant a01 as "Payeur"
  participant a02 as "Service de facturation"
  participant a03 as "Prestataire de paiement"
  participant a04 as "Service de comptabilité"
  a01->>a02: Déclencher le paiement de la facture
  a02->>a03: Créer l intention de paiement
  a03-->>a02: Encaissement confirmé
  a02->>a02: Rattacher le paiement à la facture
  a02-->>a01: Solde de la facture mis à jour
  a02->>a04: Rendre le paiement rapprochable
  a04-->>a02: Écriture disponible au rapprochement
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1PayeurService de facturationDéclencher le paiementFacture émise et non soldéeIntention crééeFacture annulée — paiement non affecté et signalé
2Service de facturationPrestataire de paiementCréer l'intention de paiementMoyen de paiement disponibleEncaissementPrestataire injoignable — aucun encaissement écrit
3PrestataireService de facturationEncaissement confirméPaiement acceptéConfirmationRefus — motif affiché, aucune écriture
4Service de facturationLui-mêmeRattacher le paiement à la factureEncaissement confirméRattachementPaiement partiel — reliquat calculé
5Service de facturationPayeurSolde mis à jourToujoursSolde exactAvoir antérieur pris en compte dans le net dû
6Service de facturationService de comptabilitéRendre le paiement rapprochableToujoursÉcriture disponibleExtourne ultérieure — la facture rouvre et l'événement est tracé

3.9 Q09 — Souscription et attribution des droits#

sequenceDiagram
  participant a01 as "Titulaire"
  participant a02 as "Service de facturation"
  participant a03 as "Prestataire de paiement"
  participant a04 as "Catalogue de la plateforme"
  a01->>a02: Souscrire un forfait
  a02->>a04: Lire la définition du forfait
  a04-->>a02: Sièges clients crédits et modules inclus
  a02->>a03: Encaisser
  alt Paiement accepté
    a03-->>a02: Encaissement confirmé
    a02->>a04: Activer les droits du forfait
    a04-->>a02: Droits actifs
    a02-->>a01: Abonnement actif
  else Paiement refusé
    a03-->>a02: Refus
    a02-->>a01: Aucun droit accordé
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1TitulaireService de facturationSouscrire un forfaitForfait en venteSouscription engagéePalier retiré de la vente — non proposé
2Service de facturationCatalogueLire la définition du forfaitToujoursSièges, clients, crédits, modulesCatalogue injoignable — souscription refusée
3CatalogueService de facturationDotations du forfaitToujoursValeursVoir Q18 — écart possible entre valeur servie et valeur en base
4Service de facturationPrestataire de paiementEncaisserMoyen de paiement valideEncaissementRefus — aucun droit accordé
5Service de facturationCatalogueActiver les droitsEncaissement confirméDroits actifsAucun droit avant encaissement
6Service de facturationTitulaireAbonnement actifToujoursConfirmationActivation partielle — l'état reste en cours, pas actif

3.10 Q10 — Achat de module#

sequenceDiagram
  participant a01 as "Titulaire"
  participant a02 as "Portail"
  participant a03 as "Service de facturation"
  participant a04 as "Catalogue de la plateforme"
  a01->>a02: Ouvrir un contexte conditionné
  a02->>a04: Vérifier la clef d offre
  a04-->>a02: Clef inactive
  a02-->>a01: Proposer le module ou l ensemble
  a01->>a03: Acheter le module
  a03->>a04: Activer la clef d offre
  a04-->>a03: Clef active
  a03-->>a02: Droits recalculés
  a02-->>a01: Carte du contexte désormais visible
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1TitulairePortailOuvrir un contexte conditionnéContexte demandéVérification
2PortailCatalogueVérifier la clef d'offreToujoursÉtat de la clefCatalogue injoignable — la carte reste masquée
3CataloguePortailClef inactiveClef non détenueÉtat
4PortailTitulaireProposer le module ou l'ensembleClef inactiveOffre affichéeCinq ensembles existent — Patrimoine, Entrepreneur, Affaires, PME, Épicerie
5TitulaireService de facturationAcheter le moduleOffre acceptéeAchat engagéPaiement refusé — aucune clef activée
6Service de facturationCatalogueActiver la clef d'offrePaiement acceptéClef activeActivation échouée — l'état reste inchangé
7PortailTitulaireCarte du contexte visibleClef activeSélecteur recomposé

3.11 Q11 — Consommation de crédits et refus au plafond#

sequenceDiagram
  participant a01 as "Utilisateur"
  participant a02 as "Service applicatif"
  participant a03 as "Compteur de crédits"
  participant a04 as "Passerelle de modèles"
  a01->>a02: Demander une action assistée
  a02->>a03: Vérifier le solde
  alt Solde strictement positif
    a03-->>a02: Solde suffisant
    a02->>a04: Appeler le modèle
    a04-->>a02: Réponse et modèle réellement servi
    a02->>a03: Décompter au tarif daté du modèle servi
    a03-->>a02: Nouveau solde
    a02-->>a01: Réponse et solde mis à jour
  else Solde nul
    a03-->>a02: Crédits insuffisants
    a02-->>a01: Appel refusé et cause nommée
  end
  Note over a02,a03: Aucun dépassement n est jamais facturé
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1UtilisateurService applicatifDemander une action assistéeSession activeTraitement
2Service applicatifCompteur de créditsVérifier le soldeAvant l'appel, jamais aprèsSoldeCompteur injoignable — l'appel n'est pas lancé
3CompteurService applicatifCrédits insuffisantsSolde nulRefusL'appel est refusé. Aucun dépassement facturé
4Service applicatifUtilisateurAppel refusé et cause nomméeSolde nulMessage expliciteLe message dit « crédits épuisés », jamais « service indisponible »
5Service applicatifPasserelle de modèlesAppeler le modèleSolde suffisantRéponsePasserelle injoignable — cause distincte du manque de crédits
6PasserelleService applicatifRéponse et modèle réellement serviToujoursIdentité du modèleLe modèle servi peut différer du modèle demandé — le tarif suit le modèle servi
7Service applicatifCompteurDécompter au tarif datéRéponse obtenueNouveau soldeTarif absent — erreur levée, jamais zéro
8Service applicatifUtilisateurRéponse et solde mis à jourToujoursÉcran

Réserve de communication. ✅ Autorisé : « vos crédits sont visibles, et au zéro l'appel est refusé plutôt que facturé. » ⛔ Interdit : « plafonnez votre dépense » — aucun plafond de dépense configurable n'existe. Le seul réglage voisin est un seuil de recharge automatique, qui est l'inverse d'un plafond. Le plafond effectif est la dotation du forfait, non modifiable.

3.12 Q12 — Orchestration multi-agents#

sequenceDiagram
  participant a01 as "Professionnel"
  participant a02 as "Orchestrateur"
  participant a03 as "Agent analyste"
  participant a04 as "Agent rédacteur"
  participant a05 as "Agent critique"
  a01->>a02: Confier une tâche composée
  a02->>a03: Analyser les données du dossier
  a03-->>a02: Constats et sources
  a02->>a04: Rédiger la synthèse à partir des constats
  a04-->>a02: Projet de synthèse
  a02->>a05: Revoir la synthèse
  alt Revue favorable
    a05-->>a02: Verdict favorable
    a02-->>a01: Synthèse et attribution par agent
  else Revue défavorable
    a05-->>a02: Verdict défavorable et motifs
    a02->>a04: Reprendre la rédaction
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1ProfessionnelOrchestrateurConfier une tâche composéeDroits suffisants et crédits disponiblesTâche prise en chargeCrédits épuisés — la tâche n'est pas lancée
2OrchestrateurAgent analysteAnalyser les données du dossierDonnées accessiblesConstats et sourcesDonnées inaccessibles — l'étape est marquée en échec, pas ignorée
3Agent analysteOrchestrateurConstats et sourcesToujoursConstats tracésAucun constat — l'absence est dite, pas remplacée par un texte générique
4OrchestrateurAgent rédacteurRédiger la synthèseConstats disponiblesProjet de synthèseRédaction refusée par les garde-fous — motif affiché
5OrchestrateurAgent critiqueRevoir la synthèseProjet disponibleVerdictUn verdict de repli n'a pas la même valeur qu'un verdict complet — la distinction est portée
6Agent critiqueOrchestrateurVerdict et motifsToujoursDécisionVerdict indisponible — la synthèse n'est pas présentée comme revue
7OrchestrateurProfessionnelSynthèse et attribution par agentRevue favorableRésultat attribuéChaque contribution reste attribuable à son agent

3.13 Q13 — Extraction par vision#

sequenceDiagram
  participant a01 as "Service de documents"
  participant a02 as "Service de vision"
  participant a03 as "Modèle de vision"
  participant a04 as "Compteur de crédits"
  a01->>a02: Soumettre le fichier à extraire
  a02->>a04: Vérifier et réserver les crédits
  a04-->>a02: Réservation acceptée
  a02->>a03: Analyser le document
  a03-->>a02: Champs indices de confiance et zones
  a02->>a04: Décompter le coût réel
  a02-->>a01: Champs proposés avec leur confiance
  Note over a02,a01: Aucun champ n est écrit sans validation humaine
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1Service de documentsService de visionSoumettre le fichierFichier stockéTraitement engagéFormat non pris en charge — saisie manuelle proposée
2Service de visionCompteur de créditsVérifier et réserver les créditsToujoursRéservationSolde nul — extraction non lancée, fichier conservé
3Service de visionModèle de visionAnalyser le documentRéservation acceptéeChamps et zonesModèle injoignable — la réservation est libérée
4Modèle de visionService de visionChamps, indices de confiance et zonesAnalyse réussieRésultatConfiance faible — le champ est proposé, marqué à vérifier
5Service de visionCompteurDécompter le coût réelAnalyse terminéeNouveau soldeCoût réel différent de la réservation — l'écart est régularisé
6Service de visionService de documentsChamps proposés avec leur confianceToujoursFormulaire prérempliAucune écriture sans validation humaine

3.14 Q14 — Prévision de trésorerie#

sequenceDiagram
  participant a01 as "Ordonnanceur"
  participant a02 as "Service de trésorerie"
  participant a03 as "Service de facturation"
  participant a04 as "Moteur de prévision"
  a01->>a02: Déclencher le calcul périodique
  a02->>a03: Demander les échéances à recevoir et à payer
  a03-->>a02: Échéances datées
  a02->>a04: Demander la prévision de flux
  a04-->>a02: Prévision et hypothèses retenues
  a02-->>a02: Comparer à la position réelle
  a02->>a01: Prévision publiée avec sa date de calcul
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1OrdonnanceurService de trésorerieDéclencher le calcul périodiquePériodicité atteinteCalcul engagé
2Service de trésorerieService de facturationDemander les échéancesToujoursÉchéances datéesService injoignable — la prévision n'est pas publiée
3Service de facturationService de trésorerieÉchéances à recevoir et à payerToujoursListeListe vide — mention explicite, jamais une prévision plate
4Service de trésorerieMoteur de prévisionDemander la prévision de fluxHistorique suffisantPrévisionHistorique insuffisant — l'insuffisance est nommée
5Moteur de prévisionService de trésoreriePrévision et hypothèses retenuesToujoursPrévision qualifiéeUne prévision sans ses hypothèses n'est pas publiée
6Service de trésorerieLui-mêmeComparer à la position réellePosition connueÉcart
7Service de trésorerieOrdonnanceurPrévision publiée avec sa date de calculCalcul aboutiPublicationUne prévision périmée porte sa date, elle n'est pas rafraîchie en silence

3.15 Q15 — Flux de travail automatisé#

sequenceDiagram
  participant a01 as "Concepteur"
  participant a02 as "Service de flux"
  participant a03 as "Service de domaine"
  participant a04 as "Passerelle de notification"
  a01->>a02: Publier un modèle de flux
  a02-->>a01: Modèle actif
  a03->>a02: Émettre un événement métier
  a02->>a02: Évaluer les conditions du modèle
  alt Conditions satisfaites
    a02->>a03: Exécuter l action automatisée
    a03-->>a02: Résultat de l action
    a02->>a04: Notifier les destinataires
  else Conditions non satisfaites
    a02-->>a03: Aucune action et trace de l évaluation
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1ConcepteurService de fluxPublier un modèle de fluxModèle valideModèle actifModèle incomplet — publication refusée
2Service de domaineService de fluxÉmettre un événement métierÉvénement déclaréPrise en compteÉvénement inconnu — ignoré et tracé
3Service de fluxLui-mêmeÉvaluer les conditionsModèle actifDécision
4Service de fluxService de domaineExécuter l'action automatiséeConditions satisfaitesRésultatUne action à conséquence passe par une approbation humaine — voir A18
5Service de domaineService de fluxRésultat de l'actionToujoursSuccès ou échecÉchec — l'instance reste en erreur, jamais close en succès
6Service de fluxPasserelle de notificationNotifier les destinatairesAction exécutéeEnvoiAucun destinataire — l'absence est tracée
7Service de fluxService de domaineAucune action et trace de l'évaluationConditions non satisfaitesTraceUne non-exécution est tracée comme un événement, pas comme un silence

3.16 Q16 — Rendez-vous avec visioconférence#

sequenceDiagram
  participant a01 as "Client"
  participant a02 as "Service de réservation"
  participant a03 as "Service de visioconférence"
  participant a04 as "Passerelle de notification"
  a01->>a02: Demander un créneau
  a02-->>a01: Créneaux libres selon disponibilités et exceptions
  a01->>a02: Réserver un créneau
  a02->>a02: Bloquer le créneau
  alt Rendez-vous distanciel
    a02->>a03: Créer la salle
    a03-->>a02: Adresse de salle
  else Rendez-vous en présence
    a02-->>a02: Aucune salle à créer
  end
  a02->>a04: Confirmer aux deux parties et programmer le rappel
  a04-->>a01: Confirmation et rappel programmé
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1ClientService de réservationDemander un créneauLien de réservation actifCréneauxAucune disponibilité — la période suivante est proposée
2Service de réservationClientCréneaux libresDisponibilités déclaréesListeLes exceptions de disponibilité retirent des créneaux
3ClientService de réservationRéserver un créneauCréneau encore libreRéservationCréneau pris entre-temps — refus avec la cause exacte
4Service de réservationLui-mêmeBloquer le créneauToujoursCréneau bloquéConflit avec un calendrier externe synchronisé — créneau non proposé
5Service de réservationService de visioconférenceCréer la salleRendez-vous distancielAdresse de salleService indisponible — le lien est marqué indisponible, pas affiché vide
6Service de réservationPasserelle de notificationConfirmer et programmer le rappelToujoursEnvoiCourriel invalide — le défaut est signalé au professionnel
7PasserelleClientConfirmation et rappel programméToujoursConfirmation

3.17 Q17 — Notification multicanal#

sequenceDiagram
  participant a01 as "Service émetteur"
  participant a02 as "Service de notification"
  participant a03 as "Préférences du destinataire"
  participant a04 as "Canal de remise"
  a01->>a02: Émettre une notification
  a02->>a03: Lire les canaux actifs et les préférences
  alt Au moins un canal actif
    a03-->>a02: Canaux retenus
    a02->>a04: Remettre sur chaque canal
    a04-->>a02: Accusé de remise par canal
    a02-->>a01: Remise tracée
  else Aucun canal actif
    a03-->>a02: Aucun canal
    a02-->>a01: Absence de canal signalée et notification conservée
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1Service émetteurService de notificationÉmettre une notificationÉvénement notifiablePrise en charge
2Service de notificationPréférencesLire les canaux actifsDestinataire connuCanauxDestinataire inconnu — l'émission est refusée et tracée
3PréférencesService de notificationCanaux retenusAu moins un canalListeAucun canal — l'absence est signalée à l'émetteur, jamais silencieuse
4Service de notificationCanal de remiseRemettre sur chaque canalCanal actifAccuséCanal en échec — l'échec est par canal, pas global
5Canal de remiseService de notificationAccusé de remiseRemise effectuéeAccuséSans accusé, la remise n'est pas déclarée réussie
6Service de notificationService émetteurRemise tracéeToujoursTraceLa notification reste consultable dans le produit même sans remise externe

3.18 Q18 — Détection d'écart de catalogue#

Cas réel. Le forfait Gratuit était servi à 10 crédits par mois alors que la base du catalogue en portait 23. Deux mesures existaient, elles ne concordaient pas, et chacune prise seule paraissait vraie. C'est exactement le motif qui justifie une détection par comparaison, jamais par confiance en une source.

sequenceDiagram
  participant a01 as "Sonde de contrôle"
  participant a02 as "Interface publique du catalogue"
  participant a03 as "Base du catalogue"
  participant a04 as "Rôle finance"
  a01->>a02: Lire la dotation servie du forfait
  a02-->>a01: Dotation servie
  a01->>a03: Lire la dotation en base
  a03-->>a01: Dotation en base
  a01->>a01: Comparer les deux valeurs
  alt Valeurs identiques
    a01-->>a04: Aucun écart
  else Valeurs divergentes
    a01-->>a04: Écart nommé avec les deux valeurs et leur origine
    a04->>a03: Corriger la source fautive et publier une version datée
  end
ÉmetteurDestinataireMessageConditionRéponseCas d'erreur
1Sonde de contrôleInterface publique du catalogueLire la dotation servieInterface joignableValeur servieInterface injoignable — la mesure est « inconcluante », pas « conforme »
2Interface publiqueSondeDotation servieToujoursValeurCas observé : 10 crédits pour le forfait Gratuit
3SondeBase du catalogueLire la dotation en baseAccès autoriséValeur en baseAccès refusé — mesure inconcluante
4Base du catalogueSondeDotation en baseToujoursValeurCas observé : 23 crédits pour le même forfait
5SondeElle-mêmeComparer les deux valeursLes deux mesures obtenuesVerdictUne seule mesure obtenue ne permet aucun verdict
6SondeRôle financeÉcart nommé avec les deux valeurs et leur origineDivergenceAlerte qualifiéeUn écart annoncé sans nommer les deux origines n'est pas actionnable
7Rôle financeBase du catalogueCorriger la source fautive et publier une version datéeÉcart confirméNouvelle versionSeul le rôle finance peut modifier le catalogue — voir la matrice route × rôle

Trois enseignements de ce cas.

  1. Deux sondes qui partagent le même angle mort se confirment mutuellement. Le témoin doit différer par sa nature — ici, une lecture par l'interface publique et une lecture en base, pas deux appels à la même interface.
  2. Une mesure impossible est un verdict « inconcluant », pas un verdict « conforme ». Un contrôle qui ne peut pas regarder ne doit jamais rendre vert.
  3. Le prix et les dotations n'ont qu'un seul propriétaire. La matrice route × rôle du portail Administration confie le catalogue au rôle finance et à lui seul — l'administrateur de plateforme n'y a qu'un accès en lecture. Cette séparation est ce qui rend la correction traçable.

4. Diagrammes d'états#

Six objets métier, chacun avec son cycle de vie complet.

4.1 Dossier fiscal#

stateDiagram-v2
  state "Ouvert" as s01
  state "En collecte de pièces" as s02
  state "En calcul" as s03
  state "Prêt à transmettre" as s04
  state "Transmis" as s05
  state "Cotisé" as s06
  state "En révision" as s07
  [*] --> s01
  s01 --> s02: ouverture de la liste de contrôle
  s02 --> s03: pièces suffisantes
  s03 --> s02: pièce manquante détectée
  s03 --> s04: calcul validé
  s04 --> s03: correction demandée
  s04 --> s05: accusé de transmission reçu
  s04 --> s04: transmission refusée sans accusé
  s05 --> s06: avis de cotisation enregistré
  s06 --> s07: écart contesté
  s07 --> s05: déclaration corrigée retransmise
  s06 --> [*]
ÉtatCe qu'il autoriseTransition sortante notableStatut
OuvertSaisie, dépôt de piècesVers la collecte dès l'ouverture de la liste de contrôleLivré
En collecte de piècesDépôt, demandes de documentsVers le calcul quand les pièces sont suffisantesLivré
En calculCalcul, correctionRetour à la collecte si une pièce manqueLivré
Prêt à transmettreTransmissionSans accusé, l'état ne change pas — pas de faux « transmis »Livré
TransmisConsultation, attente de cotisationVers cotisé à l'enregistrement de l'avisLivré
CotiséConsultation, contestationVers révision si l'écart est contestéLivré
En révisionCorrection, retransmissionRetour à transmisLivré

4.2 Facture#

stateDiagram-v2
  state "Brouillon" as s01
  state "Émise" as s02
  state "Partiellement soldée" as s03
  state "Soldée" as s04
  state "Échue" as s05
  state "En recouvrement" as s06
  state "Annulée par avoir" as s07
  [*] --> s01
  s01 --> s02: émission et numérotation
  s02 --> s03: paiement partiel
  s02 --> s04: paiement intégral
  s03 --> s04: solde du reliquat
  s02 --> s05: échéance dépassée
  s03 --> s05: échéance dépassée
  s05 --> s06: séquence de recouvrement engagée
  s06 --> s04: paiement reçu
  s02 --> s07: avoir émis
  s04 --> s02: extourne du paiement
  s04 --> [*]
  s07 --> [*]
ÉtatCe qu'il autoriseTransition sortante notableStatut
BrouillonModification libreVers émise à la numérotationLivré
ÉmisePaiement, avoirPlus modifiable — seulement extournable par avoirLivré
Partiellement soldéePaiement du reliquatLe reliquat est affiché, jamais masquéLivré
SoldéeConsultationRetour possible à émise si le prestataire notifie une extourneLivré
ÉchueRelanceVers recouvrement selon la séquence configuréeLivré
En recouvrementÉtapes de relanceVers soldée au paiementLivré
Annulée par avoirConsultationÉtat terminalLivré

4.3 Document#

stateDiagram-v2
  state "Déposé" as s01
  state "En extraction" as s02
  state "Champs proposés" as s03
  state "Validé" as s04
  state "Classé" as s05
  state "En signature" as s06
  state "Signé et scellé" as s07
  state "Archivé" as s08
  [*] --> s01
  s01 --> s02: extraction demandée
  s02 --> s03: extraction réussie
  s02 --> s01: extraction infructueuse
  s03 --> s04: validation humaine
  s01 --> s04: saisie manuelle
  s04 --> s05: classement confirmé
  s05 --> s06: cycle de signature ouvert
  s06 --> s07: tous les signataires ont signé
  s06 --> s05: cycle abandonné
  s05 --> s08: archivage
  s07 --> s08: archivage
  s08 --> [*]
ÉtatCe qu'il autoriseTransition sortante notableStatut
DéposéConsultation, extractionLe fichier est conservé même si l'extraction échoueLivré
En extractionAttenteRetour à déposé si l'extraction est infructueuseLivré
Champs proposésValidation, correctionAucune écriture avant validation humaineLivré
ValidéClassementVers classé à la confirmationLivré
ClasséPartage, signatureVers signature quand un cycle s'ouvreLivré
En signatureSignature des partiesLe document n'est plus modifiableLivré
Signé et scelléConsultationPreuve d'apposition conservéeLivré
ArchivéConsultationÉtat terminalLivré

4.4 Mandat#

stateDiagram-v2
  state "Proposé" as s01
  state "Accepté" as s02
  state "En exécution" as s03
  state "En attente du client" as s04
  state "En revue" as s05
  state "Livré" as s06
  state "Clos" as s07
  state "Abandonné" as s08
  [*] --> s01
  s01 --> s02: acceptation du client
  s01 --> s08: refus du client
  s02 --> s03: démarrage des travaux
  s03 --> s04: pièce ou décision attendue
  s04 --> s03: réponse reçue
  s03 --> s05: travaux achevés
  s05 --> s03: revue défavorable
  s05 --> s06: revue favorable
  s06 --> s07: facturation et clôture
  s07 --> [*]
  s08 --> [*]
ÉtatCe qu'il autoriseTransition sortante notableStatut
ProposéAcceptation, refusUn refus mène à abandonné, pas à un état intermédiaireLivré
AcceptéDémarrageVers exécutionLivré
En exécutionTravaux, demandes de piècesVers attente du client quand une pièce manqueLivré
En attente du clientDépôt de pièce, décisionL'attente est un état visible des deux côtésLivré
En revueRevue interneRetour à exécution si la revue est défavorableLivré
LivréFacturationVers closLivré
ClosConsultationÉtat terminalLivré
AbandonnéConsultationÉtat terminalLivré

4.5 Abonnement#

stateDiagram-v2
  state "En souscription" as s01
  state "Actif" as s02
  state "En changement de forfait" as s03
  state "Paiement en défaut" as s04
  state "Résiliation demandée" as s05
  state "Résiliation programmée" as s06
  state "Résilié" as s07
  [*] --> s01
  s01 --> s02: encaissement confirmé
  s01 --> s01: paiement refusé et aucun droit accordé
  s02 --> s03: changement demandé
  s03 --> s02: nouveaux droits appliqués
  s03 --> s02: paiement refusé et ancien forfait conservé
  s02 --> s04: échec de prélèvement
  s04 --> s02: régularisation
  s02 --> s05: demande de résiliation
  s05 --> s06: résiliation acceptée en fin de période
  s06 --> s07: fin de période atteinte
  s07 --> [*]
ÉtatCe qu'il autoriseTransition sortante notableStatut
En souscriptionPaiementAucun droit avant encaissementLivré
ActifUsage, changement, résiliationTrois sorties possiblesLivré
En changement de forfaitPaiement du prorataUn refus conserve l'ancien forfait, sans état intermédiaireLivré
Paiement en défautRégularisationRetour à actif après régularisationLivré
Résiliation demandéeTraitement⚠️ Portail Affaires : passage automatique à « programmée ». Portail Client et mobile : aucun écran de résiliation — la demande est routée à un humainLivré — partiel
Résiliation programméeUsage jusqu'à la fin de périodeEffet en fin de période, pas immédiatLivré — portail Affaires
RésiliéConsultationÉtat terminalLivré

4.6 Demande d'approbation IA#

stateDiagram-v2
  state "En attente d approbation" as s01
  state "Approuvée" as s02
  state "Approuvée non exécutée" as s03
  state "Exécutée" as s04
  state "Rejetée" as s05
  state "Renvoyée pour modification" as s06
  state "Expirée" as s07
  [*] --> s01
  s01 --> s02: approbation par un habilité
  s01 --> s05: rejet
  s01 --> s06: modification demandée
  s01 --> s07: délai dépassé
  s06 --> s01: nouvelle proposition
  s02 --> s04: rejeu de l écriture différée réussi
  s02 --> s03: rejeu échoué
  s03 --> s04: nouveau rejeu réussi
  s04 --> [*]
  s05 --> [*]
  s07 --> [*]
ÉtatCe qu'il autoriseTransition sortante notableStatut
En attente d'approbationApprobation, rejet, renvoiL'écriture est différée, pas appliquéeLivré
ApprouvéeRejeu de l'écritureLe rejeu est la seule voie d'exécutionLivré
Approuvée non exécutéeNouveau rejeuAucun faux succès — l'échec du rejeu est un état visibleLivré
ExécutéeConsultationÉtat terminal, tracé au journal d'auditLivré
RejetéeConsultationAucune écriture n'a eu lieu — ce n'est pas une annulation après coupLivré
Renvoyée pour modificationNouvelle propositionL'écriture reste différéeLivré
ExpiréeConsultationÉtat terminal, aucune écritureLivré

5. Diagramme de classes du modèle de domaine#

Seize classes. Les noms de membres sont en caractères ASCII pour garantir le rendu.

classDiagram
  class Compte {
    +identifiant
    +courriel
    +contexteActif
    +basculerContexte()
  }
  class Locataire {
    +identifiant
    +raisonSociale
    +typePortail
  }
  class Contexte {
    +identifiant
    +libelle
    +categorie
    +routeTableauBord
    +estConditionne
  }
  class Module {
    +clef
    +libelle
    +categorie
    +portail
  }
  class Forfait {
    +code
    +prixMensuel
    +prixAnnuel
    +sieges
    +clientsMax
    +creditsParMois
    +enVente
  }
  class Ensemble {
    +code
    +libelle
    +prixMensuel
  }
  class Siege {
    +identifiant
    +role
    +dateAttribution
  }
  class CreditIA {
    +solde
    +dotationMensuelle
    +seuilRecharge
    +consommer()
    +refuserAuZero()
  }
  class Client {
    +identifiant
    +nom
    +typePersonne
  }
  class Dossier {
    +identifiant
    +annee
    +etat
    +domaine
  }
  class Document {
    +identifiant
    +nom
    +etat
    +versionCourante
  }
  class Facture {
    +numero
    +dateEmission
    +dateEcheance
    +montantTotal
    +soldeDu
    +etat
  }
  class Ecriture {
    +identifiant
    +dateComptable
    +debit
    +credit
    +compte
  }
  class Declaration {
    +identifiant
    +type
    +annee
    +etat
    +accuseTransmission
  }
  class Mandat {
    +identifiant
    +nature
    +etat
    +datesCles
  }
  class Tache {
    +identifiant
    +libelle
    +etat
    +echeance
    +assignee
  }
  Locataire "1" --> "*" Compte : heberge
  Compte "1" --> "*" Siege : occupe
  Locataire "1" --> "1" Forfait : souscrit
  Forfait "1" --> "*" Module : inclut
  Ensemble "1" --> "*" Module : regroupe
  Locataire "1" --> "*" Ensemble : achete
  Compte "*" --> "*" Contexte : accede
  Contexte "1" --> "*" Module : expose
  Locataire "1" --> "1" CreditIA : dispose
  Locataire "1" --> "*" Client : gere
  Client "1" --> "*" Dossier : possede
  Dossier "1" --> "*" Document : rassemble
  Dossier "1" --> "*" Declaration : porte
  Client "1" --> "*" Facture : recoit
  Facture "1" --> "*" Ecriture : genere
  Client "1" --> "*" Mandat : confie
  Mandat "1" --> "*" Tache : decompose
  Document "*" --> "*" Declaration : justifie

Six invariants portés par ce modèle

#InvariantPourquoi il compte
1Un compte appartient toujours à un locataire.Le cloisonnement par locataire est le modèle d'autorisation des portails Client et Affaires. Un compte orphelin serait un compte sans frontière de données.
2Un compte accède à plusieurs contextes, un contexte expose plusieurs modules.C'est la relation qui rend le mécanisme « un compte, dix-neuf contextes » exprimable. Aucune donnée n'est dupliquée par contexte.
3Le forfait et les ensembles portent les modules, jamais le compte directement.Les droits se recalculent depuis le catalogue. Un droit accordé à la main serait invisible à la révision.
4Les crédits IA appartiennent au locataire, pas au siège.Le solde est partagé et le refus au zéro s'applique à tout le locataire. Le seuilRecharge est un déclencheur de recharge — il n'est pas un plafond de dépense.
5Une facture génère des écritures ; l'inverse n'est pas vrai.Le lien est orienté pour éviter qu'une écriture manuelle ne crée une facture fantôme.
6Un document justifie plusieurs déclarations et une déclaration s'appuie sur plusieurs documents.La relation est bien de plusieurs à plusieurs. Un feuillet sert à la fois au fédéral et au provincial.

6. Traçabilité : diagramme → cas d'utilisation → histoires#

Lecture : chaque diagramme de ce document remonte à un ou plusieurs cas d'utilisation de 11-diagrammes-cas-utilisation.md, et descend vers les histoires utilisateur du recueil produit.

6.1 Activités#

DiagrammeCas d'utilisation couvertsDomaine d'histoiresStatut
A01 InscriptionUC-ENT-10 partiel, socle d'authentificationInscription et premier contexteLivré
A02 Déclaration T1 et TP1UC-FIS-01, UC-FIS-02, UC-FIS-06, UC-FIS-13, UC-FIS-14Fiscalité des particuliersLivré
A03 Déclaration de société T2UC-FIS-03, UC-CPT-07Fiscalité des sociétésLivré
A04 Cycle de paieUC-PAI-06, UC-PAI-07, UC-PAI-08, UC-PAI-09PaieLivré
A05 Rapprochement bancaireUC-CPT-03, UC-CPT-04, UC-CPT-13ComptabilitéLivré
A06 Demande de documentsUC-DOC-05, UC-DOC-06Documents partagés client cabinetLivré
A07 Signature électroniqueUC-DOC-11, UC-DOC-12SignatureLivré
A08 Facture émise et encaisséeUC-FAC-03, UC-FAC-04, UC-FAC-05FacturationLivré
A09 Facturation récurrente et relanceUC-FAC-07, UC-FAC-08, UC-FAC-14Facturation récurrenteLivré
A10 Reçu numérisé jusqu'au classementUC-DOC-01, UC-DOC-02, UC-DOC-03Dépenses et justificatifsLivré
A11 Clôture mensuelleUC-CPT-06, UC-CPT-07ClôturesLivré
A12 Remise TPS et TVQUC-FIS-07, UC-FIS-13TaxesLivré
A13 Plan d'affairesUC-ENT-01, UC-ENT-02, UC-ENT-09EntrepreneuriatLivré
A14 IncorporationUC-ENT-05, UC-ENT-06, UC-ENT-07, UC-ENT-10IncorporationLivré
A15 Mandat d'auditUC-AUD-01 à UC-AUD-07AuditLivré
A16 Demande de soumissionUC-COM-12, UC-COM-13MarketplaceLivré
A17 Requête à l'assistantUC-IA-01, UC-IA-02, UC-IA-06, UC-IA-07AssistantLivré
A18 Approbation humaineUC-IA-09, UC-IA-10Gouvernance de l'IALivré
A19 Changement de forfaitUC-ADM-06, UC-ADM-08AbonnementLivré, résiliation partielle
A20 Demande d'exportUC-AUD-09 voisinDroits sur les donnéesLivré — partiel

6.2 Séquences#

DiagrammeCas d'utilisation couvertsDomaine d'histoiresStatut
Q01 AuthentificationSocle commun à tous les casAccèsLivré
Q02 Tableau de bord contextuelUC-ENT-10, tous les domainesAccueil contextuelLivré
Q03 Bascule de contexteUC-ENT-10, UC-STU-01, UC-EXP-08ContextesLivré
Q04 Téléversement et extractionUC-DOC-01, UC-DOC-03, UC-DOC-04DocumentsLivré
Q05 Calcul fiscalUC-FIS-06FiscalitéLivré
Q06 Demande de documentUC-DOC-05, UC-DOC-06Documents partagésLivré
Q07 Signature multi-partiesUC-DOC-11, UC-DOC-12, UC-IMM-05SignatureLivré
Q08 Paiement et rapprochementUC-FAC-05, UC-CPT-04EncaissementLivré
Q09 Souscription et droitsUC-ADM-06AbonnementLivré
Q10 Achat de moduleUC-STU-01, UC-EXP-08, UC-ADM-06Modules et ensemblesLivré
Q11 Crédits et refus au plafondUC-IA-06, UC-IA-07, UC-IA-08Crédits IALivré
Q12 Orchestration multi-agentsUC-IA-04, UC-IA-05AgentsLivré
Q13 Extraction par visionUC-DOC-03, UC-DOC-04Vision documentaireLivré
Q14 Prévision de trésorerieUC-TRE-04TrésorerieLivré
Q15 Flux de travail automatiséUC-IA-09, domaines transversesAutomatisationsLivré
Q16 Rendez-vous avec visioconférenceUC-RDV-05, UC-RDV-08, UC-RDV-09Rendez-vousLivré
Q17 Notification multicanalTransverse à dix-neuf domainesNotificationsLivré
Q18 Écart de catalogueUC-ADM-05Gouvernance du catalogueLivré

6.3 États#

Diagramme d'étatsCas d'utilisation qui font transiter l'objetStatut
Dossier fiscalUC-FIS-01, UC-FIS-02, UC-FIS-10, UC-FIS-13Livré
FactureUC-FAC-03, UC-FAC-05, UC-FAC-06, UC-FAC-08, UC-FAC-14Livré
DocumentUC-DOC-01 à UC-DOC-12Livré
MandatUC-AUD-01, UC-CON-01, UC-CON-04Livré
AbonnementUC-ADM-06, UC-ADM-08, A19Livré, résiliation partielle
Demande d'approbation IAUC-IA-09, UC-IA-10Livré

6.4 Ancrage code des affirmations de ce document#

AffirmationOrigine relevée le 17 août 2026
Dix contextes Client, neuf Professionnels, un repliRegistre de métadonnées de contexte partagé web et mobile
Trois contextes conditionnés à une clef d'offre et trois tableaux de bord dédiésMême registre
Points d'entrée de fiscalité — T2125, T776, taxes, acomptes, report, calendrier, transmission, listes de contrôlePoints d'entrée du service de fiscalité
Points d'entrée de paie — employés, rémunérations, retenues, bulletins, feuillets fédéraux, relevés provinciaux, relevé d'emploiPoints d'entrée du service de paie
Points d'entrée de comptabilité — plan comptable, écritures, rapprochement, états financiers, clôtures, immobilisations, budgetsPoints d'entrée du service de comptabilité
Points d'entrée de trésorerie — comptes, plan, positions, prévisions, taux de change, facilitésPoints d'entrée du service de trésorerie
Points d'entrée documentaires — dépôt, dossiers, demandes, partages, listes de contrôle, extraction, versions, recherchePoints d'entrée du service de documents
Points d'entrée de réservation — disponibilités, exceptions, liens, réservation publique, séances de groupe, visioconférence, synchronisationPoints d'entrée du service de réservation
Points d'entrée de flux de travail — modèles, instances, événements, automatisationsPoints d'entrée du service de flux
Refus au solde nul avec un code d'erreur dédiéPoint d'entrée de consommation de crédits du service de facturation, et point d'entrée de messagerie du service d'espaces
Distinction « crédits insuffisants » et « passerelle injoignable »Client de modèle d'un service d'agent — le repli est journalisé avec sa cause
Approbation humaine avec rejeu différé sur les quatre surfacesBrief commun §1.5
Absence de plafond de dépense configurable, présence d'un seuil de rechargeBrief commun §1.5, constat É3
Export en attente sans travailleur d'exécutionBrief commun §1.5, constat É1
Résiliation en libre-service au portail Affaires seulementBrief commun §1.5, constat É2
Authentification à deux facteurs non implémentéeBrief commun §1.5
Écart de catalogue — 10 crédits servis contre 23 en base pour le forfait GratuitRelevé de contrôle du catalogue de la plateforme
Séparation des pouvoirs sur le catalogue tarifaireMatrice route × rôle du portail Administration, 06-portail-admin.md §2
Principe « ne jamais fabriquer un zéro »06-portail-admin.md §1.3

Ce qui n'a pas pu être vérifié dans ce passage. Les délais réels de chaque étape — aucune mesure de temps de réponse n'a été relevée. Le comportement des connecteurs externes en conditions de panne — prestataire de paiement, service de signature, service de visioconférence — n'a pas été observé en direct ; les branches d'erreur décrivent le comportement attendu du code appelant, pas la réponse du tiers. Les codes de refus exacts renvoyés par les administrations fiscales n'ont pas été relevés. Le contenu exact des barèmes de retenues à la source n'a pas été inspecté ligne à ligne.


Kaxentra — dossier de lancement. Document interne, version 1.0 du 17 août 2026. Marque publique : Kaxentra. Éditeur : i2t Digital. Les éléments marqués [HYPOTHÈSE] ne sont pas publiables en l'état. Les personas d'extension communautaire (E01–E08) décrivent des fonctionnalités non livrées.