Unverified Commit 128db63e authored by Kourser's avatar Kourser
Browse files

Wiki : journal des nouveautés et exemples de rapport téléchargeables

Deux pages manquaient pour qu'un visiteur puisse se faire une idée avant de
s'engager : ce qui a changé, et à quoi ressemble le livrable.

« Nouveautés » est un journal daté, reconstruit depuis l'historique du dépôt,
du premier jet au socle multi-organisations. Il tient lieu de signal de vitalité
pour un projet open source, et évite d'avoir à lire le log git.

« Exemples de rapport » montre ce que produit une clôture : chiffres clés,
chronogramme prévu contre réel, main courante, restitution du questionnaire. Les
exports CSV et JSON joints reprennent le FORMAT EXACT de `report.service.ts` et
`retex-aggregate.ts` — un exemple qui ne correspondrait pas au vrai format serait
pire que pas d'exemple. Le PDF n'y est pas : il est produit par l'impression du
rapport depuis le navigateur.

La page est en `.mdx` et non `.md` : en Docusaurus 3 un `.md` est du CommonMark,
et il fallait `useBaseUrl` pour que les liens de téléchargement survivent à un
wiki servi sous un sous-chemin — ce qui est le cas par défaut sur GitLab Pages.

Co-Authored-By: Claude (RCA)
parent e00b5293
Loading
Loading
Loading
Loading
+102 −0
Original line number Diff line number Diff line
---
id: exemples-de-rapport
title: Exemples de rapport
sidebar_label: Exemples de rapport
description: Ce que produit Cythin à la fin d'un exercice, avec des exports d'exemple à télécharger.
---

import useBaseUrl from '@docusaurus/useBaseUrl';

# Exemples de rapport

À la clôture d'un exercice, Cythin produit un **rapport de RETEX** consultable en ligne,
imprimable en PDF, et exportable en CSV et JSON. Cette page montre ce qu'il contient, sur un
exercice fictif — aucune donnée réelle.

:::info Exercice d'exemple
« Rançongiciel — plateforme logistique », 6 participants, 9 personnages, 1 h 45 de jeu.
:::

## Ce que contient le rapport

### 1. Chiffres clés

| Indicateur | Valeur |
|---|---|
| Participants | 6 |
| Personnages | 9 |
| Injects envoyés | 9 / 10 |
| Emails | 34 |
| Messages de chat | 78 |
| Publications sur les réseaux | 12 (dont **2 par la cellule**) |
| Articles de presse | 3 |
| Documents | 7 |
| Entrées de main courante | 21 |
| Notes d'observateurs | 8 |

Le compteur « dont publiés par la cellule » est le plus parlant des dix : il dit si l'équipe a
pris la parole, ou si elle a seulement subi la pression médiatique.

### 2. Chronogramme — prévu contre réel

Chaque inject planifié est comparé à son envoi effectif. L'écart est la mesure du tempo réel
de l'animation.

| T+ prévu | T+ réel | Écart | Canal | Statut | Inject |
|---|---|---|---|---|---|
| 00:00:00 | 00:00:00 | 0 s | EMAIL | SENT | Alerte du prestataire d'infogérance |
| 00:12:00 | 00:14:40 | +160 s | EMAIL | SENT | Rançongiciel : note des attaquants |
| 00:25:00 | 00:31:18 | +378 s | SOCIAL | SENT | Premier post d'un client mécontent |
| 00:45:00 | — | — | EMAIL | SKIPPED | Relance des attaquants |
| 01:30:00 | 01:41:07 | +667 s | NEWS | SENT | Article : fuite de données évoquée |

Un inject `SKIPPED` n'est pas un raté : c'est une décision d'animation, tracée.

### 3. Main courante et notes d'observateurs

La main courante tenue par la cellule et les notes horodatées des observateurs sont reprises
intégralement, sur l'horloge de l'exercice.

