{
  "deliverable": "Chat OTOIA embarqué par portail",
  "sprint": "Sprint 6 · ERPNext Backend",
  "roadmap_ref": "04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md · Sprint 6 l.63 « ERPNext Backend : Chat OTOIA embedded dans chaque portail »",
  "generated_from": "rbac_50_roles.json (rôles + permissions_cibles par portail) + frontend/portails/portails_spec.json (portails) + frontend/portails/out/workspace.json (Has Role réels) + seo/seo_spec.json (langues trilingues)",
  "carrier": {
    "doctype": "Custom Block",
    "workspace_content_block_type": "custom_block",
    "note": "Chaque Custom Block est inséré dans le `content` (editor.js) du Workspace de son portail via un bloc `custom_block` référençant `block_name`. La clé exacte du payload editor.js est a_confirmer selon le patch de version v15 — étape VPS (agent Frontend)."
  },
  "persona": {
    "nom": "Amélie",
    "voix": "multilingual_v2"
  },
  "langues": [
    "fr",
    "en",
    "es"
  ],
  "lang_defaut": "fr",
  "capabilities": [
    "aec.py",
    "knowledge.py",
    "prompt_engine.py",
    "chat.py"
  ],
  "endpoint_statut": "a_confirmer",
  "counts": {
    "portails": 5,
    "custom_blocks": 5,
    "mounts": 5,
    "roles_couverts": 44,
    "knowledge_doctypes_uniques": 35
  },
  "portails": [
    {
      "portail": "ventes",
      "workspace": "OTO Ventes",
      "custom_block": "OTOIA Chat · OTO Ventes",
      "nb_roles": 12,
      "nb_knowledge_doctypes": 11
    },
    {
      "portail": "construction",
      "workspace": "OTO Construction",
      "custom_block": "OTOIA Chat · OTO Construction",
      "nb_roles": 10,
      "nb_knowledge_doctypes": 9
    },
    {
      "portail": "achat",
      "workspace": "OTO Achat",
      "custom_block": "OTOIA Chat · OTO Achat",
      "nb_roles": 5,
      "nb_knowledge_doctypes": 8
    },
    {
      "portail": "compta",
      "workspace": "OTO Compta",
      "custom_block": "OTOIA Chat · OTO Compta",
      "nb_roles": 8,
      "nb_knowledge_doctypes": 11
    },
    {
      "portail": "direction",
      "workspace": "OTO Direction",
      "custom_block": "OTOIA Chat · OTO Direction",
      "nb_roles": 9,
      "nb_knowledge_doctypes": 14
    }
  ],
  "brand": {
    "fond": {
      "valeur": "#0a0a12",
      "source": "CLAUDE.md #4"
    },
    "accent": {
      "valeur": "#f0b429",
      "source": "CLAUDE.md #4"
    },
    "polices": [
      {
        "valeur": "Fraunces",
        "source": "CLAUDE.md #4"
      },
      {
        "valeur": "Cormorant Garamond",
        "source": "CLAUDE.md #4"
      }
    ]
  },
  "handoff_vps": [
    "Créer/confirmer le module propriétaire OTO côté app puis importer les fixtures `Custom Block` (bench).",
    "Insérer dans le `content` de chaque Workspace (frontend/portails/out/workspace.json) un bloc `custom_block` référençant `block_name` (payload editor.js a_confirmer selon version).",
    "Renseigner l'endpoint OTOIA (desk/bim-cloud) dans la config runtime + charger le web-component OTOIA via le thème desk (agent Frontend · #8).",
    "Appliquer les tokens de marque dark+doré (#4) au montage via le thème."
  ]
}
