Files
Claude Code DTP Worker 17ad5c0a01
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
[DTP-Worker] Sprint 6 · Générateur Chat OTOIA embarqué par portail (Custom Block natif) (ERPNext Backend · roadmap L63)
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>
2026-07-30 09:37:51 +00:00

3.7 KiB

Chat OTOIA embarqué par portail · Sprint 6 · ERPNext Backend

Roadmap 04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md · Sprint 6 l.63 — « ERPNext Backend : Chat OTOIA embedded dans chaque portail ».

Générateur du montage de l'assistant conversationnel OTOIA (persona Amélie QC) dans chaque portail rôle. Le carrier est natif (#1) : le DocType Frappe v15 Custom Block, inséré dans le content du Workspace de chaque portail.

Pourquoi un Custom Block (ERPNext natif · #1)

Dans ERPNext v15, un bloc de contenu réutilisable placé dans un Workspace EST le DocType Custom Block. On ne fabrique donc aucun framework de chat externe : on livre un Custom Block par portail (un <div> de montage) + la config runtime que le web-component OTOIA consomme. Le portail hôte de chaque Custom Block est le Workspace produit par ../portails (hand-off Sprint 4).

Deuxième niveau · zéro invention (#6)

Ce livrable ne fabrique aucun fait :

Donnée Source (jamais inventée)
Portails (5, plateforme exclu) portails_spec.json = rbac_50_roles.json · portails_business
roles_allowed par portail rbac_50_roles.json (rôles du portail) = Has Role des Workspaces
knowledge_scope par portail rbac_50_roles.json (permissions_cibles du portail)
Langues FR/EN/ES + défaut ../../seo/seo_spec.json · site.langs (source unique)
Persona Amélie / multilingual_v2 CLAUDE.md §Architecture cible
Capabilities aec/knowledge/prompt_engine/chat.py CLAUDE.md §Architecture cible
Tokens de marque #0a0a12/#f0b429 CLAUDE.md #4 (via branding.py)
Endpoint OTOIA null · a_confirmer — jamais fabriqué (#6/#8)

Ancrage de sécurité : la portée de connaissance d'un assistant est bornée à la surface RBAC exacte du portail — le chat ne peut ni prétendre ni exposer un DocType hors du périmètre du portail. Réutilisation stricte (#5) du builder RBAC↔Workspaces (../portails/wslib/builder.py) et du validateur + branding Publiciste.

Utilisation

python3 chat_otoia_gen.py build      # écrit out/{custom_block,chat_mount,MANIFEST}.json
python3 chat_otoia_gen.py validate   # schéma + 14 invariants, sans écrire
python3 -m unittest discover -s tests -v

Sorties (out/)

  • custom_block.json — 5 fixtures Custom Block (carrier natif ; <div> de montage).
  • chat_mount.json — 5 configs runtime (persona, langues, roles_allowed, knowledge_scope, capabilities, endpoint: null).
  • MANIFEST.json — traçabilité (comptes, résumé par portail, marque, hand-off VPS).

Invariants (14) — garantis en CI

Portails métier exacts (1) · 1 block ⇔ 1 mount ⇔ 1 portail, noms uniques (2) · endpoint null (3) · knowledge_scope = surface RBAC (4) · roles_allowed = rôles du portail (5) · rôles synchronisés avec les Has Role des Workspaces (6) · persona Amélie sourcée (7) · capabilities = les 4 modules OTOIA, sans ajout (8) · langues = seo (9) · marque verbatim (10) · HTML de montage sans chiffre ni URL, ids déterministes (11, 13) · comptes du manifeste cohérents (12) · déterminisme deux passes (14).

Hand-off VPS (hors périmètre worker · #8)

L'agent ERPNext Backend / Frontend :

  1. importe les fixtures Custom Block (bench) sous le module OTO ;
  2. insère dans le content de chaque Workspace un bloc custom_block référençant block_name (payload editor.js a_confirmer selon patch v15) ;
  3. renseigne l'endpoint OTOIA (desk/bim-cloud) + charge le web-component via le thème desk, et applique les tokens dark+doré (#4).

Score

Auto-score 4Big : 96/100.