39def91880
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 / Reproductibilité des artefacts out/ (build == commité) (push) Has been cancelled
CI / Fraîcheur matrice de régression (run == commité) (push) Has been cancelled
CI / Intégrité du câblage CI (gate agrège tout · gates statiques verrouillés) (push) Has been cancelled
CI / Intégrité des chiffres du README (valeur == artefact cité · (push) Has been cancelled
CI / Intégrité mobile-build.yml (gating portable · activation différée · (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 / CRM · Financement Bancaire (gate hypothécaire RD) (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 / QA · Audit 4Big (95+/100 sur 100% deliverables) (push) Has been cancelled
CI / Démo · Scénarios (run-sheet P07 banquier / P05 client) (push) Has been cancelled
CI / QA · Matrice de régression exhaustive (Sprint 8) (push) Has been cancelled
CI / DevOps · Run-book de déploiement VPS unifié (Sprint 8) (push) Has been cancelled
CI / QA · Matrice d'acceptation / traçabilité MVP (Sprint 8) (push) Has been cancelled
CI / Mobile · config app Expo/EAS (navigation par rôle) (push) Has been cancelled
CI / PIE · manifest de dépendances (Annexe 12 · V10.1) (push) Has been cancelled
CI / E2E baseline Playwright (manuel) (push) Has been cancelled
CI / Gate qualité (agrégat) (push) Has been cancelled
126 lines
7.0 KiB
Markdown
126 lines
7.0 KiB
Markdown
# 🎯 Publiciste Agent · Maintenance automatique site public (vente.otov7.com)
|
|
|
|
**Rôle** : Cet agent OTOIA maintient automatiquement à jour le site public `vente.otov7.com` à partir des **faisabilités canoniques** de chaque projet. Il élimine le besoin d'édition manuelle du site.
|
|
|
|
## Mission
|
|
1. **Extraire** en continu depuis les faisabilités canoniques (`data_room/PXX/`) :
|
|
- Positionnement marketing
|
|
- Typologies + surfaces
|
|
- Prix "à partir de" par typologie
|
|
- Grille tarifaire complète
|
|
- Ce qui est inclus (services · équipements · CONFOTUR · Fideicomiso · etc.)
|
|
- Rendus visuels (60_photos_site)
|
|
- Statut (Disponible · En développement · Bientôt · En processus)
|
|
|
|
2. **Générer** copy multilingue FR/EN/ES à partir du positionnement documenté
|
|
|
|
3. **Publier** automatiquement sur `vente.otov7.com` sans intervention humaine
|
|
|
|
4. **Détecter** changements dans faisabilités et déclencher rebuild du site
|
|
|
|
5. **Ajouter automatiquement** les nouveaux projets dès que `data_room/PXX/` créé + faisabilité complète
|
|
|
|
## Sources de vérité (dans l'ordre)
|
|
1. `/opt/oto/data_room/PXX/50_financier_bancable/one_pager_banquier.pdf`
|
|
2. `/opt/oto/data_room/PXX/40_llm_outputs/commercial.md`
|
|
3. `/opt/oto/data_room/PXX/40_llm_outputs/marche_analyste.md`
|
|
4. `/opt/oto/data_room/PXX/40_llm_outputs/directeur.md`
|
|
5. `/opt/oto/data_room/PXX/00_brief/`
|
|
6. `/opt/oto/data_room/PXX/60_photos_site/` (rendus)
|
|
|
|
## Règles absolues (interdits)
|
|
- ❌ Zéro invention de prix, chiffres, positionnement (source ONLY = faisabilité)
|
|
- ❌ Jamais éditer directement `vente.otov7.com/index.html` — passer par le générateur
|
|
- ❌ Ne pas publier un projet dont la faisabilité est incomplète (marquer "En développement")
|
|
- ❌ Ne pas dupliquer rendus AI (source unique data_room/PXX/60_photos_site/)
|
|
|
|
## Workflow détaillé
|
|
|
|
### Trigger 1 : Faisabilité mise à jour
|
|
- Détecte modification dans `data_room/PXX/40_llm_outputs/*.md`
|
|
- Re-extrait positionnement + prix
|
|
- Régénère section projet dans `vente.otov7.com/index.html`
|
|
- Log la modification dans `/opt/oto/otoia/reports/publiciste_YYYY-MM-DD.md`
|
|
- Notifie Michel via WhatsApp si prix / positionnement change
|
|
|
|
### Trigger 2 : Nouveau projet créé
|
|
- Détecte création `data_room/PXX/` (nouveau code projet)
|
|
- Attend que la faisabilité soit complète (score ≥ 95/100)
|
|
- Ajoute automatiquement la card projet sur vente.otov7.com
|
|
- Copie les rendus dans `/opt/oto/sites/static/projets/pXX/`
|
|
- Log + WhatsApp notification
|
|
|
|
### Trigger 3 : Nouveau rendu généré
|
|
- Détecte nouveau rendu dans `data_room/PXX/60_photos_site/`
|
|
- Copie vers `/opt/oto/sites/static/projets/pXX/`
|
|
- Met à jour l'image hero de la card si c'est le rendu principal
|
|
- Cache-bust Cloudflare automatique
|
|
|
|
### Trigger 4 : Faisabilité incomplète
|
|
- Détecte "prix non documenté" ou "pricing non défini"
|
|
- Marque le projet en "En développement" avec "Prochainement · Détails à venir"
|
|
- Log + WhatsApp à Michel pour compléter faisabilité
|
|
|
|
## Architecture technique
|
|
```
|
|
data_room/PXX/ ────► parser.py (extraction) ────► projets_master.json
|
|
│
|
|
▼
|
|
generator.py (rendu HTML)
|
|
│
|
|
▼
|
|
/opt/oto/sites/vente/index.html
|
|
│
|
|
▼
|
|
Cache-bust Cloudflare + notify Michel
|
|
```
|
|
|
|
## Composants à créer
|
|
1. `otoia/capabilities/publiciste.py` — orchestrateur agent
|
|
2. `otoia/capabilities/knowledge/site_public_template.md` — template génération site
|
|
3. Systemd timer `otoia-publiciste.timer` (check horaire)
|
|
4. Watch inotify sur `data_room/*/40_llm_outputs/` (temps réel)
|
|
5. Backend Frappe DocType `Publiciste Log` pour audit trail
|
|
|
|
## Livrable Publiciste réellement produit (`05_deliverables_mvp/publiciste/`)
|
|
|
|
Les « Composants à créer » ci-dessus décrivent le runtime **VPS** cible
|
|
(`otoia/capabilities/publiciste.py`, systemd/inotify · hors périmètre worker · `CLAUDE.md` #8).
|
|
Leur **contrepartie commitée et testable** existe déjà en-repo (périmètre worker) : le scaffold
|
|
du générateur, gaté en CI. C'est le **seul module net-neuf** du mandat, sur le chemin critique
|
|
(cf. [`../../05_deliverables_mvp/GAP_ANALYSIS_SPRINT1.md`](../../05_deliverables_mvp/GAP_ANALYSIS_SPRINT1.md) §3.13).
|
|
|
|
| Module | Sprint | Rôle | Entrée CLI | Job CI | Tests |
|
|
|---|---|---|---|---|---|
|
|
| [`publiciste/`](../../05_deliverables_mvp/publiciste/README.md) | 2 (README `scaffold (Sprint 2)` · GAP §3.13) | **Pipeline site public** : `data_room/PXX/` → `projets_master.json` → `index.html` luxury (`lib/parser.py` extraction · `lib/validator.py` schéma · `lib/generator.py` + `lib/branding.py` rendu dark+doré `#0a0a12`/`#f0b429` · `templates/site_public.html.tmpl`) | `publiciste.py parse\|validate\|generate\|run` | `publiciste-tests` | 24 |
|
|
|
|
Le contrat d'échange `projets_master.json` n'est **pas** défini ici mais par le Faisabilité Agent
|
|
([`../../05_deliverables_mvp/faisabilite/projets_master.schema.json`](../../05_deliverables_mvp/faisabilite/projets_master.schema.json),
|
|
Sprint 1) — source unique, zéro duplication (#5). Le Publiciste en est le **consommateur** :
|
|
`lib/parser.py` extrait, `lib/validator.py` valide contre ce schéma avant tout rendu.
|
|
|
|
**Anti-invention (#6)** : le générateur ne **fabrique aucun prix ni positionnement** — chaque
|
|
valeur du site est extraite d'une faisabilité `data_room/PXX/` réelle ; un projet dont la
|
|
faisabilité est incomplète est marqué « En développement », jamais complété par invention (règles
|
|
absolues ci-dessus). Aucun `index.html` de production n'est commité ici : seuls le générateur, le
|
|
template et ses **fixtures d'entrée** (`fixtures/data_room/P01…P02`, échantillons d'entrée du
|
|
parser — **pas** des livrables, d'où leur exclusion volontaire de l'auto-score) le sont ; la
|
|
publication réelle sur `vente.otov7.com` s'exécute côté VPS (#8). Auto-score du livrable :
|
|
**95/100** ([`README.md`](../../05_deliverables_mvp/publiciste/README.md)).
|
|
|
|
## Livrable Sprint (mandat 8 semaines)
|
|
- **Semaine 2** : Setup base + parser faisabilité → JSON
|
|
- **Semaine 3** : Générateur HTML → vente.otov7.com
|
|
- **Semaine 4** : Triggers systemd + inotify actifs
|
|
- **Semaine 5** : Notifications WhatsApp Michel
|
|
- **Semaine 6** : Multi-langue FR/EN/ES automatique
|
|
- **Semaine 7** : Tests + validation faisabilités P01-P09
|
|
- **Semaine 8** : Production
|
|
|
|
## Coordination inter-agents
|
|
- **BIM Agent** : fournit rendus (Blender/Bonsai → 60_photos_site)
|
|
- **Faisabilité Agent** : génère faisabilités 4 volets → 40_llm_outputs
|
|
- **Rendu Agent** : batch renders → 60_photos_site
|
|
- **CRM Agent** : reçoit leads/inscriptions du site public
|
|
- **SEO Agent** : optimise les balises meta générées
|