[DTP-Worker] Sprint 6 · Générateur Chat OTOIA embarqué par portail (Custom Block natif) (ERPNext Backend · roadmap L63)
CI / Contraintes NON-NÉGOCIABLES (CLAUDE.md) (push) Has been cancelled
CI / Validation JSON (schémas Faisabilité) (push) Has been cancelled
CI / Qualité documentaire (liens + 4Big) (push) Has been cancelled
CI / Publiciste · parser + schéma + generator (unittest) (push) Has been cancelled
CI / RBAC · 50 rôles + schéma (unittest) (push) Has been cancelled
CI / Faisabilité · générateur 4 volets + round-trip (unittest) (push) Has been cancelled
CI / RBAC · fixtures ERPNext (Role + Custom DocPerm) (push) Has been cancelled
CI / RBAC · plan User Permission (row-level) (push) Has been cancelled
CI / RBAC · Role Profile (bundles par portail) (push) Has been cancelled
CI / RBAC · run-book d'application unifié (agrégat 3 volets) (push) Has been cancelled
CI / Faisabilité · dossier bancable trilingue FR/EN/ES (push) Has been cancelled
CI / CRM · workflow vente ERPNext (lead → CONFOTUR) (push) Has been cancelled
CI / CRM · DocType porteur OTO Dossier Vente (push) Has been cancelled
CI / CRM · barème commissions vendeurs (push) Has been cancelled
CI / Fiscal · e-CF DGII (Compupar) (push) Has been cancelled
CI / Frontend · Workspaces 5 portails rôle (push) Has been cancelled
CI / Legal · DocType CONFOTUR Application (push) Has been cancelled
CI / QA · Audit 5D conformité (push) Has been cancelled
CI / SEO · mots-clés trilingues + schema.org + hreflang (push) Has been cancelled
CI / Chat OTOIA · montage par portail (Custom Block) (push) Has been cancelled
CI / E2E baseline Playwright (manuel) (push) Has been cancelled
CI / Gate qualité (agrégat) (push) Has been cancelled
CI / Contraintes NON-NÉGOCIABLES (CLAUDE.md) (push) Has been cancelled
CI / Validation JSON (schémas Faisabilité) (push) Has been cancelled
CI / Qualité documentaire (liens + 4Big) (push) Has been cancelled
CI / Publiciste · parser + schéma + generator (unittest) (push) Has been cancelled
CI / RBAC · 50 rôles + schéma (unittest) (push) Has been cancelled
CI / Faisabilité · générateur 4 volets + round-trip (unittest) (push) Has been cancelled
CI / RBAC · fixtures ERPNext (Role + Custom DocPerm) (push) Has been cancelled
CI / RBAC · plan User Permission (row-level) (push) Has been cancelled
CI / RBAC · Role Profile (bundles par portail) (push) Has been cancelled
CI / RBAC · run-book d'application unifié (agrégat 3 volets) (push) Has been cancelled
CI / Faisabilité · dossier bancable trilingue FR/EN/ES (push) Has been cancelled
CI / CRM · workflow vente ERPNext (lead → CONFOTUR) (push) Has been cancelled
CI / CRM · DocType porteur OTO Dossier Vente (push) Has been cancelled
CI / CRM · barème commissions vendeurs (push) Has been cancelled
CI / Fiscal · e-CF DGII (Compupar) (push) Has been cancelled
CI / Frontend · Workspaces 5 portails rôle (push) Has been cancelled
CI / Legal · DocType CONFOTUR Application (push) Has been cancelled
CI / QA · Audit 5D conformité (push) Has been cancelled
CI / SEO · mots-clés trilingues + schema.org + hreflang (push) Has been cancelled
CI / Chat OTOIA · montage par portail (Custom Block) (push) Has been cancelled
CI / E2E baseline Playwright (manuel) (push) Has been cancelled
CI / Gate qualité (agrégat) (push) Has been cancelled
Carrier natif ERPNext v15 (Custom Block) + config runtime par portail. Ancrage RBAC : roles_allowed/knowledge_scope = surface exacte du portail, synchronisés avec les Has Role des Workspaces. Endpoint OTOIA null (a_confirmer). Persona Amélie + capabilities + langues FR/EN/ES sourcés (anti-invention #6). 14 invariants · 31 tests · régression 408 tests verts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,98 @@
|
||||
{
|
||||
"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."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,259 @@
|
||||
[
|
||||
{
|
||||
"portail": "ventes",
|
||||
"workspace": "OTO Ventes",
|
||||
"custom_block": "OTOIA Chat · OTO Ventes",
|
||||
"html_id": "otoia-chat-ventes",
|
||||
"persona": {
|
||||
"nom": "Amélie",
|
||||
"voix": "multilingual_v2"
|
||||
},
|
||||
"langues": [
|
||||
"fr",
|
||||
"en",
|
||||
"es"
|
||||
],
|
||||
"lang_defaut": "fr",
|
||||
"ui_label": {
|
||||
"fr": "Assistant OTOIA",
|
||||
"en": "OTOIA Assistant",
|
||||
"es": "Asistente OTOIA"
|
||||
},
|
||||
"roles_allowed": [
|
||||
"OTO Marketing Directeur",
|
||||
"OTO Marketing Publiciste",
|
||||
"OTO Marketing SEO",
|
||||
"OTO Marketing Social",
|
||||
"OTO Ventes Après-Vente",
|
||||
"OTO Ventes CONFOTUR",
|
||||
"OTO Ventes Chef Équipe",
|
||||
"OTO Ventes Conseiller",
|
||||
"OTO Ventes Contrats",
|
||||
"OTO Ventes Courtier Externe",
|
||||
"OTO Ventes Directeur",
|
||||
"OTO Ventes Réservations"
|
||||
],
|
||||
"knowledge_scope": [
|
||||
"CONFOTUR Application",
|
||||
"Customer",
|
||||
"Issue",
|
||||
"Lead",
|
||||
"Opportunity",
|
||||
"Payment Entry",
|
||||
"Publiciste Log",
|
||||
"Quotation",
|
||||
"Sales Invoice",
|
||||
"Sales Order",
|
||||
"Web Page"
|
||||
],
|
||||
"capabilities": [
|
||||
"aec.py",
|
||||
"knowledge.py",
|
||||
"prompt_engine.py",
|
||||
"chat.py"
|
||||
],
|
||||
"endpoint": null
|
||||
},
|
||||
{
|
||||
"portail": "construction",
|
||||
"workspace": "OTO Construction",
|
||||
"custom_block": "OTOIA Chat · OTO Construction",
|
||||
"html_id": "otoia-chat-construction",
|
||||
"persona": {
|
||||
"nom": "Amélie",
|
||||
"voix": "multilingual_v2"
|
||||
},
|
||||
"langues": [
|
||||
"fr",
|
||||
"en",
|
||||
"es"
|
||||
],
|
||||
"lang_defaut": "fr",
|
||||
"ui_label": {
|
||||
"fr": "Assistant OTOIA",
|
||||
"en": "OTOIA Assistant",
|
||||
"es": "Asistente OTOIA"
|
||||
},
|
||||
"roles_allowed": [
|
||||
"OTO Construction Architecte",
|
||||
"OTO Construction BIM",
|
||||
"OTO Construction Chef Projet",
|
||||
"OTO Construction Directeur",
|
||||
"OTO Construction Ingénieur",
|
||||
"OTO Construction QAQC",
|
||||
"OTO Construction Sous-traitants",
|
||||
"OTO Faisabilité IFC Speckle",
|
||||
"OTO Faisabilité Rendu 3D",
|
||||
"OTO Faisabilité Économiste"
|
||||
],
|
||||
"knowledge_scope": [
|
||||
"Faisabilité",
|
||||
"File",
|
||||
"Item",
|
||||
"Material Request",
|
||||
"Project",
|
||||
"Purchase Order",
|
||||
"Quality Inspection",
|
||||
"Task",
|
||||
"Timesheet"
|
||||
],
|
||||
"capabilities": [
|
||||
"aec.py",
|
||||
"knowledge.py",
|
||||
"prompt_engine.py",
|
||||
"chat.py"
|
||||
],
|
||||
"endpoint": null
|
||||
},
|
||||
{
|
||||
"portail": "achat",
|
||||
"workspace": "OTO Achat",
|
||||
"custom_block": "OTOIA Chat · OTO Achat",
|
||||
"html_id": "otoia-chat-achat",
|
||||
"persona": {
|
||||
"nom": "Amélie",
|
||||
"voix": "multilingual_v2"
|
||||
},
|
||||
"langues": [
|
||||
"fr",
|
||||
"en",
|
||||
"es"
|
||||
],
|
||||
"lang_defaut": "fr",
|
||||
"ui_label": {
|
||||
"fr": "Assistant OTOIA",
|
||||
"en": "OTOIA Assistant",
|
||||
"es": "Asistente OTOIA"
|
||||
},
|
||||
"roles_allowed": [
|
||||
"OTO Achat Acheteur",
|
||||
"OTO Achat Directeur",
|
||||
"OTO Achat Fournisseurs",
|
||||
"OTO Achat Magasinier",
|
||||
"OTO Achat Réception"
|
||||
],
|
||||
"knowledge_scope": [
|
||||
"Contact",
|
||||
"Item",
|
||||
"Material Request",
|
||||
"Purchase Order",
|
||||
"Purchase Receipt",
|
||||
"Request for Quotation",
|
||||
"Stock Entry",
|
||||
"Supplier"
|
||||
],
|
||||
"capabilities": [
|
||||
"aec.py",
|
||||
"knowledge.py",
|
||||
"prompt_engine.py",
|
||||
"chat.py"
|
||||
],
|
||||
"endpoint": null
|
||||
},
|
||||
{
|
||||
"portail": "compta",
|
||||
"workspace": "OTO Compta",
|
||||
"custom_block": "OTOIA Chat · OTO Compta",
|
||||
"html_id": "otoia-chat-compta",
|
||||
"persona": {
|
||||
"nom": "Amélie",
|
||||
"voix": "multilingual_v2"
|
||||
},
|
||||
"langues": [
|
||||
"fr",
|
||||
"en",
|
||||
"es"
|
||||
],
|
||||
"lang_defaut": "fr",
|
||||
"ui_label": {
|
||||
"fr": "Assistant OTOIA",
|
||||
"en": "OTOIA Assistant",
|
||||
"es": "Asistente OTOIA"
|
||||
},
|
||||
"roles_allowed": [
|
||||
"OTO Compta Audit UAF",
|
||||
"OTO Compta Clients AR",
|
||||
"OTO Compta Contrôle Gestion",
|
||||
"OTO Compta Fiscaliste eCF",
|
||||
"OTO Compta Fournisseurs AP",
|
||||
"OTO Compta Général",
|
||||
"OTO Compta Paie",
|
||||
"OTO Compta Trésorier"
|
||||
],
|
||||
"knowledge_scope": [
|
||||
"Account",
|
||||
"Bank Transaction",
|
||||
"Budget",
|
||||
"Cost Center",
|
||||
"Employee",
|
||||
"GL Entry",
|
||||
"Journal Entry",
|
||||
"Payment Entry",
|
||||
"Purchase Invoice",
|
||||
"Salary Slip",
|
||||
"Sales Invoice"
|
||||
],
|
||||
"capabilities": [
|
||||
"aec.py",
|
||||
"knowledge.py",
|
||||
"prompt_engine.py",
|
||||
"chat.py"
|
||||
],
|
||||
"endpoint": null
|
||||
},
|
||||
{
|
||||
"portail": "direction",
|
||||
"workspace": "OTO Direction",
|
||||
"custom_block": "OTOIA Chat · OTO Direction",
|
||||
"html_id": "otoia-chat-direction",
|
||||
"persona": {
|
||||
"nom": "Amélie",
|
||||
"voix": "multilingual_v2"
|
||||
},
|
||||
"langues": [
|
||||
"fr",
|
||||
"en",
|
||||
"es"
|
||||
],
|
||||
"lang_defaut": "fr",
|
||||
"ui_label": {
|
||||
"fr": "Assistant OTOIA",
|
||||
"en": "OTOIA Assistant",
|
||||
"es": "Asistente OTOIA"
|
||||
},
|
||||
"roles_allowed": [
|
||||
"OTO Conseil Administration",
|
||||
"OTO Direction Commerciale",
|
||||
"OTO Direction Financière",
|
||||
"OTO Direction Générale",
|
||||
"OTO Direction Opérations",
|
||||
"OTO Direction Président",
|
||||
"OTO Faisabilité Analyste",
|
||||
"OTO Legal Directeur",
|
||||
"OTO Legal ONAPI"
|
||||
],
|
||||
"knowledge_scope": [
|
||||
"CONFOTUR Application",
|
||||
"Contract",
|
||||
"Faisabilité",
|
||||
"Journal Entry",
|
||||
"Lead",
|
||||
"Opportunity",
|
||||
"Payment Entry",
|
||||
"Project",
|
||||
"Purchase Invoice",
|
||||
"Purchase Order",
|
||||
"Quotation",
|
||||
"Sales Invoice",
|
||||
"Sales Order",
|
||||
"Task"
|
||||
],
|
||||
"capabilities": [
|
||||
"aec.py",
|
||||
"knowledge.py",
|
||||
"prompt_engine.py",
|
||||
"chat.py"
|
||||
],
|
||||
"endpoint": null
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,27 @@
|
||||
[
|
||||
{
|
||||
"doctype": "Custom Block",
|
||||
"block_name": "OTOIA Chat · OTO Ventes",
|
||||
"html": "<div class=\"otoia-chat-mount\" id=\"otoia-chat-ventes\" data-portail=\"ventes\" data-assistant=\"Amélie\"></div>"
|
||||
},
|
||||
{
|
||||
"doctype": "Custom Block",
|
||||
"block_name": "OTOIA Chat · OTO Construction",
|
||||
"html": "<div class=\"otoia-chat-mount\" id=\"otoia-chat-construction\" data-portail=\"construction\" data-assistant=\"Amélie\"></div>"
|
||||
},
|
||||
{
|
||||
"doctype": "Custom Block",
|
||||
"block_name": "OTOIA Chat · OTO Achat",
|
||||
"html": "<div class=\"otoia-chat-mount\" id=\"otoia-chat-achat\" data-portail=\"achat\" data-assistant=\"Amélie\"></div>"
|
||||
},
|
||||
{
|
||||
"doctype": "Custom Block",
|
||||
"block_name": "OTOIA Chat · OTO Compta",
|
||||
"html": "<div class=\"otoia-chat-mount\" id=\"otoia-chat-compta\" data-portail=\"compta\" data-assistant=\"Amélie\"></div>"
|
||||
},
|
||||
{
|
||||
"doctype": "Custom Block",
|
||||
"block_name": "OTOIA Chat · OTO Direction",
|
||||
"html": "<div class=\"otoia-chat-mount\" id=\"otoia-chat-direction\" data-portail=\"direction\" data-assistant=\"Amélie\"></div>"
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user