apps/api/src/noyau/formuler.ts
0 → 100644
+61
−0
+152
−3
+47
−2
File changed.
Preview size limit exceeded, changes collapsed.
Loading
Trois exigences du cahier des charges portaient sur cet écran et n'étaient pas faites. Elles se sont vues à l'usage avant que je les trouve : « je n'ai qu'une notion d'heure et pas de jours », « je ne le trouve pas lisible », « je veux un champ recherche avec des filtres ». ── EF-404 : le journal ne versait pas ce qu'il constate Sur les neuf événements structurants exigés, un seul arrivait — le début d'enregistrement, que le module de réunion consigne lui-même. Les huit autres restaient au journal sans jamais paraître, et c'est pourquoi une main courante commençait à l'entrée numéro douze : les onze premières étaient l'ouverture de la crise, ses cellules et leurs salons. Versés par dérivation, non par un second événement. Écrire « crise ouverte » une deuxième fois pour que cela se voie doublerait le journal et ferait deux vérités là où il en faut une ; et la dérivation vaut pour les crises déjà ouvertes, qui montrent leur propre commencement dès la première lecture. Deux exclusions délibérées. « reunion.rejointe » et « reunion.quittee » décrivent des allées et venues, pas un début de visio : huit personnes qui entrent et sortent produiraient trente entrées pour une réunion et noieraient ce que la main courante sert à lire — le début et la fin sont représentés par l'ouverture et la fermeture de la salle. Et la salle d'une cellule naît avec elle : la verser doublerait chaque « cellule ouverte » d'un « salle ouverte » qui n'apprend rien. Une entrée versée ne se rectifie pas : elle a été constatée, pas écrite. La proposer à la rectification laisserait croire qu'on peut réécrire l'ouverture de la crise. Une erreur que la suite a rattrapée : j'avais compté « tiers.active » parmi les manquants. Le registre des tiers consigne déjà l'activation, avec sa catégorie, le numéro appelé et un lien vers la fiche. En l'ajoutant je créais deux entrées pour un appel, dont la moins complète — deux garanties existantes sont tombées avant que je le voie. Huit des neuf étaient à faire ; le neuvième était là. ── EF-406 : « H+04:12 » « C'est ainsi que les cellules raisonnent réellement », dit l'exigence. La barre du haut l'affichait pour la crise, les entrées non. Il est sous l'heure absolue, pas à sa place : on a besoin des deux. Le formateur du H+ et celui du résumé d'événement existaient dans la clôture. Je les ai déplacés au noyau plutôt que dupliqués — deux formulations pour un même fait finiraient par se contredire dans le dossier que l'assureur relira. Cela a cassé au passage un cycle d'import : la clôture dépend de la main courante, l'inverse n'était pas tenable. ── EF-407 : des filtres qui se combinent, et se partagent Recherche dans le texte, insensible à la casse **et aux accents** : « securite » trouve « sécurité ». Par « translate », un builtin, plutôt que par l'extension « unaccent » qui ferait mieux — une extension demande un privilège que toutes les instances n'ont pas, et une migration qui échoue empêche de démarrer. Prix disproportionné pour une recherche. Ce que l'utilisateur tape n'est pas de la syntaxe : « % » cherche un pour cent. Le terme trouvé est surligné, sinon on cherche deux fois. La frappe est débattue de 250 ms et la liste ne se vide pas pendant le chargement : sur un réseau de crise, un écran qui clignote à chaque lettre est un écran qu'on n'utilise pas. Genres en multi-sélection, cellule, auteur, période, diffusion. Et l'état des filtres vit dans l'adresse, en remplacement plutôt qu'en empilement — filtrer n'est pas naviguer. Sans cela on décrit à l'oral ce qu'on vient de trouver, au moment où personne n'a le temps d'écouter. Sur « criticité », que l'exigence énumère : je ne l'ai pas implémentée, parce qu'une entrée de main courante n'en a pas. Ni le texte, ni l'auteur, ni le genre ne portent de criticité — seules les applications métier en ont une. J'ai mis « diffusion » à sa place, qui est l'axe réel le plus proche, plutôt que d'inventer un champ pour cocher une case. ── La lisibilité Le coupable n'était pas le manque de style : le genre était rendu **à l'intérieur du texte**. « FAIT » et « POINT SITUATION » n'ayant pas la même largeur, chaque entrée commençait à un endroit différent et l'œil devait chercher le début de chaque ligne. Il a sa colonne, de largeur fixe. Un séparateur de jour collant s'insère à chaque changement de date : à H+20 une crise a franchi minuit, et « 16:17 » puis « 11:41 » se lisaient comme une erreur d'ordre. L'auteur est là systématiquement — l'entrée ne portait que son identifiant, si bien que le nom n'apparaissait que quand le texte le contenait. Ce qui situe l'entrée passe sur une seconde ligne, discrète. Et « Rectifier » ne s'affiche qu'au survol ou au clavier : douze fois le même bouton en pleine colonne de lecture, pour un geste rare. Vingt-et-une garanties neuves. Ce qui reste sur cet écran, non demandé aujourd'hui : la frise (EF-408), l'export PDF, CSV et JSON (EF-410), la saisie hors ligne (EF-409), et la pagination — la route renvoie tout le journal, ce qui pèsera à cinq mille entrées. Co-Authored-By: Claude (RCA)
File changed.
Preview size limit exceeded, changes collapsed.