{
  "schemaVersion": 1,
  "edition": "2026-10-27",
  "status": "fictional-control-cases",
  "currency": "EUR",
  "cases": [
    {
      "id": "flux-m01",
      "tool": "marge",
      "title": "30 % sur le coût",
      "scenario": "Coût 70 €, majoration de 30 %.",
      "input": {
        "cout": 70,
        "taux": 0.3,
        "convention": "majoration"
      },
      "expected": {
        "prix": 91
      },
      "proof": "70 × 1,30 = 91 €. Le taux est appliqué au coût.",
      "units": "EUR",
      "limit": "Même base de prix et de coût ; aucun coût non saisi ajouté.",
      "toolPath": "/outils/marge-rentabilite/"
    },
    {
      "id": "flux-m02",
      "tool": "marge",
      "title": "30 % sur le prix",
      "scenario": "Coût 70 €, taux de marque cible de 30 %.",
      "input": {
        "cout": 70,
        "taux": 0.3,
        "convention": "marque"
      },
      "expected": {
        "prix": 100
      },
      "proof": "70 ÷ (1 − 0,30) = 100 €. Ce résultat diffère de la majoration sur le coût.",
      "units": "EUR",
      "limit": "Un taux de marque ne se substitue pas à une majoration.",
      "toolPath": "/outils/marge-rentabilite/"
    },
    {
      "id": "flux-m03",
      "tool": "marge",
      "title": "Une remise change la contribution",
      "scenario": "Coût 70 €, prix 100 €, coût variable supplémentaire 5 €, remise 10 %, contribution totale visée 300 €.",
      "input": {
        "cout": 70,
        "prix": 100,
        "coutVariable": 5,
        "remise": 0.1,
        "cible": 300,
        "base": "contribution"
      },
      "expected": {
        "avant": 12,
        "apres": 20
      },
      "proof": "Avant : 300 ÷ (100 − 70 − 5) = 12 ventes. Après : 300 ÷ (90 − 70 − 5) = 20 ventes.",
      "units": "nombre de ventes",
      "limit": "Le coût variable supplémentaire ne doit pas être déjà inclus dans le coût unitaire.",
      "toolPath": "/outils/marge-rentabilite/"
    },
    {
      "id": "flux-m04",
      "tool": "marge",
      "title": "Le résultat sur la période",
      "scenario": "CA 12 000 €, coûts variables 7 200 €, coûts fixes 3 600 €, période 30 jours.",
      "input": {
        "ca": 12000,
        "cv": 7200,
        "cf": 3600,
        "jours": 30
      },
      "expected": {
        "seuil": 9000,
        "resultat": 1200,
        "pointMortJours": 22.5
      },
      "proof": "Taux de contribution : (12 000 − 7 200) ÷ 12 000 = 40 %. Seuil : 3 600 ÷ 0,40 = 9 000 €.",
      "units": "EUR et jours",
      "limit": "Point mort théorique supposant une activité régulière ; pas un calendrier réel d’encaissement.",
      "toolPath": "/outils/marge-rentabilite/"
    },
    {
      "id": "flux-m05",
      "tool": "marge",
      "title": "Sans CA, pas de seuil calculable",
      "scenario": "CA 0 €, coûts variables 0 €, coûts fixes 500 €, période 30 jours.",
      "input": {
        "ca": 0,
        "cv": 0,
        "cf": 500,
        "jours": 30
      },
      "expected": {
        "seuil": null,
        "resultat": -500,
        "pointMortJours": null
      },
      "proof": "0 − 0 − 500 = −500 €. Le taux de contribution et le seuil ne se déduisent pas d’un CA nul.",
      "units": "EUR ; null = non calculable",
      "limit": "Un résultat indéfini n’est pas un zéro.",
      "toolPath": "/outils/marge-rentabilite/"
    },
    {
      "id": "flux-t01",
      "tool": "tresorerie",
      "title": "Reporter sans compter deux fois",
      "scenario": "Départ 8 000 €. Les mouvements mensuels donnent 5 000 / 2 000 / 5 000 €. Un encaissement de 4 000 € passe de décembre à janvier.",
      "input": {
        "initialBalanceCents": 800000,
        "safetyThresholdCents": 300000,
        "monthlyFlows": [
          {
            "month": "2026-11",
            "receipts": [
              {
                "id": "a",
                "amountCents": 1400000
              }
            ],
            "disbursements": [
              {
                "id": "x",
                "amountCents": 1700000
              }
            ]
          },
          {
            "month": "2026-12",
            "receipts": [
              {
                "id": "b",
                "amountCents": 1400000
              },
              {
                "id": "tracked",
                "amountCents": 400000
              }
            ],
            "disbursements": [
              {
                "id": "y",
                "amountCents": 2100000
              }
            ]
          },
          {
            "month": "2027-01",
            "receipts": [
              {
                "id": "c",
                "amountCents": 2200000
              }
            ],
            "disbursements": [
              {
                "id": "z",
                "amountCents": 1900000
              }
            ]
          }
        ],
        "delayReceipt": {
          "receiptId": "tracked",
          "toMonth": "2027-01"
        }
      },
      "expected": {
        "baseMinimum": 200000,
        "reportMinimum": -200000,
        "baseFinal": 500000,
        "reportFinal": 500000
      },
      "proof": "Décembre perd 4 000 € et janvier les récupère : minimum −2 000 €, clôture finale inchangée à 5 000 €.",
      "units": "centimes EUR dans JSON ; affichage explicatif en EUR",
      "limit": "Clôtures mensuelles, pas creux intra-mensuel. Le report est une hypothèse de scénario, pas un retard constaté.",
      "toolPath": "/modeles/plan-tresorerie/"
    }
  ]
}
