Accueil › Notes de version › Release 2026-09-24 — Salle de marché institutionnelle (Lots 0-8)
Menu du document← Accueil
Notes de version
  1. Release 2026-09-24 — Salle de marché institutionnelle (Lots 0-8)
  2. Release 2026-06-02 — Audit liens morts backoffice + rate limit LLM + Aïssa support persona
  3. Release 2026-05-26 — Requêteur IA, cession Kankele 3-parties, anonymisation marketplace + analyse IA enrichie
Notes de version

Release 2026-09-24 — Salle de marché institutionnelle (Lots 0-8)

Status : en production. Programme entièrement livré — 9 lots, PRs #133 à #143, branches feature/claude/lot* squash-mergées sur main.

TL;DR

Le marketplace investisseur privé (wallet, enchères, listings publics) est remplacé par un circuit institutionnel de bout en bout : une institution financière s'onboarde avec un dossier KYB, reçoit des demandes accompagnées d'une analyse nominative datée, y répond avec des conditions structurées comparables, pilote son portefeuille depuis un cockpit à quatre files, et tout cela sous un abonnement STANDARD/PREMIUM visible, pilotable et audité. Le pipeline facture s'arrête à SCORED — plus aucune surface investisseur.

Avant (marketplace investisseur)Après (salle de marché institutionnelle)
SCORED → Offer/MarketListing → LISTED, financé par des investisseurs walletSCORED = état terminal, la demande alimente le circuit banque
Taux et avance calculés côté plateforme (pricing_islamic)Conditions saisies par la banque, jamais calculées (§43/§68)
Pas de KYB institution, pas de gate d'accèsDossier KYB obligatoire, garde exiger_etablissement_financier câblé
Aucune analyse nominative persistéeAnalyse datée par demande, servie aux destinataires + à l'entreprise (A3)
Aucune comparaison d'offresPosition concurrentielle (A1) + benchmarks k-anonymes (A2), PREMIUM
Abonnement institution sans gate serveurGate serveur unifié (premium.py), tier visible et audité
Guide utilisateur en markdown dépôt seulementGuide /guide in-app, captures Playwright reproductibles
Assistant IA ignore le financementPersona FINANCEUR, panneaux insights gatés serveur

Invariants qui traversent tout le programme

  • §13 — aucun classement ni recommandation d'offres.
  • §43/§68 — aucun taux, commission ou marge fixé ou suggéré par Tauraco ; la banque saisit, la plateforme ne calcule ni ne classe.
  • §33 — aucun scoring opaque : chaque nombre servi est nommé, daté, avec sa formule.
  • A1/A2/A3 (docs/legal/2026-09-14-amendement-invariants-salle-de-marche.md) — les trois seules extensions autorisées : position concurrentielle par classe nommée (jamais montants/identités des concurrents), fourchettes de marché k-anonymes (servies seulement si ≥ k offres de ≥ m institutions distinctes), analyse nominative réservée aux destinataires nommés + à l'entreprise émettrice.

