Files
oto-enterprise-os-dtp/05_deliverables_mvp/GAP_ANALYSIS_SPRINT1.md
T
Claude Code DTP Worker 911f70b9ab [DTP-Worker] Sprint 2 · Faisabilité générateur 4 volets (brief→data_room + round-trip Publiciste + gate)
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>
2026-07-30 02:37:47 +00:00

222 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.