> **T+00:15:00 · DÉCISION · Direction** — Isolement du serveur de fichiers, malgré l'arrêt des expéditions.
>
> **T+00:13:00 · Observateur** — Cellule constituée en 13 minutes. Rôle du juridique non attribué au départ.

### 4. Restitution du questionnaire de RETEX

Agrégée et **anonyme** : moyennes par rubrique et par question, commentaires libres détachés
de leur auteur.

| Rubrique / question | Moyenne | Réponses |
|---|---|---|
| **Alerte et mobilisation** | **3,9** | 6 |
| L'alerte initiale vous est parvenue de façon claire et exploitable. | 4,2 | 6 |
| La cellule a été constituée dans un délai adapté à la situation. | 3,5 | 6 |
| **Communication** | **2,8** | 6 |
| Les messages diffusés à l'extérieur étaient cohérents entre eux. | 2,8 | 6 |

## Télécharger les exemples

<ul>
  <li>
    <a href={useBaseUrl('/exemples/rapport-retex-exemple.csv')} download>
      Chronogramme prévu / réel — CSV
    </a>{' '}
    — format exact de l'export <code>Export CSV</code> du rapport (séparateur <code>;</code>).
  </li>
  <li>
    <a href={useBaseUrl('/exemples/rapport-retex-exemple.json')} download>
      Rapport complet — JSON
    </a>{' '}
    — format exact de l'export <code>Export JSON</code> : chiffres clés, chronogramme, main
    courante, notes, agrégat de RETEX.
  </li>
</ul>

Le **PDF** n'est pas fourni ici : il est produit par l'impression du rapport depuis le
navigateur, et reprend la mise en page de l'écran ci-dessus.

## Ce que le rapport ne fait pas encore

Le rapport **compte** et **compare**, il ne **diagnostique** pas encore : il n'y a ni score,
ni liste automatique de points d'attention, ni pistes d'action. C'est une évolution
identifiée, pas une fonctionnalité livrée.
+84 −0
Original line number Diff line number Diff line
---
id: nouveautes
title: Nouveautés
sidebar_label: Nouveautés
description: Journal daté des évolutions de Cythin.
---

# Nouveautés

Ce qui a changé, du plus récent au plus ancien. Les correctifs d'affichage mineurs
ne sont pas tous listés ; les changements visibles pour un animateur ou un joueur le sont.

## 21 août 2026 — Fiches réflexes par rôle

- **Fiches réflexes** par rôle : mission, risques en cas de crise, et réflexes attendus.
  Rédigées et modifiables par exercice.
- **Deux usages, activables séparément** par l'animateur, pour s'adapter au public :
  - *briefing* — le joueur reçoit sa fiche en fenêtre d'accueil **quand il ouvre son espace**,
    une fois par onglet, y compris s'il rejoint en cours de crise ;
  - *onglet consultable* — tous les rôles et leurs attendus, à tout moment pendant l'exercice.
- Les deux volets sont **fermés par défaut** : un exercice existant ne change pas de comportement.
- **Référentiel fourni** : six rôles installables en un clic (direction, communication,
  informatique, juridique et financier, ressources humaines, relations clients et usagers),
  puis librement adaptables. Inspiré du pack « Réflexes Cyber » de l'ANSSI et du CDSE
  (Licence Ouverte v2.0).
- Wiki : cette page, et une page [Exemples de rapport](./exemples-de-rapport.mdx).
- Page de connexion : liens vers le wiki, si l'instance en déclare un (`DOCS_URL`).

## 20 août 2026 — Affichage de l'espace joueur

- Correctif : l'espace joueur s'allongeait à chaque message et les barres de navigation
  sortaient de l'écran. La coque est désormais à hauteur fixe et **seul le module actif défile**.
- Même correction pour la carte de chat de la console d'animation.

## 20 août 2026 — Multi-organisations et console d'instance

- **Appartenances** : le rôle est porté par l'appartenance à une organisation et non plus par
  le compte. Une même personne peut être animatrice ici et conceptrice ailleurs.
