#Sommaire
| § | Domaine fonctionnel | Diagrammes |
|---|---|---|
| 0 | Conventions de lecture | — |
| 1 | Gestion de projet | 1 |
| 2 | Spécification exécutable | 1 |
| 3 | Rétro-ingénierie code vers spécification | 1 |
| 4 | Artefacts d'architecture et documentation | 1 |
| 5 | Agents IA et personnel virtuel | 1 |
| 6 | Qualité, tests et vérification | 1 |
| 7 | Déploiement et mise en ligne | 1 |
| 8 | Collaboration et revue | 1 |
| 9 | Retours utilisateurs et feuille de route | 1 |
| 10 | Administration du plan de contrôle | 1 |
| 11 | Facturation, plans et budgets | 1 |
| 12 | Sécurité, audit et conformité | 1 |
| 13 | Identité, accès et locataires | 1 |
| 14 | Synthèse des acteurs | — |
| 15 | Ce que ces diagrammes n'affirment pas | — |
Total : 13 diagrammes de cas d'utilisation.
#0. Conventions de lecture
#0.1 Notation retenue
Mermaid ne dispose pas d'un type natif de diagramme de cas d'utilisation. La notation ci-dessous est donc une transposition rigoureuse et constante dans tout le dossier.
| Élément UML | Transposition Mermaid | Exemple |
|---|---|---|
| Acteur | Cercle, à gauche | acteur(("Éditeur")) |
| Cas d'utilisation | Forme arrondie, au centre | uc(["Créer un projet"]) |
| Frontière du système | subgraph fermé par end |
subgraph SYS["Portail client"] |
| Association acteur / cas | Flèche pleine | --> |
Relation include |
Flèche pointillée annotée | `-.-> |
Relation extend |
Flèche pointillée annotée | `-.-> |
| Service ou dépendance externe | Flèche épaisse | ==> |
Les identifiants de nœuds sont sans accent, sans espace et sans tiret. Les libellés sont toujours entre guillemets.
#0.2 Acteurs humains — la hiérarchie réelle
La hiérarchie ci-dessous est celle du module partagé d'autorisation. Un rang supérieur satisfait toujours l'exigence d'un rang inférieur.
| Rang | Acteur | Signification opérationnelle |
|---|---|---|
| 0 | Lecteur (VIEWER) |
Lecture seule sur le périmètre du locataire |
| 1 | Éditeur (EDITOR) |
Création et modification des objets de travail |
| 2 | Publieur (PUBLISHER) |
Décisions de revue, promotion, transitions de statut |
| 3 | Administrateur (ADMIN) |
Gestion des utilisateurs, déploiement, révocation |
| 4 | Propriétaire (OWNER) |
Accès complet au locataire |
| 5 | Administrateur de plateforme (SUPERADMIN) |
Portée plateforme, hors locataire client |
Le portail d'administration expose en outre trois rôles de plan de contrôle qui lui sont propres : viewer, platform_operator, platform_admin.
⚠️ Écart connu. Cinq rôles sectoriels hérités d'un domaine antérieur subsistent hors hiérarchie et ne satisfont jamais une exigence de rang minimum. Leur retrait fait partie du chantier de généricisation.
#0.3 Acteurs non humains
| Acteur système | Nature réelle |
|---|---|
| Copilote | Service de génération assistée, langage naturel vers spécification |
| Orchestrateur | Moteur de graphes d'agents |
| Exécuteur de code | Runner de tâches Kubernetes éphémères |
| Passerelle API | Point d'entrée unique, source de vérité des routes |
| Keycloak | Serveur d'identité, flux code d'autorisation avec PKCE S256 |
#0.4 Convention de statut
🟢 Livré · 🟡 En cours · ⚪ Planifié · 🔴 Bloqué
#1. Domaine — Gestion de projet
Le projet est l'unité de portée de tout le produit. L'entité projet nue appartient au service de spécification ; tout autre service conscient des projets est atteint par un montage scopé de la passerelle.
Aucun diagramme à afficher
Diagramme 1 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Créer un projet | Éditeur | Locataire résolu ; rôle ≥ EDITOR | Saisie du nom et du descriptif, envoi, réception de l'identifiant canonique | Locataire absent ⇒ 400 ; identifiant de locataire en désaccord avec le jeton ⇒ 404 | Un projet existe, scopé au locataire | POST /api/v1/projects — spec-service |
🟢 Livré |
| Lister les projets | Lecteur | Locataire résolu | Lecture de la collection, filtrage côté portail | Aucune donnée ⇒ état vide explicite | Aucune | GET /api/v1/projects |
🟢 Livré |
| Consulter l'aperçu d'un projet | Lecteur | Projet existant dans le locataire | Chargement de l'entête et des compteurs | Projet d'un autre locataire ⇒ 404 | Aucune | GET /api/v1/projects/{projectId} |
🟢 Livré |
| Modifier les métadonnées | Éditeur | Rôle ≥ EDITOR | Modification partielle, envoi | Conflit de version ⇒ erreur typée | Métadonnées à jour | PATCH /api/v1/projects/{projectId} |
🟢 Livré |
| Archiver un projet | Propriétaire | Rôle ≥ ADMIN | Confirmation, suppression logique | Refus si dépendances actives | Projet retiré des listes actives | DELETE /api/v1/projects/{projectId} |
🟢 Livré |
| Ouvrir l'espace de travail | Lecteur | Projet existant | Ouverture, restauration de la dernière vue | Vue inconnue dans l'URL ⇒ repli sur la vue spec |
Vue active mémorisée par projet | /projects/{projectId}/workspace?view= |
🟢 Livré |
| Basculer entre les 11 vues canoniques | Lecteur | Capacité de lecture de la vue visée | Sélection de la vue, remplacement d'URL sans rechargement | Capacité absente ⇒ vue masquée | URL partageable et signet possible | Registre WORKSPACE_VIEWS — 11 vues |
🟢 Livré |
| Déclarer une source de code du projet | Éditeur | Rôle ≥ EDITOR ; secret référencé par chemin de coffre | Saisie de l'adresse du dépôt et du chemin de coffre | Secret en clair dans le corps ⇒ 422 | Source durable enregistrée | POST /api/v1/reverse-engineering/projects/{id}/sources |
🟢 Livré |
| Résoudre le locataire courant | Passerelle API | Jeton vérifié ou en-tête X-Tenant-ID |
Précédence en-tête, puis revendication du jeton, puis paramètre | Désaccord avec la revendication ⇒ 404, jamais 403 | Contexte de locataire posé pour la requête | Intergiciel partagé de résolution de locataire | 🟢 Livré |
Règle vérifiée. L'espace de travail expose exactement onze vues canoniques : spec, graph, boards, config, agentops, test, review, docs, artifacts, delivery, workforce. Un test unitaire verrouille cette liste et son ordre.
#2. Domaine — Spécification exécutable
La spécification est la structure de données centrale du produit : des objets typés, versionnés et reliés, pas des paragraphes.
Aucun diagramme à afficher
Diagramme 2 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Rédiger un objet de spécification | Éditeur | Projet existant ; rôle ≥ EDITOR | Choix du type, saisie du titre et des attributs, envoi | Type hors métamodèle ⇒ 422 | Objet créé au statut draft |
POST /api/v1/projects/{projectId}/spec-items |
🟢 Livré |
| Générer une spécification depuis le langage naturel | Copilote pour le compte d'un Éditeur | Passerelle LLM configurée | Envoi de l'intention, génération, proposition d'objets à écrire | Modèle indisponible ⇒ erreur typée, jamais de contenu fabriqué | Proposition d'objets soumise à validation | POST /api/v1/copilot/ask — copilot-service |
🟢 Livré |
| Valider la grammaire EARS | Copilote | Critères d'acceptation générés | Évaluation de la forme EARS, taux de couverture | Formulation non conforme ⇒ rapport d'écarts | Rapport de validation, provenance renseignée | POST /api/v1/ears/validate-generated |
🟢 Livré |
| Créer une relation entre deux objets | Éditeur | Deux objets existants du même locataire | Choix du type de relation, envoi | Type de relation hors vocabulaire ⇒ 422 ; cycle sur depends_on détecté |
Arête ajoutée au graphe de traçabilité | POST /api/v1/spec-items/{itemId}/relationships |
🟢 Livré |
| Consulter la traçabilité d'un objet | Lecteur | Objet existant | Lecture du rapport amont et aval | Objet isolé ⇒ rapport vide honnête | Aucune | GET /api/v1/spec-items/{itemId}/traceability |
🟢 Livré |
| Calculer l'impact d'un changement | Éditeur | Objet existant | Parcours du graphe, restitution des objets touchés | Graphe trop profond ⇒ résultat borné et signalé | Rapport d'impact affiché avant application | POST /api/v1/spec-items/{itemId}/impact |
🟢 Livré |
| Analyser les écarts de couverture | Publieur | Projet doté d'exigences et de tests | Corrélation exigence vers test par relations de vérification | Aucune relation de vérification ⇒ exigence signalée non couverte | Liste d'écarts exploitable | POST /api/v1/projects/{projectId}/spec/analyze |
🟢 Livré |
| Valider le métamodèle du projet | Éditeur | Métamodèle défini pour le projet | Vérification des types et des liens autorisés | Violation ⇒ rapport détaillé, écriture refusée | Conformité établie | POST /api/v1/projects/{projectId}/model/validate |
🟢 Livré |
| Explorer et filtrer la spécification | Lecteur | Projet existant | Filtres par type, statut, texte | Aucun résultat ⇒ état vide explicite | Aucune | GET /api/v1/projects/{projectId}/spec-items |
🟢 Livré |
| Consulter l'historique de versions | Lecteur | Objet existant | Lecture des versions successives | Aucune | Aucune | GET /api/v1/spec-items/{itemId} |
🟢 Livré |
Vocabulaires réels. Statuts d'un objet de spécification : draft, clarified, planned, in_dev, implemented, verified, deprecated. Les relations de vérification prises en compte par l'analyse de couverture sont verifies et traces_to.
#3. Domaine — Rétro-ingénierie code vers spécification
Ce domaine est le maillon « Comprendre » : partir de l'existant plutôt que d'une page blanche.
Aucun diagramme à afficher
Diagramme 3 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Importer un dépôt de code | Éditeur | Adresse du dépôt ; règle de sortie réseau vers le port 443 | Création du travail au statut queued, planification du pipeline en tâche de fond, réponse 201 immédiate |
Système de source non pris en charge ⇒ 422 typé | Travail d'analyse enregistré | POST /api/v1/reverse-engineering/jobs |
🟢 Livré, prouvé en production |
| Cloner en profondeur 1 | Pipeline d'analyse | Binaire git présent dans l'image |
Clone --depth 1 --single-branch, jeton injecté par en-tête HTTP éphémère |
Identifiants absents ⇒ 502 typé ; suppression du répertoire temporaire garantie | Arbre local temporaire disponible | Ingestion interne du service | 🟢 Livré |
| Ingérer les sources déclarées | Pipeline d'analyse | Au moins une source | Dispatch par système : dépôt, schéma SQL, OpenAPI, IaC, documents, historique | Système reconnu mais sans analyseur ⇒ 422 explicite | Faits horodatés par fichier:ligne |
Statut du travail : ingesting |
🟢 Livré |
| Analyser statiquement le code Python | Pipeline d'analyse | Fichiers .py collectés |
Arbre syntaxique, complexité, graphe d'appels, points d'entrée HTTP, entités | Fichier illisible ⇒ fait d'erreur isolé, jamais d'invention | Faits persistés | Statut du travail : analyzing |
🟢 Livré |
| Inférer des candidats de spécification | Pipeline d'analyse | Faits disponibles | Calcul de confiance à partir de signaux comptés, ouverture d'une tâche de validation humaine | Candidat sans preuve ⇒ refusé structurellement | Candidats en attente de décision | Statut du travail : inferring puis ready |
🟢 Livré |
| Émettre les 7 familles d'artefacts | Éditeur | Travail au statut ready |
Reconstruction en lecture seule : C4, modèle entité-relation, OpenAPI, machines à états, séquences, dictionnaire de données, traçabilité | Aucun fait support ⇒ modèle honnêtement vide | Aucune écriture, aucune promotion | GET /api/v1/reverse-engineering/jobs/{jobId}/emit |
🟢 Livré |
| Décider sur un candidat en file humaine | Publieur | Candidat au statut pending ; rôle ≥ PUBLISHER |
Lecture de la preuve, approbation ou rejet | Candidat déjà décidé ⇒ 409 | Décision attribuable et auditée | POST /api/v1/reverse-engineering/validation-tasks/{taskId}/decision |
🟢 Livré |
| Promouvoir un candidat en spécification | Publieur ou pipeline | Tâche de validation approuvée | Création de l'objet chez le service de spécification, identifiant canonique renvoyé par le serveur | Service de spécification injoignable ⇒ transaction annulée, tâche rejouable | Objet de spécification au statut draft, provenance reverse:<mode> |
POST /api/v1/projects/{projectId}/spec-items |
🟢 Livré |
| Détecter la dérive spécification contre code | Éditeur | Travail analysé | Comparaison, persistance des constats | Aucun écart ⇒ liste vide | Constats de dérive consultables | POST /api/v1/reverse-engineering/jobs/{jobId}/drift/analyze |
🟢 Livré |
| Traiter un événement de dépôt | Éditeur | Signature de rappel valide | Vérification de la signature, calcul du différentiel, ensemble impacté | Signature invalide ⇒ 401 | Analyse incrémentale enregistrée | POST /api/v1/reverse-engineering/jobs/{jobId}/incremental |
🟢 Livré |
⚠️ Nuance vérifiée et opposable. L'analyse statique profonde ne couvre réellement que Python. Les fichiers JavaScript, TypeScript, Go, Java, Ruby et C# sont détectés puis rangés dans la liste
unsupported: ils sont signalés, jamais analysés ni fabriqués. Le schéma SQL et GraphQL sont traités par heuristique, pas par un analyseur syntaxique complet.
Promotion automatique. Le drapeau d'auto-promotion vaut true par défaut avec un seuil de confiance de 0,7, mais l'adresse du service de spécification n'est pas définie dans le manifeste de développement : la promotion automatique est alors inerte et le signale explicitement. Les candidats sous le seuil restent dans la file humaine.
#4. Domaine — Artefacts d'architecture et documentation
Les artefacts sont projetés depuis la spécification. Le rendu graphique est déterministe et sans modèle de langage.
Aucun diagramme à afficher
Diagramme 4 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Déposer un document d'exigences produit | Éditeur | Au moins une référence de spécification valide | Vérification des références, persistance du contenu tel quel | Référence orpheline ⇒ 422 listant les identifiants manquants | Artefact prd au statut generated |
POST /api/v1/artifacts/prd |
🟢 Livré |
| Générer un artefact assisté par IA | Éditeur | Passerelle de prompts joignable | Récupération des objets, assemblage, envoi, contenu validé par contrat | Assemblage refusé ⇒ 502 typé ; contrat violé ⇒ 502 ; jamais d'artefact fabriqué | Artefact avec provenance prompt-orch:<identifiant> |
POST /api/v1/artifacts/generate |
🟢 Livré |
| Produire un diagramme UML | Éditeur | Modèle de diagramme fourni | Rendu déterministe vers texte Mermaid, persistance | Type hors des 14 valeurs admises ⇒ 422 listant les valeurs | Artefact uml avec sous-type |
POST /api/v1/diagrams/uml |
🟢 Livré |
| Produire un diagramme BPMN | Éditeur | Modèle de processus | Rendu vers organigramme Mermaid, couloirs par sous-graphe | Type de nœud inconnu ⇒ forme de tâche par défaut | Artefact bpmn |
POST /api/v1/diagrams/bpmn |
🟢 Livré |
| Produire un diagramme entité-relation | Éditeur | Entités et relations | Rendu erDiagram natif avec cardinalités |
Modèle vide ⇒ entête valide sans contenu | Artefact erd |
POST /api/v1/diagrams/erd |
🟢 Livré |
| Produire une vue TOGAF | Éditeur | Phase parmi les 10 valeurs admises | Persistance ; diagramme produit uniquement si des nœuds ou des arêtes sont fournis | Forme catalog ou matrix ⇒ stockage seul, sans rendu |
Artefact togaf, phase en sous-type |
POST /api/v1/togaf |
🟢 Livré |
| Produire un artefact de sécurité | Éditeur | Sous-type parmi modèle de menaces STRIDE, DFD, confiance zéro, IAM | Validation des catégories STRIDE, rendu du DFD sous-jacent | Catégorie inconnue ⇒ 422 ; modèle IAM sans rôles ⇒ artefact sans diagramme | Artefact security |
POST /api/v1/sec-artifacts |
🟢 Livré |
| Projeter la documentation depuis la spécification | Éditeur | Références de spécification valides | Lecture des objets, rendu Markdown bilingue, empreinte de source | Doublon locataire, projet, type, langue, titre ⇒ 409 | Document en version 1 | POST /api/v1/documentation |
🟢 Livré |
| Détecter la dérive documentaire | Lecteur | Document existant | Relecture de la spécification, recalcul de l'empreinte, comparaison | Aucune | Verdict de dérive | GET /api/v1/documentation/{docId}/drift |
🟢 Livré |
| Reprojeter un document | Éditeur | Document existant | Nouvelle projection ; nouvelle version seulement si l'empreinte change | Empreinte identique ⇒ opération neutre | Version incrémentée le cas échéant | POST /api/v1/documentation/{docId}/reproject |
🟢 Livré |
| Exporter un document | Lecteur | Document existant | Choix du format md, pdf ou docx |
Moteur de rendu absent ⇒ 501 explicite, jamais un fichier vide ; format inconnu ⇒ 422 | Fichier téléchargé | GET /api/v1/documentation/{docId}/export?format= |
🟢 Livré |
| Créer une version immuable | Éditeur | Artefact existant ; motif de changement obligatoire | Verrouillage de la ligne, incrément, écriture de l'instantané | Motif absent ⇒ 422 | Version figée et horodatée | POST /api/v1/artifacts/{artifactId}/versions |
🟢 Livré |
| Changer le statut d'un artefact | Publieur | Rôle ≥ PUBLISHER | Choix parmi draft, generated, reviewed, published, deprecated |
Statut hors liste ⇒ refus | Statut mis à jour | POST /api/v1/artifacts/{artifactId}/status |
🟢 Livré |
| Vérifier les références de spécification | Service d'artefacts | Service de spécification joignable | Appel réel par référence, avant toute persistance | Référence introuvable ⇒ 422 ; service injoignable ⇒ 502 | Aucun artefact orphelin | Appel GET /api/v1/spec-items/{itemId} |
🟢 Livré |
⚠️ Nuance vérifiée et opposable. Le service d'artefacts déclare 14 types de diagrammes UML — le compte est verrouillé par une assertion à l'import — mais 5 seulement possèdent un générateur spécialisé : classe, machine à états, séquence, composant et déploiement. Les 9 autres retombent sur un organigramme générique. Toute communication qui présenterait « 14 diagrammes UML rendus nativement » serait fausse.
Autre écart réel. Le routeur ArchiMate est monté dans le service mais son préfixe n'est pas déclaré dans la passerelle : il est inatteignable depuis les portails.
#5. Domaine — Agents IA et personnel virtuel
C'est le différenciateur central : les agents sont gouvernés comme des employés.
Aucun diagramme à afficher
Diagramme 5 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Lancer une exécution d'agent | Éditeur | Rôle ≥ EDITOR ; plan d'étapes sous le plafond de 500 | Création du run, application de la politique, exécution étape par étape | Plan trop long ⇒ refus ; exécuteur inconnu ⇒ 500 sonore, jamais de repli silencieux | Run au statut running |
POST /api/v1/agent-runtime/runs |
🟢 Livré |
| Évaluer la politique hors boucle | Exécuteur de code | Liste d'autorisations chargée | Vérification de l'action contre la liste | Action non couverte ⇒ refus journalisé sous deny-by-default |
Verdict persisté | Moteur de politique de agent-runtime-service |
🟢 Livré |
| Suspendre une exécution | Éditeur | Run au statut running |
Écriture d'un point de reprise, passage au statut suspended |
Run non running ⇒ 409 |
État externalisé | POST /api/v1/agent-runtime/runs/{runId}/suspend |
🟢 Livré |
| Reprendre depuis un point de reprise | Éditeur | Run au statut suspended |
Restauration du dernier point de reprise | Run non suspended ⇒ 409 |
Run de nouveau running |
POST /api/v1/agent-runtime/runs/{runId}/resume |
🟢 Livré |
| Interrompre une exécution | Administrateur | Run actif | Confirmation, annulation | Run déjà terminal ⇒ opération neutre | Run interrompu et tracé | POST /api/v1/agent-runtime/runs/{runId}/interrupt |
🟢 Livré |
| Suivre le flux d'activité rejouable | Agent IA vers portail | Ticket de flux | Flux d'événements serveur amorcé depuis la table d'événements persistés | Reconnexion ⇒ reprise par Last-Event-ID |
Aucun événement perdu | GET /api/v1/agent-runtime/runs/{runId}/events |
🟢 Livré |
| Recruter un membre du personnel virtuel | Éditeur | Rôle ≥ EDITOR | Choix du rôle, de l'équipe et du niveau d'autonomie, envoi | Rôle inconnu ⇒ refus | Membre au statut active |
POST /api/v1/agentic-core/workforce/staff |
🟢 Livré, prouvé en navigateur réel |
| Assigner une tâche à un membre | Éditeur | Membre existant et actif | Saisie de la tâche, envoi, rafraîchissement de la file | Membre en pause ⇒ bouton bloqué | Tâche en file | POST /api/v1/agentic-core/workforce/staff/{staffId}/tasks |
🟢 Livré |
| Consulter la file de travail | Éditeur | Membre existant | Lecture des tâches ouvertes et closes | File vide ⇒ état vide explicite | Aucune | GET /api/v1/agentic-core/workforce/staff/{staffId}/tasks |
🟢 Livré |
| Consulter l'organigramme et l'activité | Éditeur | Personnel existant | Lecture de la synthèse, des équipes et du flux d'activité | Aucune | Aucune | GET /api/v1/agentic-core/workforce/overview et /teams |
🟢 Livré |
| Consulter le registre central d'agents | Administrateur de plateforme | Rôle plateforme | Lecture du registre : nom, nature, capacités, compétences, serveurs d'outils, santé | Registre vide ⇒ synchronisation à déclencher | Aucune | GET /api/v1/agents/registry |
🟢 Livré |
| Appliquer le plafond d'autonomie | Plateforme | Rôle virtuel et plan résolus | Calcul du minimum entre plafond du rôle et plafond du plan | Service d'entitlements dégradé ⇒ repli sur N1, jamais vers le haut | Autonomie effective bornée | Résolution d'entitlements, échelle N0 à N3 | 🟢 Livré, 🟡 drapeau désactivé par défaut |
| Vérifier le budget de jetons | Plateforme | Budget configuré | Pré-vérification avant appel facturable, règlement après coup | Budget épuisé ⇒ 402 | Consommation enregistrée | Garde de crédit partagée | 🟢 Livré |
Personnel virtuel — périmètre exact. La phase 1 couvre le recrutement depuis l'interface, l'assignation de tâches, la file par membre, le flux d'activité et l'organigramme. L'autonomie déléguée, l'escalade et la chaîne d'imputabilité sont ⚪ Planifiées : elles existent en conception seulement.
#6. Domaine — Qualité, tests et vérification
Aucun diagramme à afficher
Diagramme 6 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Générer des tests depuis les critères d'acceptation | Éditeur | Critères d'acceptation existants | Sélection des critères, génération de scénarios | Aucun critère ⇒ refus explicite | Scénarios rattachés aux exigences | test-quality-service, scope /api/v1/test-quality |
🟢 Livré |
| Éditer un scénario Gherkin | Éditeur | Scénario existant | Édition dans l'éditeur intégré | Syntaxe invalide ⇒ signalement immédiat | Scénario mis à jour | Composant GherkinEditor du système de conception |
🟢 Livré |
| Consulter la carte de chaleur de couverture | Responsable qualité | Exigences et tests reliés | Lecture croisée exigence contre test | Exigence sans relation de vérification ⇒ case signalée | Aucune | Vue test de l'espace de travail |
🟢 Livré |
| Produire des données de test synthétiques | Éditeur | Schéma cible connu | Génération conforme, aucune donnée personnelle réelle | Schéma inconnu ⇒ refus | Jeu de données utilisable | test-data-factory-service, scope /api/v1/test-data-factory |
🟢 Livré |
| Exécuter un test navigateur réel | Éditeur | Exécuteur configuré | Lancement d'un navigateur réel en tâche, collecte des preuves | Navigateur indisponible ⇒ verdict inconclusive, jamais un faux vert |
Preuves nettoyées des données sensibles | POST /api/v1/agent-runtime/runs |
🟢 Livré en développement |
| Comparer visuellement contre une référence | Éditeur | Deux captures disponibles | Différentiel pixel et perceptuel | Comparaison visuelle désactivée ⇒ 503 honnête | Rapport de différence | POST /api/v1/agent-runtime/visual/compare |
🟢 Livré |
| Approuver une capture de référence | Publieur | Rôle ≥ PUBLISHER | Revue de la capture, approbation | Rôle insuffisant ⇒ 403 | Référence opposable | POST /api/v1/agent-runtime/visual/baselines/{id}/approve |
🟢 Livré |
| Analyser une base de données en exploitation | Responsable qualité | Accès à la base configuré | Lecture des statistiques de tables | Base injoignable ⇒ erreur typée | Rapport d'analyse | Capacité d'analyse de base réelle | 🟢 Livré en développement et production |
| Évaluer une porte de qualité | Responsable qualité | Verdicts amont disponibles | Dérivation du verdict à partir des étapes réelles | Étape amont non franchie ⇒ porte refusée | Décision de porte enregistrée | Étape gate du pipeline de déploiement |
🟢 Livré |
| Consulter les brèches de niveau de service | Responsable qualité | Tableau d'observabilité alimenté | Lecture du panneau de brèches | Aucune brèche ⇒ liste vide | Aucune | GET /api/v1/observability/gates/breaches |
🟢 Livré |
| Scorer le triage d'une défaillance | Responsable qualité | Registre de modèles amorcé | Calcul de probabilités calibrées et de contributions explicables | Modèle absent du registre ⇒ 501 typé | Score explicable | POST /api/v1/ml/triage-score |
🟢 Livré |
Automatisation robotisée de navigateur. Le drapeau correspondant vaut false par défaut : une exécution en mode action navigateur répond alors par un 404 typé. Statut 🟡 En cours.
#7. Domaine — Déploiement et mise en ligne
Aucun diagramme à afficher
Diagramme 7 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Créer une exécution de déploiement | Administrateur | Rôle ≥ ADMIN | Création du run et amorçage des 6 étapes au statut pending |
Environnement hors dev, staging, prod ⇒ refus |
Run et étapes ordonnées créés | POST /api/v1/deploy/deploy-runs |
🟢 Livré |
| Simuler le déploiement sans effet | Publieur | Run existant | Résolution de la cible, état des étapes, portes non franchies, verdict de disponibilité | Aucune | Aucune écriture, aucune infrastructure touchée | POST /api/v1/deploy/deploy-runs/{runId}/plan |
🟢 Livré |
| Construire l'image | Administrateur | Outil de construction disponible | Clone, construction, publication du journal en stockage objet | Outil absent ⇒ 501 typé, jamais un vert fabriqué | Étape build passed ou failed |
Étape 1 du pipeline | 🟢 Livré en développement |
| Exécuter la suite de tests | Administrateur | Commande de test configurée | Exécution dans l'arbre cloné, code de retour comme verdict | Binaire absent ⇒ 501 | Étape test décidée |
Étape 2 du pipeline | 🟢 Livré |
| Analyser sécurité et dépendances | Administrateur | Analyseurs présents | Trois dimensions réelles : code, dépendances, secrets | Analyseur manquant ⇒ 501 nommant l'outil absent | Étape scan décidée |
Étape 3 du pipeline | 🟢 Livré |
| Franchir la porte dérivée | Système | Trois étapes amont décidées | Verdict calculé sans outil externe | Une étape amont en échec ⇒ porte refusée | Étape gate décidée |
Étape 4 du pipeline | 🟢 Livré |
| Approuver la mise en production | Approbateur distinct | Demandeur identifié ; approbateur différent | Décision approved ou rejected motivée |
Auto-approbation ⇒ 409 typé | Décision enregistrée dans la piste d'audit | POST /api/v1/deploy/deploy-runs/{runId}/approve |
🟢 Livré |
| Appliquer le déploiement et ré-interroger | Administrateur | Portes franchies ; approbation obtenue | Application, puis ré-interrogation de l'état du workload | Portes non franchies ⇒ 409 ; exécution réelle désactivée ⇒ 501 explicite | Statut live seulement si les répliques convergent |
POST /api/v1/deploy/deploy-runs/{runId}/deploy |
🟢 Livré en production |
| Vérifier la convergence après déploiement | Système | Déploiement appliqué | Relecture de l'état, verdict de convergence | Non convergé ⇒ retour vers la spécification, boucle fermée | Étape monitor décidée |
Étape 6 du pipeline | 🟢 Livré |
| Revenir à la version précédente | Administrateur | Déploiement enregistré | Déploiement inverse réel, marquage de l'original | Aucun déploiement antérieur ⇒ refus | Nouvelle ligne portant la référence de retour arrière | POST /api/v1/deploy/deployments/{id}/rollback |
🟢 Livré |
| Publier sur un sous-domaine avec TLS | Publieur | Mise en ligne activée | Rendu et application du déploiement, du service et de l'entrée ; certificat automatique | Mise en ligne désactivée ⇒ 501 honnête | Produit servi sur <projet>.kyrieva.com |
POST /api/v1/deploy/go-live/{projectId} |
🟢 Livré en production |
| Générer un pipeline d'intégration continue | Publieur | Fournisseur choisi parmi quatre | Génération puis commit réel dans le dépôt | Dépôt inaccessible ⇒ erreur typée | Fichier de pipeline commité | POST /api/v1/deploy/cicd/setup |
🟢 Livré en développement |
| Vérifier le lien au registre d'images | Publieur | Identifiants déposés par référence de coffre | Poignée de main réelle avec le registre | Registres nuage exigeant un échange de jeton ⇒ signalé explicitement | Verdict de connexion | POST /api/v1/deploy/registries/verify |
🟢 Livré |
Interrupteur maître. Le drapeau d'exécution réelle vaut false par défaut : sans lui, aucun déploiement n'est simulé, le produit répond 501 Not Implemented. Le drapeau d'approbation obligatoire impose une personne différente du demandeur.
Écart réel. Les pilotes natifs de nuages publics répondent 501 : ils sont ⚪ Planifiés. Le provisionnement automatique d'un fournisseur d'identité pour le produit client est 🔴 Bloqué par des droits d'administration insuffisants sur le serveur d'identité.
#8. Domaine — Collaboration et revue
Aucun diagramme à afficher
Diagramme 8 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Créer un espace de collaboration | Éditeur | Rôle ≥ EDITOR | Création de l'espace, rattachement au projet | Aucune | Espace disponible | POST /api/v1/spaces |
🟢 Livré |
| Gérer les membres d'un espace | Éditeur | Espace existant | Ajout et retrait de membres | Membre hors locataire ⇒ 404 | Composition à jour | GET /api/v1/spaces/{spaceId}/members |
🟢 Livré |
| Ouvrir un fil de commentaires | Éditeur | Cible identifiée | Création du fil, marquage bloquant optionnel | Aucune | Fil ouvert | POST /api/v1/comments/threads |
🟢 Livré |
| Résoudre un fil bloquant | Éditeur | Fil ouvert | Résolution avec motif | Fil déjà résolu ⇒ opération neutre | Fil résolu | POST /api/v1/comments/threads/{threadId}/resolve |
🟢 Livré |
| Rouvrir un fil résolu | Éditeur | Fil résolu | Réouverture motivée | Aucune | Fil de nouveau ouvert | POST /api/v1/comments/threads/{threadId}/reopen |
🟢 Livré |
| Créer une revue | Éditeur | Cible de revue existante | Création au statut draft |
Aucune | Revue en brouillon | POST /api/v1/reviews |
🟢 Livré |
| Soumettre une revue | Éditeur | Revue au statut draft ou changes_requested |
Passage au statut submitted, soumissionnaire enregistré |
Transition illégale ⇒ 409 typé listant les transitions permises | Revue soumise | POST /api/v1/reviews/{reviewId}/submit |
🟢 Livré |
| Commenter une revue | Éditeur | Revue existante | Ajout d'un commentaire | Aucune | Commentaire attaché | POST /api/v1/reviews/{reviewId}/comment |
🟢 Livré |
| Rendre une décision de revue | Publieur | Revue au statut submitted ; rôle ≥ PUBLISHER |
Verdict approved, changes_requested ou rejected |
Verdict approved avec fil bloquant ouvert ⇒ 422 critères non satisfaits |
Revue au statut correspondant | POST /api/v1/reviews/{reviewId}/decision |
🟢 Livré |
| Vérifier la séparation des devoirs | Système | Soumissionnaire et relecteur connus | Comparaison des identifiants | Identité identique ⇒ 403 auto-approbation interdite | Décision refusée en position fermée | Machine à états de revue | 🟢 Livré |
| Vérifier les critères de porte | Système | Contexte de porte disponible | Comptage des fils bloquants et des critères non satisfaits | Critère non satisfait ⇒ 422 | Approbation autorisée ou refusée | Machine à états de revue | 🟢 Livré |
| Consulter la carte de contextes | Lecteur | Contextes déclarés | Lecture des contextes bornés et de leurs agrégats, rendu Mermaid | Aucun contexte ⇒ liste vide | Aucune | GET /api/v1/ddd/contexts/{contextId} |
🟢 Livré |
Cycle de vie réel d'une revue. draft vers submitted ; submitted vers approved, changes_requested ou rejected ; changes_requested vers submitted. Les statuts approved et rejected sont terminaux.
#9. Domaine — Retours utilisateurs et feuille de route
Aucun diagramme à afficher
Diagramme 9 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Soumettre une idée ou un défaut | Visiteur anonyme | Route publique exemptée de la garde d'authentification | Saisie du titre et du descriptif, envoi | Route publique non exemptée ⇒ redirection vers la connexion — écart corrigé | Retour enregistré | POST /api/v1/feedback/public/... et page /public/feedback |
🟢 Livré |
| Voter pour une idée | Lecteur | Retour existant | Vote unique par personne | Vote déjà émis ⇒ opération neutre | Compteur incrémenté | feedback-service, scope /api/v1/feedback |
🟢 Livré |
| Consulter le tableau des retours | Lecteur | Locataire résolu | Lecture triée et filtrée | Aucun retour ⇒ état vide | Aucune | GET /api/v1/feedback/board |
🟢 Livré |
| Consulter la feuille de route publique | Visiteur anonyme | Aucune | Lecture des éléments planifiés | Aucune | Aucune | GET /api/v1/feedback/roadmap |
🟢 Livré |
| Consulter le journal des changements | Visiteur anonyme | Aucune | Lecture des entrées publiées | Aucune | Aucune | GET /api/v1/feedback/changelog |
🟢 Livré |
| Commenter un retour | Éditeur | Retour existant | Ajout d'un commentaire | Aucune | Fil enrichi | GET /api/v1/feedback/feedback/{itemId}/comments |
🟢 Livré |
| Changer le statut d'un retour | Publieur | Rôle ≥ PUBLISHER | Transition de statut motivée | Transition non permise ⇒ 409 | Statut à jour, journal des changements alimentable | feedback-service |
🟢 Livré |
| Rattacher un retour à une exigence | Éditeur | Retour et objet de spécification existants | Création de la relation de traçabilité | Objet inexistant ⇒ 404 | Boucle de retour fermée vers la spécification | POST /api/v1/spec-items/{itemId}/relationships |
🟢 Livré |
| Répondre à une enquête | Visiteur anonyme | Enquête publiée | Saisie et envoi | Enquête close ⇒ refus | Réponse enregistrée | GET /api/v1/feedback/surveys |
🟢 Livré |
| Charger la configuration du widget | Visiteur anonyme | Clé de widget valide | Lecture de la configuration publique | Clé inconnue ⇒ 404 | Widget initialisé chez le client | GET /api/v1/feedback/widget-config |
🟢 Livré |
Widget embarquable. Un bundle autonome, intégrable dans un produit client, existe dans le dépôt des paquets frontaux. Statut 🟢 Livré.
#10. Domaine — Administration du plan de contrôle
Le portail d'administration expose 16 destinations. Ce diagramme en couvre les usages structurants.
Aucun diagramme à afficher
Diagramme 10 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Lire l'état de santé des services | Observateur | Portail chargé | Agrégation honnête : 200 seulement si tous les amonts répondent | Un amont en échec ⇒ 503 réel, pas un vert de complaisance | Aucune | GET /health/aggregate — passerelle |
🟢 Livré |
| Superviser la flotte d'exécutions | Opérateur de plateforme | Capacité fleet:interrupt pour l'action |
Compteurs par statut, graphe d'exécution, tiroir de détail, interruption sur confirmation | Aucun run ⇒ état vide | Exécution interrompue le cas échéant | GET /api/v1/agent-runtime/runs puis .../interrupt |
🟢 Livré |
| Créer et gérer un locataire | Administrateur de plateforme | Capacité tenants:manage |
Saisie de l'identifiant court, du nom et du plan | Suspension de locataire absente du service ⇒ écart affiché explicitement dans l'interface | Locataire créé | POST /api/v1/admin/tenants |
🟢 Livré |
| Gérer les utilisateurs et leurs rôles | Administrateur de plateforme | Capacité users:manage |
Création avec mot de passe validé, édition, ajout et retrait de rôles au serveur d'identité | Proxy d'administration d'identité non configuré ⇒ 501 reconnu par l'interface | Compte et rôles à jour | POST /api/v1/keycloak/users/{id}/roles |
🟢 Livré |
| Créer une dérogation de permission | Administrateur de plateforme | Capacité rbac:edit |
Choix de l'effet, de la priorité et du motif | Moteur de permissions non raccordé ⇒ message dédié | Dérogation active et auditée | POST /api/v1/permissions/overrides |
🟢 Livré |
| Traiter une revue de gouvernance | Administrateur de plateforme | Identité agissante déclarée | Chargement des revues du sujet, approbation ou rejet | Auto-approbation ⇒ bouton bloqué côté interface et 409 côté serveur | Décision persistée | POST /api/v1/extension-registry/extensions/{kind}/{id}/review |
🟢 Livré |
| Piloter un drapeau de fonctionnalité | Opérateur de plateforme | Capacité flags:manage |
Création, portée globale ou locataire, déploiement progressif de 0 à 100 % | Clé hors motif autorisé ⇒ refus | Drapeau actif | POST /api/v1/platform-config/feature-flags |
🟢 Livré |
| Configurer un modèle et un adaptateur | Administrateur de plateforme | Capacité models:manage |
Fournisseur, identifiant de modèle, chemin de coffre, valeur par défaut | Chemin de coffre absent ⇒ refus | Configuration disponible | POST /api/v1/platform-config/model-configs |
🟢 Livré |
| Éditer un garde-fou et une politique d'exécution | Administrateur de plateforme | Capacité policies:manage |
Motif d'action, effet, priorité, exigence d'approbation ; politique réseau devant commencer par un refus | Politique réseau permissive ⇒ refus | Politique appliquée | POST /api/v1/platform-config/guardrail-policies |
🟢 Livré |
| Évaluer une action à la volée | Administrateur de plateforme | Politique existante | Saisie de l'action, verdict immédiat | Évaluateur non raccordé ⇒ message explicite | Aucune | POST /api/v1/platform-config/guardrail-policies/evaluate |
🟢 Livré |
| Gouverner compétences, outils et prompts | Administrateur de plateforme | Capacité registry:manage |
Rédaction, import du jeu curaté, enregistrement de serveurs d'outils, révocation motivée | Import ⇒ atterrissage en revue, jamais d'auto-approbation | Catalogue gouverné | POST /api/v1/extension-registry/catalog/import/seed |
🟢 Livré |
| Activer ou désactiver un agent | Administrateur de plateforme | Capacité agents:manage |
Lecture du registre, bascule d'état | Registre vide ⇒ synchronisation requise | Agent activé ou désactivé | PATCH /api/v1/agents/{agentId} |
🟢 Livré |
| Ajuster le plafond d'autonomie d'un rôle virtuel | Administrateur de plateforme | Drapeau des rôles virtuels activé | Sélection du rôle, choix du niveau N0 à N3 | Drapeau désactivé ⇒ 404 traité honnêtement par l'interface | Plafond mis à jour | PATCH /api/v1/extension-registry/virtual-roles/{roleId} |
🟡 En cours — drapeau désactivé par défaut |
| Provisionner le locataire de démonstration | Administrateur de plateforme | Capacité demo:manage |
Provisionnement en mode rédigé ou agentique, réinitialisation, suppression | Module de démonstration désactivé par défaut | Locataire de démonstration prêt | POST /api/v1/demo/provision |
🟢 Livré |
#11. Domaine — Facturation, plans et budgets
Aucun diagramme à afficher
Diagramme 11 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Consulter le catalogue de plans | Visiteur anonyme | Aucune — lecture publique | Lecture des plans triés par ordre d'affichage | Catalogue non nettoyé ⇒ vocabulaire hérité visible — écart connu | Aucune | GET /api/v1/billing/plans — table app_plans |
🟢 Livré, 🟡 catalogue à nettoyer |
| Souscrire à un plan | Propriétaire | Compte créé | Choix du plan, création de l'abonnement | Fournisseur de paiement non configuré ⇒ 503, jamais un succès simulé | Abonnement actif | POST /api/v1/billing/subscription/change-plan |
🟢 Livré |
| Démarrer un essai de 14 jours | Propriétaire | Profil de facturation configuré | Essai sans carte, rappels à J-7, J-3 et J-1 | Expiration ⇒ rétrogradation vers le palier gratuit | Essai en cours | Profils de facturation, table app_trial_records |
🟢 Livré |
| Changer de plan avec prorata | Propriétaire | Abonnement actif | Modification avec calcul de prorata | Plan cible inexistant ⇒ refus | Nouveau plan actif | POST /api/v1/billing/subscription/change-plan |
🟢 Livré |
| Annuler en fin de période | Propriétaire | Abonnement actif | Annulation différée à la fin de la période | Aucune | Abonnement en période de grâce | POST /api/v1/billing/subscription/cancel |
🟢 Livré |
| Consulter les factures | Propriétaire | Abonnement existant | Lecture de la liste et du détail | Aucune facture ⇒ liste vide | Aucune | GET /api/v1/billing/invoices |
🟢 Livré |
| Gérer un moyen de paiement | Propriétaire | Fournisseur configuré | Ajout par intention de configuration, choix du défaut, suppression | Fournisseur non configuré ⇒ 503 explicite | Moyen de paiement enregistré | POST /api/v1/billing/payment-methods/setup-intent |
🟢 Livré |
| Définir un budget par portée | Opérateur de plateforme | Capacité budgets:manage |
Limite en dollars, seuil d'avertissement, seuil critique | Limite absente ⇒ refus | Budget suivi par jauge | POST /api/v1/billing-usage/budgets |
🟢 Livré |
| Consulter les fenêtres de quota | Opérateur de plateforme | Budgets définis | Lecture de la consommation, du pourcentage et de la date de réinitialisation | Aucune fenêtre ⇒ liste vide | Aucune | GET /api/v1/billing-usage/quota-windows |
🟢 Livré |
| Vérifier le solde de crédits | Propriétaire | Économie de crédits activée | Lecture du solde et des transactions | Service de facturation injoignable ⇒ reçu portant metered=false, jamais un montant inventé |
Aucune | GET /api/v1/billing-usage/credits/balance |
🟢 Livré |
| Résoudre les droits du plan | Administrateur de plateforme | Drapeau des rôles virtuels activé | Lecture des 10 fonctions et des 6 quotas du plan | Drapeau désactivé ⇒ 404 byte-identique à l'absence de fonctionnalité | Droits résolus | GET /api/v1/entitlements |
🟡 En cours |
| Plafonner l'autonomie par le plan | Plateforme | Rôle virtuel et plan connus | Minimum entre plafond du rôle et plafond du plan | Dégradation du service ⇒ repli sur N1 | Autonomie effective bornée | Résolution d'entitlements | 🟢 Livré, 🟡 non activé par manifeste |
Grille réellement en base. Gratuit à 0 $ CAD, Équipe à 49,00 $ CAD par mois avec un annuel à 490,00 $, Entreprise sur devis. Devise unique : CAD. Plafonds d'autonomie associés : N1, N2, N3.
#12. Domaine — Sécurité, audit et conformité
Aucun diagramme à afficher
Diagramme 12 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Rechercher dans le journal d'audit | Responsable conformité | Locataire résolu | Filtres par acteur, action, ressource ou texte libre | Aucun événement ⇒ liste vide | Aucune | GET /api/v1/audit-compliance/audit/events |
🟢 Livré |
| Vérifier la chaîne de hachage | Auditeur externe | Journal alimenté | Recalcul de la chaîne, confirmation d'intégrité | Rupture détectée ⇒ signalement explicite | Preuve d'intégrité opposable | GET /api/v1/audit-compliance/audit/verify-chain |
🟢 Livré |
| Générer un rapport Loi 25 | Responsable conformité | Période choisie | Génération sur période, agrégation des événements | Période vide ⇒ rapport honnêtement vide | Rapport persisté | POST /api/v1/audit-compliance/compliance/reports |
🟢 Livré |
| Exporter un rapport de conformité | Responsable conformité | Rapport généré | Téléchargement local | Aucune | Fichier chez le demandeur | GET /api/v1/audit-compliance/compliance/reports/{reportId} |
🟢 Livré |
| Enregistrer un consentement | Personne concernée | Compte existant | Écriture dans un journal en ajout seul | Aucune | Preuve de consentement conservée | Routes de confidentialité du service utilisateurs | 🟢 Livré |
| Traiter une demande d'accès aux renseignements | Personne concernée | Compte existant | Ouverture de la demande, suivi du traitement | Demande hors délai ⇒ signalement | Demande tracée | Routes de demande d'accès du service utilisateurs | 🟢 Livré |
| Produire un export de données personnelles | Personne concernée | Demande acceptée | Constitution du travail d'export | Export volumineux ⇒ traitement différé | Archive disponible | Table des travaux d'export du service utilisateurs | 🟢 Livré |
| Déposer un secret de projet | Administrateur de plateforme | Coffre joignable | Écriture par chemin, jamais par valeur en base | Secret inline détecté ⇒ 422 sans jamais renvoyer la matière offensante | Secret déposé | Coffre de secrets, référence credential_ref |
🟢 Livré |
| Relire un secret indépendamment | Administrateur de plateforme | Secret déposé | Relecture par un chemin indépendant | Coffre injoignable ⇒ erreur typée | Preuve de dépôt réel | Coffre de secrets | 🟢 Livré |
| Appliquer l'isolation multi-locataire | Plateforme | Requête entrante | Résolution du locataire, sécurité au niveau des lignes | Désaccord avec la revendication ⇒ 404, jamais 403 | Aucune fuite entre clients | Politiques de sécurité au niveau des lignes | 🟢 Livré |
| Refuser par défaut une action non couverte | Moteur de politique | Liste d'autorisations chargée | Évaluation, refus si non couverte | Refus journalisé sous deny-by-default |
Action bloquée et tracée | Moteur de politique du service d'exécution | 🟢 Livré |
| Masquer les renseignements détectés | Plateforme | Détecteur actif | Détection par expressions régulières et somme de contrôle, échantillon masqué | Valeur brute jamais persistée | Constats exploitables sans exposer la donnée | Détecteur de renseignements personnels | 🟢 Livré |
Garantie structurelle. Les tables de bail de secrets et de session de rebond ne comportent aucune colonne de secret. Cette absence est vérifiée par un test de structure.
#13. Domaine — Identité, accès et locataires
Aucun diagramme à afficher
Diagramme 13 — flowchart
| Cas d'usage | Acteur principal | Préconditions | Déroulé nominal | Extensions | Postconditions | Route ou service réel | Statut |
|---|---|---|---|---|---|---|---|
| Se connecter par code d'autorisation avec PKCE | Utilisateur | Client public déclaré, méthode de défi S256 | Redirection vers le serveur d'identité, saisie, retour avec code | Route publique ou route d'authentification ⇒ garde exemptée | Jeton en stockage de session | Client public, redirect_uri = <origine>/auth/callback |
🟢 Livré |
| Traiter le retour d'authentification | Keycloak vers portail | Code reçu | Échange code contre jeton, lecture des revendications | Échange refusé ⇒ message d'erreur explicite | Session ouverte | Page /auth/callback |
🟢 Livré |
| Rafraîchir le jeton silencieusement | Portail | Session ouverte | Renouvellement automatique | Renouvellement impossible ⇒ redirection vers la connexion | Session prolongée | Renouvellement silencieux activé | 🟢 Livré |
| Se déconnecter | Utilisateur | Session ouverte | Fermeture locale et redirection de fin de session | Aucune | Session close | Client d'authentification partagé | 🟢 Livré |
| Inviter une personne dans l'organisation | Administrateur | Rôle ≥ ADMIN | Saisie de l'adresse, génération d'un jeton valable 7 jours | Adresse déjà membre ⇒ refus | Invitation en attente | POST /api/v1/users/invite |
🟢 Livré |
| Accepter une invitation | Personne invitée | Jeton valide et non expiré | Résolution du jeton, création du compte et de l'adhésion active | Jeton inconnu ou expiré ⇒ 404, sans fuite d'information | Membre actif | POST /api/v1/invitations/{token}/accept |
🟢 Livré |
| Attribuer un rôle à un membre | Administrateur | Rôle ≥ ADMIN | Choix du rôle dans la hiérarchie | Auto-modification interdite par séparation des devoirs | Rôle appliqué | PUT /api/v1/admin/users/{userId}/roles |
🟢 Livré |
| Créer une organisation | Administrateur | Identifiant court disponible | Vérification de disponibilité, création | Identifiant déjà pris ⇒ refus | Organisation créée | POST /api/v1/organizations |
🟢 Livré |
| Activer la double authentification | Utilisateur | Compte actif | Configuration, activation, codes de secours | Code invalide ⇒ refus | Second facteur actif | POST /api/v1/security/2fa/setup |
🟢 Livré |
| Révoquer une session | Utilisateur | Sessions listées | Sélection et révocation | Session déjà close ⇒ opération neutre | Session close | DELETE /api/v1/security/sessions/{sessionId} |
🟢 Livré |
| Basculer de locataire actif | Utilisateur | Plusieurs adhésions | Sélection dans le sélecteur, persistance locale | Locataire non autorisé ⇒ 404 | Contexte de locataire changé | Sélecteur de locataire du portail | 🟢 Livré |
| Résoudre les capacités effectives | Portail | Jeton vérifié | Dérivation des capacités depuis les rôles, application des dérogations | Aucune capacité ⇒ interface réduite, jamais d'action fantôme | Interface adaptée au rôle | Fournisseur de capacités du portail | 🟢 Livré |
⚠️ Écart connu. Le mode d'authentification par en-têtes auto-déclarés est la valeur par défaut du code et n'est surchargé dans aucun manifeste de déploiement. Le passage explicite au mode strict figure au plan de la phase 0 de pré-lancement.
#14. Synthèse des acteurs
| Acteur | Domaines où il apparaît | Nombre de cas d'utilisation associés |
|---|---|---|
| Lecteur | 1, 2, 4, 8, 9, 13 | 14 |
| Éditeur | 1, 2, 3, 4, 5, 6, 8, 9 | 41 |
| Publieur | 2, 3, 4, 6, 7, 8, 9 | 15 |
| Administrateur | 1, 5, 7, 13 | 9 |
| Propriétaire | 1, 11 | 8 |
| Administrateur de plateforme | 5, 10, 12 | 20 |
| Opérateur de plateforme | 10, 11 | 5 |
| Responsable conformité | 12 | 4 |
| Responsable qualité | 6 | 5 |
| Visiteur anonyme | 9, 11 | 7 |
| Personne concernée | 12 | 3 |
| Auditeur externe | 12 | 1 |
| Copilote | 2 | 2 |
| Agent IA | 5 | 1 |
| Pipeline d'analyse | 3 | 3 |
| Passerelle API | 1 | 1 |
| Keycloak | 13 | 1 |
| Approbateur distinct | 7 | 1 |
#15. Ce que ces diagrammes n'affirment pas
| Affirmation absente | Pourquoi |
|---|---|
| Un portail « business » distinct | Il n'existe pas de troisième portail. « Business » est une persona à l'intérieur du portail client. |
| Une application mobile | Aucun code mobile n'existe dans le dépôt. Les portails sont responsives et utilisables sur mobile via navigateur. Statut ⚪ Planifié. |
| Une analyse multi-langage du code | La rétro-ingénierie n'analyse réellement que Python. Les autres langages sont signalés comme non pris en charge. |
| 14 diagrammes UML rendus nativement | 14 types sont acceptés, 5 seulement disposent d'un générateur spécialisé. |
| Un pilote natif de nuage public | Répond 501 : ⚪ Planifié. |
| Un témoignage client | Il n'en existe aucun à ce jour. |
KySpectra — Plateforme agentique SDD/SDLC · par Kyrieva
Documentation : kyspectradoc.kyrieva.com ·
Dossier de lancement : Strategielancement/
Document interne de pré-lancement — version 1.0 du 2026-08-17. Les données marquées
« [Gabarit : … ] » doivent être renseignées ou revalidées avant diffusion externe.