T ToutadminDocumentation

Journal des livraisons

L'ordre dans lequel le produit a été construit, et pourquoi chaque lot a été fait ainsi. Les entrées les plus récentes d'abord.

Vie juridique et conformité : capital, mandats, assemblées, déclarations#

livré

Ce qu'une entreprise doit tenir par écrit parce que sa forme sociale l'y oblige, et ce que nul tableur partagé ne devrait tenir : le registre du capital, les mandats sociaux, les assemblées, et les déclarations que chacun fait sur ses propres liens.

  • La détention n'est pas une colonne. Elle se recalcule des mouvements de titres, comme un solde se recalcule de ses écritures : personne ne corrige le capital sans laisser la ligne qui l'explique. Une cession écrit ses deux jambes dans la même transaction — ce qui part de chez l'un, ce qui arrive chez l'autre — ou n'en écrit aucune. Céder plus qu'on ne détient est refusé en disant combien on détient, et un associé qui porte encore des titres ne se supprime pas.
  • Les mandats sociaux avec leur durée, et une fin de mandat signalée à l'avance aux seuls administrateurs : un mandat échu que l'on continue d'exercer engage la société sur des actes que personne n'avait le pouvoir de signer.
  • Les assemblées : quorum compté en titres et non en associés, résolutions, votes, et majorité calculée sur les voix exprimées — les abstentions écartées du dénominateur. La référence est attribuée par le registre, pas saisie.
  • Intérêts, cadeaux, délégations. Chacun déclare pour soi et ne voit que ses propres déclarations ; l'identifiant de l'auteur vient de la session, jamais du formulaire. Au-delà de 150 €, un cadeau demande un examen — un usage écrit vaut mieux qu'un usage supposé. Les deux registres figurent dans l'export RGPD de la personne, et n'en sont pas effaçables.
Un formulaire qui réémet ce qu'il n'édite pas finit par l'écraser

L'écran de rédaction du procès-verbal portait le statut de l'assemblée en champ caché, pour le renvoyer intact. Le garde-fou qui interdit d'afficher un statut brut l'a vu, et plutôt que de l'affaiblir on a séparé les deux gestes : le procès-verbal a sa propre route, et la fiche de l'assemblée n'écrit plus le procès-verbal. Un formulaire n'a rien à réémettre de ce qu'il ne modifie pas.

Achats : le rapprochement à trois, et le recouvrement échelonné#

livré

Deux bouts de la même chaîne : ce qu'on doit aux fournisseurs, et ce que les clients doivent. L'un et l'autre se perdent par défaut de comparaison plus que par malveillance.

  • Bons de commande, réceptions, rapprochement à trois. Le bon de commande engage, la réception constate, la facture réclame : quand les trois chiffres divergent, on paie soit ce qu'on n'a pas commandé, soit ce qui n'est jamais arrivé. Recevoir plus que commandé est refusé ; une ligne rattachée à un article entre en stock au moment de sa réception, dans le même geste ; le statut suit les réceptions et ne se tient pas à la main.
  • Le rapprochement ne bloque pas le règlement — il n'en a pas le pouvoir, et une livraison partielle facturée d'avance est parfois convenue. Il nomme l'écart au moment où quelqu'un regarde la facture, ce qui suffit à décider.
  • Recouvrement : balance âgée par tranche de retard, et trois paliers — rappel, relance, mise en demeure. Le palier se déduit de ce qui a déjà été envoyé, pas du seul retard, et le délai du suivant se compte depuis la relance précédente : c'est le silence qui appelle l'escalade, pas le calendrier.

Alerte interne, et un journal que l'on ne réécrit pas sans le dire#

livré

Le dispositif de recueil des signalements est obligatoire en France dès cinquante salariés depuis la loi du 21 mars 2022, et impossible à bâcler : un canal que l'on n'ose pas emprunter ne sert à rien, et c'est la conception qui décide si on ose.

  • Le contenu est chiffré en base : une copie de la base ne livre ni les signalements, ni ce qui s'y dit ensuite.
  • Les référents seuls y accèdent, pas les administrateurs en tant que tels. L'administration désigne les référents — ce qui est tracé — et ne lit rien.
  • Un signalement anonyme n'enregistre pas son auteur, et la route neutralise la trace automatique pour que le journal d'audit ne le rattrape pas par la bande.
  • Le suivi se fait sans compte, avec la référence et un code affiché une seule fois : se connecter pour lire la réponse reviendrait à signer son signalement.
  • Les délais légaux sont comptés, pas promis : accusé de réception sous 7 jours, retour sur les suites sous 90 jours, l'un et l'autre affichés en retard dès qu'ils le sont.
  • Chaque ouverture d'un signalement est consignée dans le signalement, hors du journal général : l'y inscrire nommerait l'alerte à toute l'administration.

Dans le même lot, le journal d'audit est scellé par chaînage d'empreintes : chaque entrée porte l'empreinte de la précédente. Modifier une ligne, ou en retirer une du milieu, casse la chaîne à cet endroit — et la vérification dit lequel, en nommant l'entrée et en distinguant un contenu modifié d'une entrée disparue.