Lot 0 + Lot 1 — Décisions juridiques & dépose du marketplace (PR #133, #134)

PR A (docs) : amendement de la spec + deux documents de décision docs/legal/2026-09-14-*.md, posant les trois autorisations A1/A2/A3 et actant la fermeture des surfaces de consultation investisseur. PR B (code) : dépose complète du marketplace investisseur privé — routes /v2/marketplace/*, /v3/portal/investor/*, /v3/auctions/*, vues SPA, pages statiques, registre de tokens — pipeline arrêté à SCORED, pricing_islamic supprimé côté plateforme. Aucune table ni colonne supprimée (zéro migration) ; redirections 301 conservées. Voir docs/financing/surfaces-gelees.md pour l'inventaire de ce qui reste volontairement en place.

Lot 2 — Onboarding institution avec dossier KYB (PR #135, migration 084)

Une institution invitée dépose un dossier KYB (agrément, statuts, RCCM, dirigeants), la compliance le valide, et cette validation promeut CollateralTiersQualification.statut_validation de non_validee à validee — le chaînon manquant du dépôt, jamais câblé jusque-là. Le garde exiger_etablissement_financier (déjà écrit, jamais branché) devient la condition d'accès aux routes banque. Les 17 banques démo sont backfillées validee par migration + seed pour ne rien casser.

Lot 3 — Analyse nominative + abonnement institution (PR #136, migration 085)

Chaque demande soumise porte désormais une analyse nominative, datée, calculée entre le snapshot et le flush de statut (jamais dans le snapshot, dont le hash est figé), à partir du moteur à règles existant (score_invoice) alimenté par l'historique réel du débiteur et du cédant. Servie aux banques destinataires (PREMIUM) et à l'entreprise (A3). Un module premium.py unifie les trois prédicats premium divergents et porte le premier gate institution. Décision produit (sega, 2026-09-20) : le contrôle IBAN/RIB est neutralisé dans l'analyse — les IBAN ne sont pas vérifiables ni connectés en Afrique ; aucune analyse ne porte plus INVALID_BANK_ACCOUNT ni INVALID_IBAN, ni la pénalité de -10 qui les accompagnait (app/domains/financing/analyse.py).

Lot 4 — Conditions structurées, position, benchmarks (PR #138, migration 086)

Les offres bancaires portent des conditions structurées comparables (taux, type, quotité, frais — saisies par la banque, jamais calculées), avec trigger d'immuabilité étendu aux nouvelles colonnes. Le gate test_aucun_calcul_de_taux_ni_de_classement est resserré puis compensé par trois gates plus forts (provenance depuis OffreIn, aucun défaut suggéré, trigger à jour), citant l'amendement A1/A2. Position concurrentielle (A1, domaine pur écrit au chantier « engagement » mais jamais branché) gagne enfin sa route. Benchmarks de marché k-anonymes (A2) livrés en nouveau module d'agrégats, cloisonnés par classe d'environnement (démo vs réel).

Lot 5 — Cockpit banque (PR #139, hotfix #140)

Porte d'entrée unique pour la banque : compteurs et têtes de file des quatre décisions en attente (dossiers, tirages, sorties de stock, exceptions), inbox triable/paginée avec âge des dossiers, échéancier banque miroir de celui de l'entreprise. Aucune migration — le code manquait, pas les données. PREMIUM côté SPA uniquement : la consolidation est le confort premium, chaque file reste accessible unitairement en STANDARD. Hotfix #140 : le tri de l'inbox par échéance se fait sur le snapshot réel — correction structurelle, aucun nouveau privilège.

Lot 6 — Backoffice abonnements (PR #141)

Le cœur (prédicat, colonne posée au Lot 3, routes GET/POST) existait depuis les Lots 3-4 ; ce lot le rend visible et pilotable. L'admin plateforme voit et gère le tier de chaque banque (STANDARD/PREMIUM, échéance, historique audité via audit_logs / INSTITUTION_SUBSCRIPTION_CHANGED). La banque voit son propre état d'abonnement dans le cockpit. Décision sega : 2 niveaux uniquement, tranché explicitement contre l'extension naturelle vers ENTERPRISE/TRIAL (le prédicat PREMIUM_TIERS reste inchangé en lecture, aucune nouvelle surface d'écriture). CTA « contactez Tauraco » inchangé — pas de parcours de paiement institution, procédure manuelle.

Lot 7 — Guide in-app + banc de captures (PR #142)

Le guide utilisateur vit désormais dans l'application (/guide), sections par persona filtrées par les droits, contenu enrichi des nouveautés Lots 2-6 (KYB, analyse, position, benchmarks, cockpit, abonnements). Aucun changement backend. Les captures d'écran sont des PNG versionnés dans frontend-app/public/guide/, produits par un banc Playwright dédié (playwright.guide.config.ts, hors CI e2e) sur les comptes démo de la stack locale seedée — jamais à la main. Le markdown docs/guide-utilisateur/ reste la source dépôt ; l'in-app est la surface produit enrichie (duplication assumée et documentée).

Lot 8 — Insights + démo bout-en-bout (PR #143)

L'assistant IA Insights (/v2/ai/insights) gagne le gate d'abonnement serveur qu'il n'a jamais eu (axe tenant pour les pages ERP, axe institution pour les pages banque via est_premium_institution), un persona FINANCEUR, et un champ degraded sur le repli 503. Rédaction d'identités systématique avant tout appel LLM — jamais après. Démo : script seed_salle_de_marche_demo.py (double garde, idempotent) qui comble les manques en base — offres structurées de 4 banques sur le segment SN pour franchir les seuils k=3/m=3 des benchmarks, une demande en mode COMPETITIVE_OFFER à 2 offres (position visible), le 18ᵉ dossier KYB en file, demo-co-sn en tenant PREMIUM. Runbook associé : docs/runbooks/demo-bout-en-bout-sega.md.

Décisions produit de sega qui traversent le programme

  • Fermeture complète du marketplace investisseur, pas de fermeture partielle ni de gel progressif — un seul lot, deux PRs (docs/legal/2026-09-14-fermeture-consultation-investisseur.md).
  • 2 tiers d'abonnement STANDARD/PREMIUM uniquement (Lot 6), contre l'extension naturelle du prédicat existant.
  • IBAN neutralisé dans l'analyse nominative (Lot 3, 2026-09-20) — non vérifiable en Afrique, retiré du scoring plutôt que de produire un faux signal systématique.
  • Mode libre en cas de doute produit sur chaque lot (autorisation permanente sega) — décisions ledgerisées dans les plans docs/superpowers/plans/2026-09-*.md plutôt que reportées.

Pointeurs

  • Spec : docs/superpowers/specs/2026-09-13-salle-de-marche-institutionnelle-design.md
  • Décisions légales : docs/legal/2026-09-14-fermeture-consultation-investisseur.md, docs/legal/2026-09-14-amendement-invariants-salle-de-marche.md
  • Orphelins assumés du Lot 1 : docs/financing/surfaces-gelees.md
  • Runbooks : docs/runbooks/institution-kyb.md, docs/runbooks/demo-bout-en-bout-sega.md, docs/runbooks/guide-captures.md
  • Plans détaillés par lot : docs/superpowers/plans/2026-09-14-lot0-lot1-depose-marketplace.md, 2026-09-19-lot2-kyb-institution.md, 2026-09-20-lot3-analyse-nominative.md, 2026-09-21-lot4-conditions-structurees.md, 2026-09-21-lot5-cockpit.md, 2026-09-23-lot6-abonnements.md, 2026-09-23-lot7-guide-inapp.md, 2026-09-24-lot8-insights-demo.md