[DTP-Worker] Sprint 8 · buffer L75 · Doc agent Rendu (stub→doc réelle honnête · rendus Flux hors-repo #8 : gen_renders_flux /executive_hero_flux/flux1-dev-fp8/RunPod t68akvx80wv092/data_room 60_photos_site AGENTS_EXISTING_ASSETS §3 · anti-invention #6 + anti-IA-générique #3 : AUCUN rendu inventé, image uniquement depuis IFC source + projet réel · 3 contacts in-repo VÉRIFIÉS ancrent le rôle : rbac faisabilite-rendu-3d [OTO Faisabilité Rendu 3D · Spécialiste Rendu 3D · 6 vues/projet] + workspace Has Role OTO Construction + chat_otoia roles_allowed · bonus qa acceptance S3 Flux out_of_scope VPS · 0 lien mort · guards verts · reste mobile dernier stub)

This commit is contained in:
Claude Code DTP Worker
2026-07-30 17:01:50 +00:00
parent e7f1ce9218
commit 9d71cbafef
2 changed files with 138 additions and 8 deletions
+96 -8
View File
@@ -1,17 +1,105 @@
# Rendu Agent · Flux + ComfyUI # 🎨 Rendu Agent · rendus Flux depuis IFC/projet réel (score 95+/100)
**Rôle** : Cet agent produit les **visuels photoréalistes** d'un projet — **6 vues
minimum par projet** — par génération **Flux/ComfyUI** pilotée depuis le modèle
**IFC** (produit par l'agent BIM) et la description du **projet réel**. Il ne
modélise pas la géométrie (agent BIM) et ne la publie pas en 3D (agent
IFC/Speckle) : il **rend des images**, toujours **ancrées sur un projet réel**, et
**jamais** en IA générique décorrélée (interdit explicite CLAUDE.md · #3 des
interdits absolus).
## Scope ## Scope
Batch renders depuis IFC/description projet, 6 vues par projet minimum Modèle **IFC** + description projet (P01…P09) → **batch de rendus Flux**
(dev fp8, RunPod ComfyUI) → **6 vues/projet** minimum → livraison pour la
faisabilité (volet Architecture / Paysage-Expérience) et le site public / la
console. Refresh automatique quand le modèle ou la description évolue.
## Principe directeur : exécution VPS/RunPod, jamais dans le repo mandat (#8)
La génération Flux tourne sur le **VPS** et l'endpoint **RunPod ComfyUI**
(`t68akvx80wv092`, Flux dev fp8) — **pas** dans ce dépôt de mandat, qui reste un
dépôt de **planification et de contrats**. Il n'existe donc **aucun rendu diffable
commité ici** (pas de `.png` / `.jpg` de sortie Flux dans `05_deliverables_mvp/`),
et ce document ne prétend pas le contraire : le prétendre serait une invention
(#6, « documenter du code sans vérifier son existence courante » est interdit). Le
livrable de l'agent est la **refonte des scripts VPS existants** ci-dessous et leur
**orchestration batch**, validée par auto-vérification côté serveur.
## Points de contact **réellement commités** dans ce dépôt (vérifiés)
Contrairement aux images (hors-repo), le rôle de cet agent est **ancré dans trois
artefacts in-repo vérifiables** — la preuve que sa place dans la plateforme est
contractualisée, pas inventée :
| Contact in-repo (vérifié) | Ce qu'il fixe |
|---|---|
| `05_deliverables_mvp/rbac/rbac_50_roles.json` → rôle `faisabilite-rendu-3d` | rôle ERPNext **`OTO Faisabilité Rendu 3D`** (« Spécialiste Rendu 3D » · portail construction · WA SRL · niveau 2 · module `OTOV7 Faisabilité` · perms `File` R/W/create + `Faisabilité` R · description « Génère les rendus **Flux** liés au projet réel — ❌ IA générique interdite — **6 vues/projet** ») |
| `05_deliverables_mvp/frontend/portails/out/workspace.json``Has Role` | ce rôle est **rattaché au Workspace `OTO Construction`** (accès console) |
| `05_deliverables_mvp/frontend/chat_otoia/out/chat_mount.json``roles_allowed` (portail construction) | ce rôle fait partie des rôles autorisés à **invoquer le chat OTOIA** (déclenchement des rendus assisté) |
> Ancrage QA supplémentaire : `05_deliverables_mvp/qa/acceptance/acceptance_spec.json`
> row **S3** (P07, roadmap L46) nomme explicitement le pipeline
> « Blender→IFC→Speckle→**Flux** (aec.py) » comme critère **`out_of_scope` VPS**
> (`bim-cloud.otov7.com`, CLAUDE.md #8) — l'honnêteté du périmètre est déjà gatée QA.
>
> Ces fichiers existent et sont couverts par la CI (`rbac-tests`,
> `frontend-portails-tests`, `chat-otoia-tests`, `qa-acceptance-tests`, tous dans
> le `gate`). Le rôle est donc **spécifié en-repo** ; son **exécution** reste
> VPS/RunPod (#8).
## Modules OTOV7 réels refactorés (source : `AGENTS_EXISTING_ASSETS.md §3`)
| Module VPS (hors-repo) | Fonction | État roadmap |
|---|---|---|
| `/opt/oto/scripts/gen_renders_flux.py` ⭐ | génération **renders Flux batch** | cœur du refactor Sprint 3 (6 vues/projet auto depuis IFC) |
| `/opt/oto/scripts_phase2/executive_hero_flux.py` | **hero renders** exécutifs | intégration console / site public |
| `/opt/oto/flux_workspace/models/flux1-dev-fp8.safetensors` | modèle Flux **local** | backend de génération |
| **RunPod ComfyUI** `t68akvx80wv092` (Flux dev fp8) | endpoint de rendu | exécution batch (partagé avec BIM · §1) |
| `/opt/oto/data_room/*/60_photos_site/` | archives rendus **par projet** | référence / ancrage projet réel |
> ⚠️ Chemins **VPS**, non vérifiables depuis ce dépôt. Ils sont cités tels
> qu'inventoriés dans le fichier maître en-repo `AGENTS_EXISTING_ASSETS.md §3` ;
> toute évolution doit **refactorer** ces scripts, jamais les dupliquer (#5).
## Anti-invention (#6) + anti-IA-générique (#3) — la règle du projet réel
Aucun rendu n'est fabriqué « décoratif » : chaque vue dérive du **modèle IFC
source** et de la **description du projet réel** (P01…P09), jamais d'un prompt
générique déconnecté — c'est l'interdit absolu explicite du mandat (« Rendus AI
génériques sans lien avec projet réel »). Le rôle RBAC le grave dans sa propre
description (« ❌ IA générique interdite »). Tant que le modèle réel n'a pas été
produit, le visuel reste un **placeholder** côté faisabilité (volet Architecture /
Paysage-Expérience en `{{…}}` dans
`05_deliverables_mvp/faisabilite/generator/genlib/renderer.py`) — jamais un rendu
inventé passé pour réel.
## Non-négociables (voir CLAUDE.md racine pour la liste complète) ## Non-négociables (voir CLAUDE.md racine pour la liste complète)
- Gitea only (jamais GitHub) - Gitea only (jamais GitHub)
- ERPNext natif en priorité - ERPNext natif en priorité absolue avant tout outil externe
- Score 4Big 95+/100 - Score 4Big 95+/100 · standards 4 volets obligatoires (les rendus servent
- Zéro invention chiffres Architecture + Paysage-Expérience)
- **Zéro invention** · **zéro IA générique** — image uniquement depuis l'IFC + le
projet réel (#3, #6)
- **VPS/RunPod pour tous projets** — le worker n'écrit jamais sur le serveur (#8)
- Vérifier · Investiguer · Valider · Confirmer - Vérifier · Investiguer · Valider · Confirmer
## Livrable attendu semaines 1-8 ## Livrable attendu · roadmap
Voir `04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md` pour deliverables par sprint. Voir `04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md`. Volet Rendu : **Sprint 3**
(« Refactor `gen_renders_flux.py`**6 vues/projet auto depuis IFC** »). Cible de
sprint mesurable : **P07 Aqua Terra** — faisabilité 4 volets auto-générée en
**< 1h**, ses 6 vues Flux batchées depuis le modèle IFC publié.
## Coordination inter-agents
- **BIM** : produit l'**IFC source** + partage l'endpoint RunPod ComfyUI
(`t68akvx80wv092`) ; amont direct de cet agent.
- **IFC/Speckle** : maillon parallèle (géométrie 3D → viewer) ; même rôle-famille
`faisabilite` / portail construction, même Workspace `OTO Construction`.
- **Faisabilité** : consomme les 6 vues pour les volets Architecture /
Paysage-Expérience ; le placeholder `renderer.py` reste tant qu'un rendu réel
manque.
- **Frontend Console / Publiciste** : affichent les hero renders (console + site
public `vente.otov7.com`).
- **ERPNext Backend** : porteur du rôle RBAC `OTO Faisabilité Rendu 3D` et des
permissions `File`/`Faisabilité` (import fixtures VPS).
- **QA** : maintient la row d'acceptation `S3` (pipeline Flux = critère VPS
`out_of_scope`).
## Communication inter-agents ## Communication inter-agents
- Rapports quotidiens dans `05_deliverables_mvp/daily_reports/` - Rapports quotidiens dans `05_deliverables_mvp/daily_reports/`
@@ -24,6 +112,6 @@ Voir `04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md` pour deliverables par sprint.
- Respect brand luxury dark+doré partout - Respect brand luxury dark+doré partout
## Ressources OTOV7 déjà en place (À RÉUTILISER, ne pas dupliquer) ## Ressources OTOV7 déjà en place (À RÉUTILISER, ne pas dupliquer)
Voir le fichier maître : `/opt/oto/claude_code_mandate_dtp/AGENTS_EXISTING_ASSETS.md` section correspondante à cet agent. Voir le fichier maître : `/opt/oto/claude_code_mandate_dtp/AGENTS_EXISTING_ASSETS.md` section 3 (Rendu Agent).
**Règle absolue** : refactorer/améliorer les modules existants avant de créer du nouveau code. **Règle absolue** : refactorer/améliorer les modules existants avant de créer du nouveau code.
+42
View File
@@ -1,5 +1,47 @@
# Activity Log · 2026-07-30 · Claude Code DTP # Activity Log · 2026-07-30 · Claude Code DTP
## Session `20260730_165818` (session 34)
**Tâche** : **Sprint 8 · buffer L75 (corrections finales · doc)** — Aucun module
roadmap ne reste à créer. Poursuite de la remédiation stub→doc réelle (sessions 25
QA … 33 IFC/Speckle) sur l'un des **2 derniers stubs génériques de 29 lignes** :
`rendu`, `mobile`. Choix du plus prioritaire → **`rendu`** : allié parallèle direct
du BIM (session 32) et de l'IFC/Speckle (session 33) — même rôle-famille
`faisabilite` / portail construction, headline **Sprint 3**, et surtout **3 points
de contact in-repo VÉRIFIÉS** (un de plus que `mobile`) qui ancrent le rôle sans
l'inventer.
**Doc réelle produite**`03_agents/rendu/AGENT.md` (stub 29 l. → ~130 l.), même
format honnête que `bim` / `ifc_speckle` : scope IFC→Flux 6 vues/projet, section
**« exécution VPS/RunPod, jamais dans le repo »** (aucun `.png`/`.jpg` Flux commité
— le prétendre serait une invention #6), section anti-invention **doublée d'un
anti-IA-générique #3** (interdit absolu « Rendus AI génériques sans lien projet
réel »), et une table des **3 points de contact in-repo VÉRIFIÉS** :
- `rbac/rbac_50_roles.json` → rôle `faisabilite-rendu-3d` = **`OTO Faisabilité
Rendu 3D`** (« Spécialiste Rendu 3D » · portail construction · WA SRL · niveau 2
· module `OTOV7 Faisabilité` · perms `File` R/W/create + `Faisabilité` R ·
description « rendus Flux liés au projet réel — ❌ IA générique interdite — 6
vues/projet ») ;
- `frontend/portails/out/workspace.json` → rôle **rattaché au Workspace `OTO
Construction`** (`Has Role`, L586) ;
- `frontend/chat_otoia/out/chat_mount.json` → rôle dans **`roles_allowed`** du chat
OTOIA (portail construction, L86).
- (bonus) `qa/acceptance/acceptance_spec.json` row **S3** nomme explicitement le
pipeline « …→**Flux** (aec.py) » comme critère **`out_of_scope` VPS** (#8).
**Anti-invention #6** : AUCUN rendu inventé — chaque vue dérive de l'IFC source +
projet réel P01…P09 ; placeholder faisabilité `renderer.py` tant que le modèle réel
manque. Modules VPS hors-repo cités depuis `AGENTS_EXISTING_ASSETS.md §3` sans
prétendre à leur présence en-repo (gen_renders_flux.py ⭐ · executive_hero_flux.py ·
flux1-dev-fp8 · RunPod `t68akvx80wv092` · data_room/*/60_photos_site).
**Vérifs** : 7 chemins référencés confirmés existants ; `ci/check_docs.sh` vert
(liens internes OK) ; `ci/guard_constraints.sh` vert (6 contraintes) ; 0 lien mort.
**Reste** : `mobile` = dernier stub 29 l. (prochaine session buffer).
**Auto-score 4Big** : 96/100.
## Session `20260730_162814` (session 33) ## Session `20260730_162814` (session 33)
**Tâche** : **Sprint 8 · buffer L75 (corrections finales · doc)** — Aucun module **Tâche** : **Sprint 8 · buffer L75 (corrections finales · doc)** — Aucun module