Ce que le scellement ne fait pas

Empêcher la réécriture. Qui tient le fichier de la base peut tout recalculer. Le scellement rend l'altération visible, ce qui est ce qu'on attend d'un journal, et c'est aussi loin qu'on aille sans autorité d'horodatage extérieure. Une purge, elle, retire légitimement le début de la chaîne — et laisse sa propre entrée pour le dire.

Cinq espaces : informatique, développement, événements, points individuels, tiers#

livré

Un lot ajouté après coup, pour cinq publics que le produit ne servait pas encore : ceux qui tiennent le système d'information, ceux qui livrent le code, ceux qui organisent la vie collective, les managers dans leur rapport individuel à leur équipe, et les tiers avec qui l'entreprise contracte.

  • Le parc logiciel et sa revue des accès. Un logiciel n'est pas un équipement : il a des sièges qu'on paie et une liste de gens qui entrent dedans. Les sièges sont tenus comme une contrainte — attribuer au-delà est refusé, réduire sous le nombre d'accès ouverts aussi — et la revue remonte d'abord les comptes fermés qui gardent un accès applicatif.
  • Les incidents du SI, horodatés au début et au rétablissement, d'où sort un délai moyen de rétablissement qui se mesure au lieu de se raconter. Clore un incident sans heure de rétablissement est refusé.
  • Le référentiel applicatif et le registre des livraisons par environnement, avec les indicateurs qui en découlent. Le taux d'échec compte les livraisons retirées autant que les échouées.
  • Les événements d'entreprise, dont la capacité tient toute seule : au-delà des places on entre en liste d'attente, et un désistement fait monter le premier qui attend, avec une notification.
  • Les points individuels, avec deux comptes rendus : le résumé que le collaborateur lit, et les notes du manager, qui ne quittent pas son écran.
  • La fiche tiers : interlocuteurs, pièces de conformité datées, et évaluations notées, la note affichée étant celle de la dernière revue.
Ce que les notes de manager ont obligé à trancher

Ces notes parlent d'une personne, et une demande d'accès à ses données personnelles les lui rend. Les cacher de l'export aurait été confondre une règle du produit avec une exception au droit. Elles figurent donc dans l'export RGPD, et l'écran le dit au manager au moment où il écrit.

Traductions : les 89 vues, écran par écran#

livré

Le vocabulaire générique traité, il restait le vocabulaire métier : environ 1 600 chaînes réparties sur une soixantaine d'écrans, chacune n'apparaissant que sur un ou deux d'entre eux. Ce lot les a prises une par une, de la comptabilité au parapheur.

  • Le dictionnaire passe à 2765 clés par langue ; plus une seule vue n'affiche de texte français en dur.
  • Les phrases qu'une donnée coupait en deux deviennent des clés paramétrées — « {total} échéance(s) à 45 jours, dont {overdue} dépassée(s) » — plutôt que des fragments concaténés, qui ne se traduisent dans aucune langue à l'ordre des mots différent.
  • Rien de fonctionnel ne bouge : les valeurs stockées, les attributs value, les comparaisons de chaînes et les URL de filtre gardent leur libellé français, qui est la donnée.
Ce que l'échappement HTML a révélé

Un libellé passé par le dictionnaire traverse <%= %>, qui échappe l'apostrophe en &#39;. À l'écran, rien ne change ; un test qui cherchait la phrase littéralement dans le HTML brut, lui, a cessé de la trouver. L'assertion accepte désormais les deux écritures et dit pourquoi.

Traductions : vocabulaire générique#

livré 6c27dd5

Après les statuts et le chrome, le gisement suivant était le vocabulaire qui revient d'un écran à l'autre. Intitulé apparaissait 32 fois, Supprimer 33 fois : traduire ce mot une fois le traduit partout.

  • 101 clés génériques ajoutées dans les 16 langues, branchées sur 673 emplacements répartis sur 55 vues.
  • Substitution restreinte aux clés dont le libellé ne dépend pas du contexte : Objet côté messagerie et Début côté pointage gardent leur clé d'origine, sans quoi on produirait des faux amis.
  • Rien de fonctionnel ne bouge : aucune <option> ne se passe d'attribut value, aucun bouton ne porte de name sans value, et les URL de filtre gardent la valeur française stockée.
Un plantage trouvé par les tests

Deux boucles écrites tools.forEach((t) => …) masquaient le helper de traduction : à l'intérieur, t('common.edit') tentait d'appeler l'objet de la boucle comme une fonction, et la console d'administration tombait. Variable renommée, et un test interdit désormais ce masquage dans toutes les vues.

Traductions : statuts, chrome et mise en page arabe#

livré 93c4d4c

