{
  "spec_version": "1.0.0",
  "deliverable": "Scénarios démo · run-sheet de pitch",
  "roadmap_ref": "04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md · Sprint 7 l.68 « CRM + Faisabilité : Scénarios démo (P07 pitch banquier · P05 client ready) »",
  "self_module": "demo/scenarios",
  "audiences": ["banquier", "client"],
  "projets": {
    "P05": "Las Colinas Najayo Arriba",
    "P07": "Aqua Terra Las Terrenas"
  },
  "note_anti_invention": "Aucune valeur chiffrée n'est écrite dans ce spec. Chaque `evidence` est un POINTEUR (RFC 6901) vers un hand-off `out/` d'un module déjà livré et gated par le CI ; le générateur résout la valeur à la construction. Une valeur non résolue devient un placeholder `{{module:file#pointer}}` — jamais un chiffre fabriqué (CLAUDE.md #6).",
  "scenarios": [
    {
      "id": "S-P07-BANQUIER",
      "projet": "P07",
      "audience": "banquier",
      "titre": "P07 Aqua Terra — Pitch banquier (bancabilité & gouvernance)",
      "objectif": "Démontrer qu'un dossier de vente OTO est bancable : pipeline structuré, conformité fiscale e-CF DGII, incitation CONFOTUR, gouvernance RBAC et gate qualité 4Big.",
      "beats": [
        {
          "id": "b1-pipeline",
          "titre": "Un pipeline de vente verrouillé de bout en bout",
          "role_narratif": "Ouvrir sur la traçabilité : la vente n'est pas un tableur, c'est un workflow ERPNext soumis (docstatus) piloté par rôle.",
          "duree_min": 2,
          "evidence": [
            {"module": "crm/workflow_vente", "file": "out/workflow.json", "pointer": "/0/workflow_name", "label": "Nom du pipeline"},
            {"module": "crm/workflow_vente", "file": "out/workflow.json", "pointer": "/0/document_type", "label": "DocType piloté"}
          ]
        },
        {
          "id": "b2-ecf",
          "titre": "Facturation fiscale conforme DGII (e-CF · Compupar)",
          "role_narratif": "Rassurer sur le risque fiscal : chaque encaissement est un e-CF certifié, pas une facture maison.",
          "duree_min": 2,
          "evidence": [
            {"module": "fiscal/ecf_dgii", "file": "out/MANIFEST.json", "pointer": "/provider", "label": "Fournisseur e-CF"},
            {"module": "fiscal/ecf_dgii", "file": "out/MANIFEST.json", "pointer": "/counts/tipos_en_scope", "label": "Types e-CF en périmètre"}
          ]
        },
        {
          "id": "b3-confotur",
          "titre": "Incitation CONFOTUR dé-risquée et outillée",
          "role_narratif": "Montrer l'avantage fiscal touristique comme un actif documenté : DocType soumis, dépôt outillé.",
          "duree_min": 2,
          "evidence": [
            {"module": "legal/confotur", "file": "out/MANIFEST.json", "pointer": "/doctype_name", "label": "DocType CONFOTUR"},
            {"module": "legal/confotur", "file": "out/MANIFEST.json", "pointer": "/is_submittable", "label": "Soumissible (verrou légal)"},
            {"module": "legal/confotur", "file": "out/MANIFEST.json", "pointer": "/counts/depot_events", "label": "Étapes de dépôt outillées"}
          ]
        },
        {
          "id": "b4-rbac",
          "titre": "Séparation des pouvoirs (RBAC 50 rôles)",
          "role_narratif": "Répondre à la question d'audit du banquier : qui peut faire quoi ? Permissions dérivées, pas ad hoc.",
          "duree_min": 2,
          "evidence": [
            {"module": "rbac/apply_plan", "file": "out/MANIFEST.json", "pointer": "/counts/roles", "label": "Rôles RBAC"},
            {"module": "rbac/apply_plan", "file": "out/MANIFEST.json", "pointer": "/counts/custom_docperm", "label": "Permissions DocType (Custom DocPerm)"}
          ]
        },
        {
          "id": "b5-qualite",
          "titre": "Un gate qualité 4Big, pas une promesse",
          "role_narratif": "Clore la confiance : la plateforme s'auto-note et bloque sous 95/100 sur 100 % des livrables.",
          "duree_min": 2,
          "evidence": [
            {"module": "qa/audit_4big", "file": "out/quality_report.json", "pointer": "/pass_score", "label": "Seuil bloquant 4Big"},
            {"module": "qa/audit_4big", "file": "out/quality_report.json", "pointer": "/coverage/ci_modules_count", "label": "Modules sous gate qualité"}
          ]
        },
        {
          "id": "b6-dossier",
          "titre": "Le dossier de vente, pièce bancable finale",
          "role_narratif": "Refermer sur l'objet concret que le banquier instruira : un DocType riche et soumis.",
          "duree_min": 2,
          "evidence": [
            {"module": "crm/dossier_vente", "file": "out/MANIFEST.json", "pointer": "/counts/fields", "label": "Champs du dossier de vente"},
            {"module": "crm/dossier_vente", "file": "out/MANIFEST.json", "pointer": "/counts/pipeline_states", "label": "États de pipeline couverts"}
          ]
        }
      ]
    },
    {
      "id": "S-P05-CLIENT",
      "projet": "P05",
      "audience": "client",
      "titre": "P05 Las Colinas Najayo Arriba — Parcours client (réservation prête)",
      "objectif": "Faire vivre le parcours d'un acheteur : découverte du portail, assistance OTOIA, pipeline lisible, dossier transparent, et comment le client nous a trouvés (SEO trilingue).",
      "beats": [
        {
          "id": "b1-portail",
          "titre": "« Choisir mon unité » — 5 portails luxury",
          "role_narratif": "Poser l'expérience d'entrée : un portail par rôle, cohérent et couvert.",
          "duree_min": 2,
          "evidence": [
            {"module": "frontend/portails", "file": "out/MANIFEST.json", "pointer": "/counts/workspaces", "label": "Portails (workspaces)"},
            {"module": "frontend/portails", "file": "out/MANIFEST.json", "pointer": "/counts/roles_couverts", "label": "Rôles couverts par les portails"}
          ]
        },
        {
          "id": "b2-otoia",
          "titre": "OTOIA répond dans le portail",
          "role_narratif": "Montrer l'assistance embarquée : le client n'est jamais seul face à l'écran.",
          "duree_min": 2,
          "evidence": [
            {"module": "frontend/chat_otoia", "file": "out/MANIFEST.json", "pointer": "/deliverable", "label": "Assistant embarqué"}
          ]
        },
        {
          "id": "b3-parcours",
          "titre": "Du premier contact à la réservation",
          "role_narratif": "Dérouler le pipeline côté client : Lead → … → Réservation confirmée, lisible et rassurant.",
          "duree_min": 2,
          "evidence": [
            {"module": "crm/workflow_vente", "file": "out/workflow.json", "pointer": "/0/states/0/state", "label": "Première étape"},
            {"module": "crm/workflow_vente", "file": "out/workflow.json", "pointer": "/0/states/3/state", "label": "Étape réservation"}
          ]
        },
        {
          "id": "b4-dossier",
          "titre": "Un dossier de vente transparent",
          "role_narratif": "Donner confiance : tout est consigné dans un dossier structuré que le client peut suivre.",
          "duree_min": 2,
          "evidence": [
            {"module": "crm/dossier_vente", "file": "out/MANIFEST.json", "pointer": "/counts/fields", "label": "Champs du dossier de vente"}
          ]
        },
        {
          "id": "b5-commissions",
          "titre": "Un conseiller rémunéré à la transparence",
          "role_narratif": "Aligner l'intérêt du conseiller et du client : barème de commissions traçable par événement.",
          "duree_min": 2,
          "evidence": [
            {"module": "crm/commissions", "file": "out/MANIFEST.json", "pointer": "/bareme_name", "label": "Barème de commissions"},
            {"module": "crm/commissions", "file": "out/MANIFEST.json", "pointer": "/counts/evenements", "label": "Événements déclencheurs"}
          ]
        },
        {
          "id": "b6-seo",
          "titre": "Comment le client nous a trouvés (SEO trilingue)",
          "role_narratif": "Refermer la boucle acquisition : indexation FR/EN/ES, le parcours commence bien avant le portail.",
          "duree_min": 2,
          "evidence": [
            {"module": "seo", "file": "out/MANIFEST.json", "pointer": "/counts/keywords_total", "label": "Mots-clés indexés"},
            {"module": "seo", "file": "out/MANIFEST.json", "pointer": "/langs", "label": "Langues"}
          ]
        }
      ]
    }
  ]
}
