[{"data":1,"prerenderedAt":299},["ShallowReactive",2],{"navigation_docs_fr":3,"-fr-architecture-stack":78,"-fr-architecture-stack-surround":294},[4,14,40,54,60,66,72],{"title":5,"path":6,"stem":7,"children":8},"L'essentiel","/fr/proposition","fr/1.proposition/1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Votre besoin, compris","/fr/proposition/comprehension","fr/1.proposition/2.comprehension",{"title":15,"path":16,"stem":17,"children":18},"Vue d'ensemble","/fr/architecture","fr/2.architecture/1.index",[19,20,24,28,32,36],{"title":15,"path":16,"stem":17},{"title":21,"path":22,"stem":23},"Les choix techniques","/fr/architecture/stack","fr/2.architecture/2.stack",{"title":25,"path":26,"stem":27},"Sécurité & conformité","/fr/architecture/securite","fr/2.architecture/3.securite",{"title":29,"path":30,"stem":31},"Les modules","/fr/architecture/modules","fr/2.architecture/4.modules",{"title":33,"path":34,"stem":35},"Intégration partenaires","/fr/architecture/partenaires","fr/2.architecture/5.partenaires",{"title":37,"path":38,"stem":39},"Système d'information","/fr/architecture/systeme-information","fr/2.architecture/6.systeme-information",{"title":41,"path":42,"stem":43,"children":44},"Le planning","/fr/roadmap","fr/4.roadmap/1.index",[45,46,50],{"title":41,"path":42,"stem":43},{"title":47,"path":48,"stem":49},"La méthode","/fr/roadmap/methodologie","fr/4.roadmap/2.methodologie",{"title":51,"path":52,"stem":53},"Le budget","/fr/roadmap/budget","fr/4.roadmap/3.budget",{"title":55,"path":56,"stem":57,"children":58},"Vortex-Soft","/fr/equipe","fr/5.equipe/1.index",[59],{"title":55,"path":56,"stem":57},{"title":61,"path":62,"stem":63,"children":64},"Cahier des charges","/fr/cdc","fr/6.cdc/1.index",[65],{"title":61,"path":62,"stem":63},{"title":67,"path":68,"stem":69,"children":70},"Infrastructure","/fr/infrastructure","fr/7.infrastructure/1.index",[71],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75,"children":76},"Maquette","/fr/maquette","fr/8.maquette/1.index",[77],{"title":73,"path":74,"stem":75},{"id":79,"title":21,"badge":80,"body":81,"category":80,"description":287,"extension":288,"links":80,"meta":289,"navigation":291,"path":22,"seo":292,"stem":23,"tags":80,"__hash__":293},"docs_fr/fr/2.architecture/2.stack.md",null,{"type":82,"value":83,"toc":278},"minimark",[84,89,97,113,119,126,130,133,183,187,190,193,197,200,219,223],[85,86,88],"h2",{"id":87},"pourquoi-go-et-postgresql","Pourquoi Go et PostgreSQL",[90,91,92,96],"p",{},[93,94,95],"strong",{},"Go"," produit un binaire unique, sans machine virtuelle ni dépendances système : le déploiement et la mise à jour se réduisent à remplacer un fichier. Sa gestion de la concurrence est sûre par construction, ce qui compte quand plusieurs guichets écrivent simultanément.",[90,98,99,102,103,107,108,112],{},[93,100,101],{},"PostgreSQL"," apporte ce dont un système comptable ne peut pas se passer : des transactions ACID réelles, des contraintes différées vérifiées au ",[104,105,106],"code",{},"COMMIT",", le cloisonnement par ligne (",[109,110,111],"em",{},"Row-Level Security",") directement dans la base, et une restauration à un instant précis (PITR).",[90,114,115,118],{},[93,116,117],{},"Redis"," ne sert que de chemin rapide : idempotence, verrous de caisse, limitation de débit. PostgreSQL reste la source de vérité — si Redis tombe, le système ralentit, il ne ment pas.",[90,120,121,122,125],{},"Nous utilisons ",[93,123,124],{},"pgx et sqlc"," plutôt qu'un ORM. Sur du code financier, nous voulons voir le SQL exécuté, pas le deviner.",[85,127,129],{"id":128},"largent-ne-se-stocke-pas-en-virgule-flottante","L'argent ne se stocke pas en virgule flottante",[90,131,132],{},"C'est le détail qui distingue un système comptable d'un logiciel de gestion.",[134,135,136,152,159,169,176],"ul",{},[137,138,139,140,143,144,147,148,151],"li",{},"Les montants sont des ",[93,141,142],{},"entiers 64 bits en unités mineures",". Jamais ",[104,145,146],{},"float64",", jamais ",[104,149,150],{},"REAL"," en base.",[137,153,154,155,158],{},"Les taux sont en ",[104,156,157],{},"NUMERIC(10,6)",".",[137,160,161,164,165,168],{},[93,162,163],{},"XAF et XOF n'ont pas de décimale"," — l'unité mineure ",[109,166,167],{},"est"," le franc. Mais les taux de commission produisent des fractions.",[137,170,171,172,175],{},"Tout calcul de commission génère donc un ",[93,173,174],{},"reste d'arrondi, écrituré explicitement"," sur un compte dédié. Sans cela, la balance dérive d'un franc par opération, et trois mois plus tard personne ne sait d'où vient l'écart.",[137,177,178,179,182],{},"Aucune écriture ne mélange deux devises : une conversion XAF ↔ XOF est ",[93,180,181],{},"deux écritures"," liées par un compte de position de change.",[85,184,186],{"id":185},"le-cycle-de-vie-dune-opération","Le cycle de vie d'une opération",[188,189],"amtm-request-flow",{},[90,191,192],{},"L'étape 3 est la plus importante et la moins visible : sur un réseau instable, c'est elle qui garantit qu'un caissier qui réessaie après une coupure ne crée pas une seconde opération.",[85,194,196],{"id":195},"le-mode-dégradé-est-un-cas-nominal","Le mode dégradé est un cas nominal",[90,198,199],{},"Le réseau tombera. L'architecture le considère comme normal, pas comme une exception :",[134,201,202,209,216],{},[137,203,204,205,208],{},"Le guichet est une ",[93,206,207],{},"PWA"," avec file locale ; les opérations de caisse et de saisie restent possibles hors-ligne.",[137,210,211,212,215],{},"Chaque opération porte un ",[93,213,214],{},"UUID généré côté client",", qui sert de clé d'idempotence. À la reconnexion, le serveur déduplique nativement — pas de résolution de conflit exotique, pas de CRDT.",[137,217,218],{},"Restent interdites hors-ligne : toute opération exigeant une validation partenaire temps réel, et tout dépassement du plafond de float local.",[85,220,222],{"id":221},"ce-que-nous-nutilisons-pas","Ce que nous n'utilisons pas",[224,225,226,239],"table",{},[227,228,229],"thead",{},[230,231,232,236],"tr",{},[233,234,235],"th",{},"Écarté",[233,237,238],{},"Pourquoi",[240,241,242,251,259,270],"tbody",{},[230,243,244,248],{},[245,246,247],"td",{},"Kafka / bus de messages",[245,249,250],{},"Surdimensionné ; une brique d'infrastructure de plus à exploiter",[230,252,253,256],{},[245,254,255],{},"Micro-services",[245,257,258],{},"Coût d'exploitation sans contrepartie à cette volumétrie",[230,260,261,264],{},[245,262,263],{},"Elasticsearch",[245,265,266,269],{},[104,267,268],{},"pg_trgm"," suffit pour le filtrage flou des listes de sanctions",[230,271,272,275],{},[245,273,274],{},"Kubernetes au démarrage",[245,276,277],{},"Docker sur un serveur ; on migre le jour où la charge le justifie",{"title":279,"searchDepth":280,"depth":280,"links":281},"",2,[282,283,284,285,286],{"id":87,"depth":280,"text":88},{"id":128,"depth":280,"text":129},{"id":185,"depth":280,"text":186},{"id":195,"depth":280,"text":196},{"id":221,"depth":280,"text":222},"Chaque technologie justifiée par une contrainte de votre métier.","md",{"icon":290},"lucide:cpu",true,{"title":21,"description":287},"RL-jccXd_hfVfcbawGQ1_67vBNnqHs9qVk24CYsbwW0",[295,297],{"title":15,"path":16,"stem":17,"description":296,"children":-1},"Un monolithe modulaire, dimensionné pour être exploité sans équipe ops.",{"title":25,"path":26,"stem":27,"description":298,"children":-1},"Piste d'audit inviolable, séparation des tâches, KYC/AML — le niveau exigé par votre métier.",1787177556028]