- **Console d'instance** : organisations, plafonds d'usage, bascule tracée.
- **Identité d'organisation** : réglages, cellule de crise pré-configurée, instantané repris
  à la création d'un exercice.
- **Ouverture au public** : inscription (libre-service ou modérée), liens par courriel, invitations.
- **Suspension** d'une organisation : coupe aussi les accès joueurs et les écrans de salle.
- **Courriel** : réglages SMTP surchargeables depuis la console d'instance, sans redéploiement.

## 19 août 2026 — Immersion et confort d'animation

- **Images** : pièces jointes visuelles dans les réseaux sociaux, la messagerie et le chat.
- **Avatars** dédiés aux comptes récurrents des kits.
- **Variables de mise en situation** : page de configuration, substituées à la livraison de
  chaque inject (et non figées à l'installation du kit).
- **Mur de crise** : thème clair et habillage réel des plateformes.
- **Clôture d'exercice** : confirmation, blocage des écritures joueur, annonce et lien vers le RETEX.
- **Console** : pleine largeur, colonnes redimensionnables et permutables.
- Correctifs : notification de son propre message, main courante masquée, messages directs
  invisibles, auto-défilement du chat, heure des publications.

## 18 août 2026 — Animation avancée

- **Comcheck** : vérification des accès avant le lancement.
- **RETEX structuré** : modèles de questionnaire, collecte, restitution agrégée et anonyme.
- **Réseaux sociaux côté joueurs** : la cellule publie sa communication de crise.
- **Mur de crise** et **écran de salle dédié** (lien en lecture seule, sans compte).
- **« Voir comme »** : un animateur observe l'espace d'un joueur, en lecture seule.

## 5 août 2026 — Kits non-cyber

- Trois kits d'exercice hors périmètre cyber, et variables de personnalisation.

## 23 juillet 2026 — Kits et wiki

- **Bibliothèque de kits** : kit immersif complet avec bruit de fond, canaux presse et appels.
- **Exercices** : personnalisation à la création, suppression après archivage.
- Publication de ce **wiki**.

## 22 juillet 2026 — Briques immersives

- Messagerie adressée par personnage, main courante, presse, annuaire, habillages immersifs.
- Réseaux sociaux : pages d'accueil X et LinkedIn, thèmes clair et sombre.
- **Éditeur de kits** complet, injects rejouables et modifiables en cours d'exercice.

## 21 juillet 2026 — Premier jet

- Socle technique : monorepo, PostgreSQL, image Docker unique, intégration continue.
+2 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ const sidebars = {
    'guide-joueur',
    'administration',
    'reference',
    'exemples-de-rapport',
    'nouveautes',
  ],
};