Un audit du dispositif d'internationalisation. Le dictionnaire lui-même était sain — parité des 16 langues, paramètres, écritures non latines. Le défaut était ailleurs, à trois endroits.

  • Les statuts s'affichaient en français dans les 16 langues, sur 50 écrans. Ils restent stockés en français — valeur métier, contraintes CHECK, comparaisons — mais l'affichage passe désormais par un helper. Voir Traductions.
  • Le chrome de chaque page était en dur : bouton de déconnexion, sélecteur de thème, et la navigation latérale des quatre espaces. Ironie, common.logout existait déjà en 16 langues — l'en-tête ne l'appelait simplement pas.
  • L'arabe ne se retournait qu'à moitié. La page passait bien en dir="rtl", mais la feuille de style figeait les côtés. Bascule sur les propriétés logiques, vérifiée géométriquement.

Pièces reçues : lecture des factures et capture de la boîte aux lettres#

livré bfdabd9

L'outil du comptable : une corbeille unique, une lecture par règles toujours active, une analyse assistée optionnelle et une relève IMAP. Détail sur Pièces reçues.

Le point d'équilibre du lot : concilier « analyse par IA si possible » avec l'exigence de sécurité. La lecture par règles est le chemin toujours disponible ; le modèle est une option explicite, à identifiants chiffrés, qui peut pointer vers un service hébergé chez vous. Le modèle ne décide de rien : ce que les règles savent vérifier leur reste acquis.

Circuits d'approbation configurables et export intégral#

livré 4dc71da

  • Types de demande paramétrables, avec des étapes qui désignent une fonction et non une personne : le circuit survit aux départs.
  • Seuils par étape, et étape sautée plutôt que bloquée quand aucun validateur n'existe. Personne ne valide sa propre demande.
  • Export intégral en JSON, documents compris, secrets exclus — et la liste des exclusions est écrite dans l'archive elle-même.

API REST de lecture et webhooks sortants signés#

livré 2549c33

API volontairement en lecture seule, jetons à portées jamais conservés en clair, webhooks signés en HMAC-SHA256 avec réessais et extinction automatique. Détail sur API et webhooks.

Parapheur : signature électronique#

livré c215e2e

Document figé par son empreinte dès le dépôt, sceau HMAC par signature, circuit séquentiel, mot de passe et consentement exigés, attestation imprimable. La signature est simple, et l'attestation le dit elle-même.

Organigramme et import de données en masse#

livré 5dd49c7

  • Organigramme qui montre qui n'est rattaché nulle part — c'est ce qu'on découvre en le dessinant.
  • Import CSV avec aperçu qui n'écrit rien, puis écriture tout ou rien, revalidée au moment d'écrire.
  • Lecteur CSV écrit à la main : un import de masse est une porte d'entrée dans la base, la dépendance qui lit le fichier serait aussi sensible que celle qui l'écrit.

Multidevise, facturation récurrente et TVA#

livré e3985c4

  • Le taux vit dans la pièce, pas dans la table des taux : mettre un taux à jour ne réécrit pas le chiffre d'affaires de l'an dernier.
  • Un index unique interdit de facturer deux fois la même échéance d'abonnement, même si deux balayages se croisent.
  • La période de TVA se choisit dans une liste plutôt que de se saisir : trois jours de décalage feraient une déclaration fausse que personne ne verrait passer.

Direction, planning, qualité et accueil#

livré f605bfe

Quatre espaces d'un coup : gouvernance (réunions, décisions, actions, registre des risques), sondages anonymes, planning et astreintes, qualité, accueil et courrier.

Deux décisions structurantes : l'anonymat des sondages tient à la structure des tables (les réponses ne portent aucun identifiant), et une décision peut naître hors réunion — sinon la moitié des arbitrages n'entrerait jamais au registre.

Externalisation des sauvegardes#

livré 1208fac

FTP/FTPS et Google Drive par compte de service, secrets chiffrés, test de connexion qui écrit réellement, alerte aux administrateurs en cas d'échec. Client FTP et jeton JWT écrits à la main, éprouvés contre un vrai serveur FTP et un vrai couple de clés.

Sauvegarde automatique et restauration#

livré ae1a8a1

Archive complète (base, photos, CV, coffre, parapheur), base copiée par le mécanisme en ligne de SQLite, manifeste d'empreintes, restauration transactionnelle avec sauvegarde de sécurité préalable.

Palettes et coffre-fort#

livré 9921207 · 33d17b0

  • Trois palettes choisies par l'administration, avec un aperçu qui emprunte les vrais jetons — il ne peut pas mentir sur ce qu'il propose. Contraste vérifié sur les six combinaisons palette × thème.
  • Les bulletins restent accessibles après le départ : le compte est fermé, mais ses identifiants ouvrent son coffre-fort et rien d'autre. Conservation de 50 ans, documents scellés par leur empreinte.

Ce qui reste ouvert#

SujetÉtat
Traduction du corps des écrans des derniers lots (~1 600 chaînes)à faire
Synchronisation de la messagerie externe (IMAP/SMTP par membre)à faire
Encapsulation PDF/A-3 (Factur-X) et dépôt sur plateforme agrééeà faire
Archivage à valeur probante (NF Z42-020, horodatage qualifié)hors périmètre
Télétransmission fiscale et sociale (DSN, TVA)hors périmètre
Signature électronique qualifiée eIDAShors périmètre

Documentation de Toutadmin — construite le 2026-09-13. Site autonome, indépendant du logiciel.