Files
oto-enterprise-os-dtp/05_deliverables_mvp/publiciste
Claude Code DTP Worker 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
[DTP-Worker 20260811_095844] Auto exec · session 20260811_095844
2026-08-11 10:11:32 +00:00
..

Publiciste Agent — scaffold (Sprint 2)

Maintient automatiquement le site public vente.otov7.com à partir des faisabilités canoniques (data_room/PXX/, template v1.0), sans édition manuelle. Cible de portage sur le VPS : otoia/capabilities/publiciste.py (voir ../../03_agents/publiciste/AGENT.md et ../GAP_ANALYSIS_SPRINT1.md §3.13 — seul module net-neuf, chemin critique).

Pipeline

data_room/PXX/  ──►  lib/parser.py  ──►  projets_master.json  ──►  lib/generator.py  ──►  index.html
   (faisabilité)      (extraction)        (contrat schéma)          (rendu luxury)        (site public)

Le contrat projets_master.json est défini par ../faisabilite/projets_master.schema.json (livré au Sprint 1). Le versioning faisabilité par ../faisabilite/version.schema.json.

État par rapport au calendrier AGENT.md

Semaine Livrable Statut ici
S2 Setup base + parser faisabilité → JSON lib/parser.py + validation schéma
S3 Générateur HTML → site aperçu lib/generator.py (rendu luxury #4)
S4 Triggers systemd + inotify ☐ (exécution VPS — hors périmètre worker)
S5 Notifications WhatsApp Michel ☐ (VPS)
S6 Multilingue FR/EN/ES auto ☐ (FR extrait ; EN/ES à venir)
S7 Tests + validation P01-P09 🟡 tests sur fixtures synthétiques (données réelles VPS)
S8 Production ☐ (VPS)

Composants

Fichier Rôle
publiciste.py Orchestrateur CLI (parse / validate / generate / run)
lib/parser.py data_room/PXX/ → dict projet (contrat schéma) · anti-invention #6
lib/validator.py Validateur JSON-Schema draft-07 (sous-ensemble) · zéro dépendance pip
lib/generator.py projets_master.json → HTML (marque luxury #4)
lib/branding.py Tokens de marque (source unique · CLAUDE.md #4)
templates/site_public.html.tmpl Gabarit dark+doré (Fraunces + Cormorant Garamond)
fixtures/ Données synthétiques de test (⚠️ jamais publiées — cf. fixtures/README.md)
tests/test_publiciste.py Suite unittest (parser, schéma, generator)

Règles anti-invention appliquées (CLAUDE.md #6)

  • Le statut publié dérive de _META/version.json : complete → disponible, sinon en_developpement.
  • Rétrogradation défensive : un projet n'est « disponible » que si TOUTES ses typologies ont un prix USD numérique ; sinon → « En développement · Prochainement ».
  • Cellule vide / « non défini » / placeholder {{…}}null (jamais 0, jamais une valeur inventée).
  • Rendus : uniquement ceux référencés dans la faisabilité ( IA générique).

Utilisation

# depuis 05_deliverables_mvp/publiciste/

# Parser une data_room → projets_master.json (validé contre le schéma)
python3 publiciste.py parse fixtures/data_room -o build/projets_master.json

# Générer le site depuis un master validé
python3 publiciste.py generate build/projets_master.json -o build/index.html

# Pipeline complet
python3 publiciste.py run fixtures/data_room -o build/

# Tests
python3 -m unittest discover -s tests -v

⚠️ Ce worker n'écrit jamais sur le VPS. Le déploiement réel (copie vers /opt/oto/sites/vente/, cache-bust Cloudflare, notification WhatsApp) est un livrable ultérieur exécuté côté serveur par l'agent (Semaines 4-5).

Auto-score 4Big du livrable : 95/100

Réserve 5 : exécution contre les données réelles data_room/ (VPS, hors périmètre) différée ; triggers systemd/inotify + notifications WhatsApp = livrables Semaines 4-5 côté serveur ; génération EN/ES = Semaine 6.