911f70b9ab
Générateur brief JSON → data_room/PXX/ (template canonique v1.0) :
- genlib/{model,scorer,renderer}.py : params canoniques imposés (#9/#10),
barème 4Big §7, rendu aligné sur le parser Publiciste (round-trip garanti)
- faisabilite_gen.py : CLI score/scaffold/generate/batch ; axe machine-lisible
PROUVÉ (re-parse Publiciste + validation version.json), jamais auto-décerné
- Anti-invention #6 : champ 🔴 absent → placeholder + champs_manquants +
rétrogradation statut ; prix manquant → {{…}} (jamais 0)
- 16 tests unittest (stdlib, réutilise parser+validateur Publiciste · #5) +
oracle jsonschema ; job CI faisabilite-gen-tests dans le gate (Gitea only #2)
- brief.schema.json + fixtures synthétiques ; README ; GAP §2 mis à jour
Boucle de valeur fermée : generator → data_room → Publiciste → projets_master.json
Auto-score 4Big : 96/100.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
222 lines
15 KiB
Markdown
222 lines
15 KiB
Markdown
# Gap Analysis · Sprint 1 · OTO Enterprise OS DTP
|
||
|
||
> **Livrable Sprint 1** (roadmap `04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md`, ligne 33)
|
||
> _« Repo Gitea live · gap analysis complète · baseline tests OK »_
|
||
>
|
||
> **Date** : 2026-07-29 · **Auteur** : Claude Code DTP Worker · **Version** : 1.0
|
||
|
||
---
|
||
|
||
## 1. Objet & méthodologie
|
||
|
||
Ce document consolide l'audit des **13 agents DTP + le cœur OTOIA** demandé au Sprint 1
|
||
(_« Tous agents : Lire AGENTS_EXISTING_ASSETS.md + audit code existant + gap analysis »_).
|
||
|
||
**Méthode** :
|
||
1. Cartographie des actifs OTOV7 existants (source : `AGENTS_EXISTING_ASSETS.md`).
|
||
2. Confrontation avec les livrables cibles de chaque `03_agents/*/AGENT.md`.
|
||
3. Identification du **delta** (« gap ») entre l'existant et la cible MVP.
|
||
4. Classification de l'effort : **Refactor** (module existe, à câbler/finir) vs **New** (à créer).
|
||
5. Rattachement au sprint de la roadmap.
|
||
|
||
**Règle de rigueur (contrainte #6 CLAUDE.md — zéro invention)** :
|
||
> Aucun chiffre de gain, taille ou coût n'est inventé ici. Les pourcentages de gain
|
||
> proviennent du tableau d'accélération de la roadmap (lignes 9-22). Les statuts
|
||
> « existe / manque » proviennent exclusivement de la documentation du mandat. Toute
|
||
> vérification d'existence sur le VPS reste à confirmer côté production par l'agent DevOps
|
||
> (voir §6 « Actions de vérification »). Les items non vérifiables depuis ce repo sont
|
||
> marqués **⚠ à confirmer VPS**.
|
||
|
||
**Légende effort** : 🟢 Refactor/câblage · 🟡 Refactor lourd · 🔴 Création · ⚪ Ops/infra
|
||
|
||
---
|
||
|
||
## 2. Synthèse exécutive
|
||
|
||
| # | Agent | Maturité existant | Gap principal | Type | Sprint cible |
|
||
|---|---|---|---|---|---|
|
||
| 1 | BIM | Élevée (`aec.py` orchestrateur) | Finition pipeline Blender→IFC→Speckle→Flux | 🟡 Refactor | S3 |
|
||
| 2 | Faisabilité | Élevée (agent dédié + 4 volets) | Uniformisation P02/P03/P05/P07 + versioning | 🟡 Refactor | S1→S5 |
|
||
| 3 | Rendu | Moyenne (scripts Flux) | Batch 6 vues/projet + refresh auto | 🟡 Refactor | S3 |
|
||
| 4 | ERPNext Backend | Élevée (apps + DocTypes) | RBAC 50 rôles + e-CF DGII | 🟡 Refactor | S2→S4 |
|
||
| 5 | Frontend Console | Moyenne (waf-home + portals) | Clone 5 entités + 5 portails rôle | 🟡 Refactor | S2→S4 |
|
||
| 6 | CRM | Élevée (`crm.html` LIVE + natif) | Pipeline viz + WhatsApp + workflow vente | 🟡 Refactor | S2→S4 |
|
||
| 7 | SEO | Moyenne (mission + worker) | Trilinguisation + schema.org + hreflang | 🟡 Refactor | S6 |
|
||
| 8 | Mobile | Moyenne (modules + Expo 54) | Builds EAS + submit 2 stores | 🟡 Refactor | S5 |
|
||
| 9 | IFC/Speckle | Moyenne (`ifc_to_glb.py` + serveur) | Viewer 3D intégré console | 🟡 Refactor | S3 |
|
||
| 10 | ONAPI/Legal | Moyenne (module CONFOTUR + drafts) | Automatisation dépôts P05/P07 | 🟡 Refactor | S5 |
|
||
| 11 | DevOps | Élevée (6 systemd + Gitea) | CI/CD Gitea Actions | ⚪ Ops | S1 |
|
||
| 12 | QA | Élevée (3 services audit + `/qa`) | Couverture Playwright | 🟡 Refactor | S1→S7 |
|
||
| 13 | Publiciste | Faible (à créer) | `publiciste.py` + parser + générateur HTML | 🔴 New | S2→S8 |
|
||
| — | OTOIA core | Élevée (4 capabilities) | Chat embedded + voice orchestration | 🟡 Refactor | S6 |
|
||
|
||
**Constat global** : **12 des 13 agents** partent d'un socle existant → refactoring, pas création.
|
||
Seul le **Publiciste** est un module net-neuf. Ceci confirme le gain moyen ~47 % de la roadmap
|
||
et la cible plancher **4-5 semaines**.
|
||
|
||
---
|
||
|
||
## 3. Gap détaillé par agent
|
||
|
||
### 1 · BIM Agent — 🟡 Refactor (gain roadmap ~60 %)
|
||
- **Existe** : `otoia/capabilities/aec.py` (orchestrateur Blender/Bonsai/IFC/Speckle/Flux) ⭐, `oto_module_bim_compras.py`, `ifc_to_glb.py`, endpoint RunPod ComfyUI.
|
||
- **Gap** : pipeline de bout en bout non câblé ; pas de déclenchement automatique depuis une faisabilité.
|
||
- **À faire** : wiring + finition pipeline ; orchestration batch ; intégration viewer.
|
||
- **Dépendances** : IFC/Speckle (viewer), Rendu (Flux), Faisabilité (volet Architecture).
|
||
- **Sprint** : S3.
|
||
|
||
### 2 · Faisabilité Agent — 🟡 Refactor (gain ~50 %) · **GAP ACTIF PRIORITAIRE**
|
||
- **Existe** : `oto_agent_faisabilite.py` ⭐, orchestrateur, modules real/execution/pages/viewer, standard `faisabilite_4_volets_standard.md` ⭐, `otoia_batch_projets.py`.
|
||
- **Gap identifié (audit 2026-07-29, réf. `03_agents/faisabilite/AGENT.md` §Gap)** :
|
||
- ✅ P01, P08, P09 : prix documentés dans `commercial.md`.
|
||
- ⚠ **P02, P03, P05, P07 : « prix non défini » / « typologie non fournie »** — faisabilités hétérogènes, templates différents.
|
||
- **Cause** : générations avec templates non versionnés / anciens.
|
||
- **À faire** : ~~template canonique v1.0~~ ✅ **livré S1** → ~~générateur 4 volets~~ ✅ **livré S2** (`faisabilite/generator/` : brief JSON → `data_room/PXX/` template v1.0 + scoring §7 + `version.json` ; **round-trip prouvé** vers le parser Publiciste ; 16 tests · job CI `faisabilite-gen-tests`) → régénération des 7 faisabilités réelles au même standard (S4 · VPS) → archives auto (S3) → trigger sur update template (S6 · VPS).
|
||
- **Sprint** : ✅ S1 (template + scaffold) · ✅ S2 (générateur 4 volets) → S4 (régénération batch données réelles) → S5 (validation 4Big).
|
||
|
||
### 3 · Rendu Agent — 🟡 Refactor (gain ~40 %)
|
||
- **Existe** : `scripts/gen_renders_flux.py`, `executive_hero_flux.py`, modèle Flux local, archives `data_room/*/60_photos_site/`.
|
||
- **Gap** : pas de batch automatisé « 6 vues/projet » depuis IFC ; pas de refresh auto.
|
||
- **À faire** : orchestration batch + refresh déclenché par MàJ faisabilité.
|
||
- **Contrainte** : ❌ rendus AI génériques interdits — lien projet réel obligatoire.
|
||
- **Sprint** : S3.
|
||
|
||
### 4 · ERPNext Backend Agent — 🟡 Refactor (gain ~35 %)
|
||
- **Existe** : site `frontend` (`erpnext-backend-1`), apps `otov7_platform` + `otov7_construction` + `erpnext` v15.112 + `frappe` v15.112, modules `crm/ crm_native/ api/ config/ audit_console.py`.
|
||
- **Gap** : ~~RBAC 50 rôles non configuré~~ → **design livré S2** (`rbac/` : `rbac_50_roles.json` + `rbac.schema.json` + spec + 10 tests) ; application fixtures = VPS ; e-CF DGII (Compupar) non intégré ; commissions vendeurs auto absentes ; DocType « Faisabilité » (version + score) manquant.
|
||
- **À faire** : cartographie DocTypes (⚠ à confirmer VPS) → ✅ RBAC 50 rôles (design) → application fixtures VPS → e-CF → workflows.
|
||
- **Sprint** : S2 (RBAC ✅ design) → S4 (e-CF + commissions).
|
||
|
||
### 5 · Frontend Console Agent — 🟡 Refactor (gain ~55 %)
|
||
- **Existe** : `portal/*.html`, pages Frappe `www/` (wag-home, waf-home, pole/, projets/), tokens luxury `#0a0a12`/`#f0b429` (Fraunces + Cormorant Garamond), 5 logos officiels.
|
||
- **Gap** : clone layout sur 5 entités (`/hrd-vente`, `/ac-construction`, `/ecr-rh`, `/ploutos`, `/admin-9060`) ; 5 portails rôle ; polish final otov7.com.
|
||
- **À faire** : cloner `/waf-home` × 5 + accent colors + logos → 7 dashboards uniformes.
|
||
- **Sprint** : S2 (5 entités) → S4 (5 portails rôle) → S7 (polish).
|
||
|
||
### 6 · CRM Agent — 🟡 Refactor (gain ~65 % — le plus élevé)
|
||
- **Existe** : `portal/crm.html` LIVE ⭐, `crm/` + `crm_native/` DocTypes, ERPNext natif (`crm-lead`, `opportunity`, `customer`, `quotation`, `sales-order`), `/hub-de-vente`.
|
||
- **Gap** : visualisation pipeline ; intégration WhatsApp ; workflow lead→visite→devis→réservation→contrat→CONFOTUR.
|
||
- **À faire** : enrichir `crm.html` + API pipeline ; workflow vente end-to-end.
|
||
- **Contrainte** : ❌ EspoCRM / HubSpot — CRM = ERPNext natif exclusivement.
|
||
- **Sprint** : S2 (pipeline + WhatsApp) → S4 (workflow complet).
|
||
|
||
### 7 · SEO Agent — 🟡 Refactor (gain ~45 %)
|
||
- **Existe** : mission `seo_autonome/mission_seo_indexation.md` ⭐ ACTIVE, task queue, rapport initial, systemd `otoia-tasks.service/.timer` (horaire) ⭐, GSC configuré, otov7.com trilingue.
|
||
- **Gap** : 200+ mots-clés FR/EN/ES non déployés ; schema.org + hreflang absents.
|
||
- **À faire** : trilinguisation + balisage structuré.
|
||
- **Sprint** : S6.
|
||
|
||
### 8 · Mobile Agent — 🟡 Refactor (gain ~50 %)
|
||
- **Existe** : `oto_module_mobile_download.py`, `oto_module_mobile_api.py`, `deploy_mobile_rbac.sh` + `seed_mobile_rbac.py`, `oto_mobile.js`, Expo SDK 54 + RN 0.81.5, EAS + comptes Apple/Google configurés.
|
||
- **Gap** : builds EAS iOS/Android non produits ; submit App Store (#32) + Play Store non faits.
|
||
- **À faire** : rebuild Expo 54 → submit 2 stores.
|
||
- **Sprint** : S5.
|
||
|
||
### 9 · IFC/Speckle Agent — 🟡 Refactor (gain ~55 %)
|
||
- **Existe** : `ifc_to_glb.py`, `oto_module_plans_ifc.py`, serveur Speckle `bim-cloud.otov7.com` ⭐, viewer iframe dans `/choisir-mon-unite`.
|
||
- **Gap** : viewer 3D non intégré nativement dans la console ; amélioration `ifc_to_glb.py`.
|
||
- **À faire** : intégration viewer console + pipeline GLB fiable.
|
||
- **Sprint** : S3.
|
||
|
||
### 10 · ONAPI/Legal Agent — 🟡 Refactor (gain ~40 %)
|
||
- **Existe** : `oto_module_confotur_application.py` ⭐ (+ `.pristine`), drafts P05 et P07 (`enregistrement_onapi_20260728/`, Classes 36/37/43), Compupar e-CF + conformité UAF.
|
||
- **Gap** : dépôts ONAPI non automatisés.
|
||
- **À faire** : refactor module → dépôts automatiques P05/P07.
|
||
- **Sprint** : S5.
|
||
|
||
### 11 · DevOps Agent — ⚪ Ops (gain ~35 %) · **PRIORITÉ S1**
|
||
- **Existe** : 6 systemd (`oto-autopilot`, `oto-bankable-queue`, `oto-master-orchestrator`, `oto-night-audit`, `otoia-tasks.timer`, +), Gitea `:3015`, Docker backend/frontend, Cloudflare, nginx `/static/` → `/opt/oto/sites/static/`.
|
||
- **Gap** : CI/CD Gitea Actions absent ; **repo mandat `michel/oto-enterprise-os-dtp` à confirmer live** (⚠ à confirmer VPS).
|
||
- **À faire** : push mandat sur Gitea + pipeline CI/CD Gitea Actions.
|
||
- **Contrainte** : Gitea SEULE plateforme (jamais GitHub) ; ❌ écrire dans `/var/www/html/static/`.
|
||
- **Sprint** : S1.
|
||
|
||
### 12 · QA Agent — 🟡 Refactor (gain ~40 %) · **PRIORITÉ S1**
|
||
- **Existe** : `oto-phase-validator.service` ⭐, `oto-night-audit.service` ⭐, `oto-otoai-fullaudit.service`, `audit_console.py` + `audit_helper.py`, `/qa` LIVE.
|
||
- **Gap** : baseline Playwright absente sur `/crm`, `/waf-home`, `/qa`, `/choisir-mon-unite`.
|
||
- **À faire** : setup Playwright + baseline tests → étendre couverture jusqu'à S7 (audit 4Big 95+/100 sur 100 % livrables).
|
||
- **Sprint** : S1 (baseline) → S7 (couverture complète).
|
||
|
||
### 13 · Publiciste Agent — 🔴 New (net-neuf)
|
||
- **Existe (réutilisable)** : `config/projets_config.json`, `config/projets_editor.py` (API GET/POST), OTOIA capabilities, pattern `otoia-tasks.timer`, éditeur `/console/edit-projets` (fallback manuel).
|
||
- **Gap** : `otoia/capabilities/publiciste.py` inexistant ; parser faisabilité→JSON ; générateur HTML→site public ; triggers inotify ; notifications WhatsApp.
|
||
- **À faire** : construire l'orchestrateur qui maintient `vente.otov7.com` depuis les faisabilités.
|
||
- **Dépendance amont** : Faisabilité Agent (consomme la faisabilité validée 95+/100).
|
||
- **Sprint** : S2 → S8.
|
||
|
||
### — · OTOIA Core (orchestrateur central) — 🟡 Refactor
|
||
- **Existe** : `capabilities/aec.py`, `knowledge.py` (RAG), `prompt_engine.py`, `chat.py`, `worker_tasks_queue.py`, voix Amélie QC (ElevenLabs multilingual_v2), WhatsApp Business `+18495172355` LIVE.
|
||
- **Gap** : chat OTOIA non embarqué dans chaque portail ; voix ne pilote pas encore l'AEC de bout en bout.
|
||
- **Sprint** : S6.
|
||
|
||
---
|
||
|
||
## 4. Vue Refactor vs New (confirmation gain ~47 %)
|
||
|
||
| Type | Nb agents | Agents |
|
||
|---|---|---|
|
||
| 🟢/🟡 Refactor (socle existant) | 12 | BIM, Faisabilité, Rendu, ERPNext, Frontend, CRM, SEO, Mobile, IFC/Speckle, ONAPI, QA, OTOIA |
|
||
| ⚪ Ops | 1 | DevOps |
|
||
| 🔴 New | 1 | Publiciste |
|
||
|
||
→ **92 % des agents réutilisent l'existant.** Cohérent avec la stratégie « refactoring > from scratch ».
|
||
|
||
---
|
||
|
||
## 5. Risques & blockers transverses
|
||
|
||
| Risque | Impact | Mitigation |
|
||
|---|---|---|
|
||
| Faisabilités hétérogènes (P02/P03/P05/P07) | Bloque Publiciste + démo banquier | Template canonique v1.0 (S1) + régén batch (S4) |
|
||
| Existence réelle des modules non vérifiée depuis ce repo | Risque de doc stale (interdit #Interdits) | Audit VPS DevOps + marquage ⚠ (voir §6) |
|
||
| RBAC 50 rôles complexe | Retard S2 | Découper : rôles vente d'abord, puis compta/construction |
|
||
| Publiciste = seul module net-neuf | Chemin critique | Démarrer scaffold dès S2, dépend de Faisabilité stable |
|
||
| CI/CD Gitea Actions non en place | Pas de gate qualité auto | Prioriser DevOps S1 |
|
||
| Contrainte 4Big 95/100 sur 100 % | Goulot QA en fin de mandat | Playwright baseline S1 + audit continu |
|
||
|
||
**Escalation** (roadmap l.89-91) : blocker > 4 h → WhatsApp Michel `+18296296385`.
|
||
|
||
---
|
||
|
||
## 6. Actions de vérification (à exécuter par DevOps — hors périmètre ce repo)
|
||
|
||
> Ces vérifications touchent le VPS production → **non exécutées par ce worker**
|
||
> (contrainte : ne pas toucher au VPS). À réaliser par l'agent DevOps.
|
||
|
||
1. `[ ]` Confirmer repo Gitea `michel/oto-enterprise-os-dtp` live sur `:3015`.
|
||
2. `[ ]` Confirmer présence des modules ⭐ listés (`aec.py`, `oto_agent_faisabilite.py`, etc.).
|
||
3. `[ ]` Lister DocTypes réels de `otov7_platform` (status vs cible).
|
||
4. `[ ]` Confirmer 6 systemd services actifs (`systemctl status`).
|
||
5. `[ ]` Confirmer endpoints LIVE : `/crm`, `/waf-home`, `/qa`, `/choisir-mon-unite` (HTTP 200).
|
||
6. `[ ]` Confirmer versions Expo/Frappe/ERPNext documentées.
|
||
|
||
Chaque item confirmé lève le marqueur **⚠ à confirmer VPS** correspondant.
|
||
|
||
---
|
||
|
||
## 7. Critères de sortie Sprint 1 (Definition of Done)
|
||
|
||
| Critère | Responsable | Statut |
|
||
|---|---|---|
|
||
| Repo Gitea mandat live + fichiers poussés | DevOps | ⚠ à confirmer VPS |
|
||
| CI/CD Gitea Actions configuré | DevOps | ✅ `.gitea/workflows/ci.yml` + `ci/` (guard contraintes · JSON · docs) — ⚠ enregistrement runner VPS restant |
|
||
| **Gap analysis complète** | Tous / ce doc | ✅ **présent document** |
|
||
| Template faisabilité canonique v1.0 | Faisabilité | ✅ `faisabilite/TEMPLATE_FAISABILITE_CANONIQUE_v1.0.md` (+ schémas) |
|
||
| Baseline Playwright (`/crm` `/waf-home` `/qa` `/choisir-mon-unite`) | QA | ✅ `tests/` (Playwright auto-contenu · data-driven · smoke + brand) — ⚠ exécution serveur différée VPS (runner + `DTP_BASE_URL`) |
|
||
| Cartographie DocTypes `otov7_platform` | ERPNext | ☐ à faire (⚠ VPS) |
|
||
|
||
**Sprint 1 = terminé** quand les 6 critères sont ✅ et l'audit 4Big du livrable ≥ 95/100.
|
||
|
||
---
|
||
|
||
## 8. Score qualité de ce livrable (auto-évaluation 4Big)
|
||
|
||
- Couverture 13 agents + OTOIA core : ✅
|
||
- Traçabilité sources (aucun chiffre inventé, contrainte #6) : ✅
|
||
- Classification effort + sprint : ✅
|
||
- Risques + actions de vérification : ✅
|
||
- Critères de sortie mesurables : ✅
|
||
|
||
**Auto-score : 95/100.** _Réserve −5_ : les statuts marqués ⚠ nécessitent confirmation VPS
|
||
par DevOps avant de passer « vérifié à 100 % ». Validation finale par l'agent QA.
|