+11 −0
Original line number Diff line number Diff line
T+ prevu;T+ reel;Ecart (s);Canal;Statut;Inject;Objet
00:00:00;00:00:00;0;EMAIL;SENT;"Alerte du prestataire d'infogerance";"Comportement anormal sur vos serveurs de fichiers"
00:05:00;00:06:12;72;CHAT;SENT;"Signalement d'un utilisateur";""
00:12:00;00:14:40;160;EMAIL;SENT;"Rancongiciel : note des attaquants";"Vos donnees sont chiffrees"
00:20:00;00:20:05;5;CALL;SENT;"Appel du directeur commercial";""
00:25:00;00:31:18;378;SOCIAL;SENT;"Premier post d'un client mecontent";""
00:35:00;00:36:02;62;NEWS;SENT;"Depeche : incident chez un acteur logistique";""
00:45:00;;;EMAIL;SKIPPED;"Relance des attaquants";"Le delai court toujours"
01:00:00;01:02:55;175;SOCIAL;SENT;"Emballement : le sujet est repris";""
01:15:00;01:15:30;30;DOCUMENT;SENT;"Rapport d'analyse preliminaire";""
01:30:00;01:41:07;667;NEWS;SENT;"Article : fuite de donnees evoquee";""
+136 −0
Original line number Diff line number Diff line
{
  "exercise": {
    "id": "exemple",
    "name": "Rançongiciel — plateforme logistique",
    "sector": "Transport et logistique",
    "objectives": "Éprouver la mobilisation de la cellule, la tenue de la main courante et la coordination de la communication externe.",
    "status": "CLOSED",
    "createdAt": "2026-06-11T07:45:00.000Z"
  },
  "durationSec": 6300,
  "stats": {
    "participants": 6,
    "characters": 9,
    "injectsPlanned": 10,
    "injectsSent": 9,
    "emails": 34,
    "chatMessages": 78,
    "socialPosts": 12,
    "socialPostsByPlayers": 2,
    "newsArticles": 3,
    "documents": 7,
    "logEntries": 21,
    "observerNotes": 8
  },
  "injectTimeline": [
    {
      "title": "Alerte du prestataire d'infogérance",
      "subject": "Comportement anormal sur vos serveurs de fichiers",
      "channel": "EMAIL",
      "trigger": "SCHEDULED",
      "status": "SENT",
      "plannedOffsetSec": 0,
      "actualAtSec": 0,
      "deltaSec": 0
    },
    {
      "title": "Rançongiciel : note des attaquants",
      "subject": "Vos données sont chiffrées",
      "channel": "EMAIL",
      "trigger": "SCHEDULED",
      "status": "SENT",
      "plannedOffsetSec": 720,
      "actualAtSec": 880,
      "deltaSec": 160
    },
    {
      "title": "Relance des attaquants",
      "subject": "Le délai court toujours",
      "channel": "EMAIL",
      "trigger": "SCHEDULED",
      "status": "SKIPPED",
      "plannedOffsetSec": 2700,
      "actualAtSec": null,
      "deltaSec": null
    }
  ],
  "logEntries": [
    {
      "atExerciseSec": 240,
      "category": "FAIT",
      "message": "Alerte reçue du prestataire, transmise au responsable informatique.",
      "authorLabel": "Direction"
    },
    {
      "atExerciseSec": 900,
      "category": "DECISION",
      "message": "Isolement du serveur de fichiers, malgré l'arrêt des expéditions.",
      "authorLabel": "Direction"
    },
    {
      "atExerciseSec": 2280,
      "category": "ACTION",
      "message": "Message d'attente publié à destination des clients.",
      "authorLabel": "Communication"
    }
  ],
  "observerNotes": [
    {
      "atExerciseSec": 780,
      "note": "Cellule constituée en 13 minutes. Rôle du juridique non attribué au départ.",
      "authorLabel": "Observateur 1"
    },
    {
      "atExerciseSec": 3300,
      "note": "Deux prises de parole externes non alignées entre elles.",
      "authorLabel": "Observateur 1"
    }
  ],
  "retex": {
    "open": false,
    "respondents": 6,
    "averageScore": 3.5,
    "categories": [
      {
        "id": "cat-1",
        "order": 0,
        "name": "Alerte et mobilisation",
        "averageScore": 3.9,
        "questions": [
          {
            "id": "q-1",
            "order": 0,
            "text": "L'alerte initiale vous est parvenue de façon claire et exploitable.",
            "averageScore": 4.2,
            "answers": 6,
            "comments": ["Le message du prestataire était clair, mais il est arrivé sur une seule boîte."]
          },
          {
            "id": "q-2",
            "order": 1,
            "text": "La cellule a été constituée dans un délai adapté à la situation.",
            "averageScore": 3.5,
            "answers": 6,
            "comments": []
          }
        ]
      },
      {
        "id": "cat-2",
        "order": 1,
        "name": "Communication",
        "averageScore": 2.8,
        "questions": [
          {
            "id": "q-3",
            "order": 0,
            "text": "Les messages diffusés à l'extérieur étaient cohérents entre eux.",
            "averageScore": 2.8,
            "answers": 6,
            "comments": ["Deux versions ont circulé pendant une vingtaine de minutes."]
          }
        ]
      }
    ]
  }
}