HORIZON · Règles métier
HHORIZON 04 · Documentation

Règles métier et moteur de projection

Registre des règles de gestion

IdRègle
RG-01Toute création ou modification de simulation est atomique : validation complète des champs puis écriture en transaction unique ; tout échec annule l'ensemble.
RG-02Un client possède au plus une simulation active de référence par type de simulateur ; l'activation d'une simulation archive automatiquement la précédente (trace d'audit).
RG-03Chaque exécution du moteur persiste les séries mensuelles par scénario, la version des hypothèses, l'horodatage et l'auteur. Une projection historisée est rejouable à l'identique (CA-12).
RG-04La somme des poids d'allocation vaut exactement 100,00 % (contrôle interface + contrainte en base) ; poids entre 0 et 100, deux décimales.
RG-05Capital estimé = valeur de la série du scénario sélectionné au mois courant de la simulation active.
RG-06Total versé = somme algébrique des échéances au statut Validé (les arbitrages comptent pour zéro).
RG-07Rendement annualisé = TRI annualisé des flux validés (capital estimé en valeur terminale), résolu par itération (Newton, repli bissection), arrondi à 0,1 point.
RG-08Plus-value latente = capital estimé moins total versé ; pourcentage associé = plus-value / total versé (si total versé positif).
RG-09Le libellé du badge profil provient du référentiel de profils de l'organisation (prudent, défensif, équilibré, offensif, dynamique par défaut) ; la note de risque (1 à 10) est saisie indépendamment.
RG-10Une échéance d'arbitrage ne porte pas de montant (null) mais référence une allocation cible ; affichage : tiret + « € ».
RG-11Machine à états des échéances (ci-dessous) ; toute transition est journalisée ; aucune autre transition n'est permise.
RG-12Les occurrences mensuelles sont générées sur 12 mois glissants par tâche quotidienne (une par mois au jour de prélèvement, ajusté au 28) ; la modification du montant ne réécrit que les occurrences futures Planifiées.
RG-13Progression vers l'objectif d'une échéance = min(100, capital projeté à la date de l'échéance selon le scénario par défaut / objectif de capital × 100), arrondi à l'entier ; sans objectif, tiret. À valider (AMB-01)
RG-14Statut KYC : « à renouveler » à partir de M-2 avant l'échéance de validité, « expiré » au-delà ; l'export PDF est bloqué si expiré (« Export indisponible : KYC expiré »), la simulation reste consultable.
RG-15Journal d'audit en ajout seul : auteur, horodatage UTC, organisation, entité, action, contenu avant/après (JSON) ; alimenté par déclencheurs base.
RG-16Tout rapport PDF et tout écran de projection portent la mention « Simulation non contractuelle : valeurs projetées à titre indicatif, hors fiscalité ».
RG-17Formats des montants : moins de 100 000 € en unités (« 5 000 € ») ; patrimoine et échelles de graphique en k€ avec une décimale si nécessaire (« 320 k€ », « 12,5 »).

Hypothèses de scénarios (paramétrables, versionnées)

ScénarioRendement annuel brutCommentaire
Prudent1,8 %Dominante fonds en euros et obligations courtes.
Équilibré3,8 %Réglé pour produire un rendement net d'environ 3,1 % avec 0,60 % de frais, en cohérence avec la maquette.
Dynamique6,0 %Dominante actions ; volatilité supérieure, mentionnée dans le rapport.

À valider (R-01) Valeurs administrables par organisation et versionnées : chaque projection référence la version utilisée (RG-03).

Formules du moteur

Pas mensuel sur H années (M = 12 × H), euros au centime (arrondi bancaire), à partir de : versement initial V0, versement mensuel Vm, versements exceptionnels datés, frais annuels f, rendement brut r du scénario.

Taux net annuel   : r_net = (1 + r) * (1 - f) - 1
Taux net mensuel  : i = (1 + r_net)^(1/12) - 1
Initialisation    : K(0) = V0 ; C(0) = V0
Pour chaque mois m de 1 a M :
  flux(m) = Vm + somme des versements exceptionnels du mois m
  K(m) = K(m-1) * (1 + i) + flux(m)      (capital projete)
  C(m) = C(m-1) + flux(m)                (cumul des versements, serie pointillee)
Arbitrage : flux nul ; changement d'allocation memorise (sans effet sur r en v1).
Sorties : series {mois, K, C} par scenario ; points annuels affiches.

La forme multiplicative (1 + r)(1 - f) reflète des frais prélevés sur encours ; l'alternative soustractive (r - f) est documentée et activable par paramètre si le métier la préfère. Les trois scénarios sont calculés à chaque exécution pour figer l'échelle du graphique et alimenter le rapport PDF. Cette implémentation est reprise à l'identique dans assets/donnees-demo.js (fonction projeter) et exécutée par le prototype.

Machine à états des échéances (RG-11)

            creation (versement programme / exceptionnel / arbitrage)
                               |
                               v
        +-------------------- PLANIFIE ----------------------+
        | annulation (conseiller)        echeance J0 / manuel |
        v                                                     v
     ANNULE                                               EN COURS
                                                              |
                        rejet (incident de paiement) <--------+--------> validation
                               |                                            |
                               v                                            v
                            REJETE ------ replanification ------>        VALIDE
                                                                        (final)

Droits : validation et annulation par le conseiller affecté ou l'administrateur ; rejet automatique (intégration paiement future) ou administrateur ; replanification par le conseiller. Validé et Annulé sont terminaux.

Cas de calcul de référence (contrat minimal du moteur)

CasParamètresRésultat attendu (exact)
B-01 : capital inerteV0 = 1 000 € ; Vm = 0 ; r = 0 % ; f = 0 % ; H = 10 ans.K(m) = 1 000,00 € pour tout m.
B-02 : versements pursV0 = 0 ; Vm = 100 € ; r = 0 % ; f = 0 % ; H = 1 an.K(12) = C(12) = 1 200,00 €.
B-03 : intérêts pursV0 = 1 000 € ; Vm = 0 ; r = 12 % ; f = 0 % ; H = 1 an.K(12) = 1 120,00 € (composition mensuelle équivalente).
B-04 : effet des fraisB-03 avec f tel que (1+r)(1-f) = 1.K(12) = 1 000,00 € : les frais annulent exactement le rendement.
B-05 : flux exceptionnelB-02 + versement de 500 € au mois 6.K(12) = C(12) = 1 700,00 €.
B-06 : arbitrage neutreB-03 + arbitrage au mois 6.Séries strictement identiques à B-03 (RG-10).

États d'interface et messages

SituationComportement spécifié
ChargementSquelettes sur les cartes (KPI, graphique, tableau) ; jamais d'écran blanc ; délai perçu masqué jusqu'à 400 ms.
VideIllustration légère + phrase d'action (« Aucune simulation active : créez une simulation ») + bouton primaire.
Erreur réseauBandeau non bloquant « Connexion interrompue : nouvelle tentative... » avec reprise automatique (3 essais, délai exponentiel).
Erreur serveurCarte en état d'erreur avec bouton « Réessayer » ; request_id joignable au support.
Confirmation destructiveModale explicite pour annulation d'échéance, archivage de simulation ou de client (« Cette action est journalisée »).
SuccèsToast discret 4 secondes (« Simulation créée », « PDF exporté »), jamais bloquant.

Ces six états sont démontrables dans le prototype (panneau « États de démo ») et documentés composant par composant dans le design system.