[DTP-Worker] Sprint 2 · Publiciste scaffold (parser faisabilité → JSON + generator + gate)

Livrable Publiciste · Sprint 2 · Semaine 2 (seul module net-neuf · chemin
critique · GAP_ANALYSIS §3.13). Cible portage VPS : otoia/capabilities/publiciste.py.

- lib/parser.py : data_room/PXX/ (template v1.0) → projet dict conforme au
  contrat projets_master.schema.json (livré S1). Mapping colonnes par en-tête,
  parsing montants USD/DOP robuste. Anti-invention #6 : rétrogradation défensive
  « en_developpement » si prix USD manquant ; absent → null (jamais 0/inventé).
- lib/validator.py : validateur JSON-Schema draft-07 (sous-ensemble) ZÉRO
  dépendance pip (runner Gitea sans pip). Oracle jsonschema en test si présent.
- lib/generator.py + template + branding : rendu HTML luxury #4 (dark+doré,
  Fraunces + Cormorant Garamond) ; sans prix → « Prochainement · Détails à venir ».
- publiciste.py : CLI parse/validate/generate/run.
- fixtures/ : données SYNTHÉTIQUES de test (jamais publiées) P01 complète + P02
  incomplète.
- tests/ : 23 tests unittest (stdlib) verts.
- CI : job publiciste-tests ajouté au gate (.gitea/workflows/ci.yml · Gitea #2).

Vérifs (en-repo, sans VPS) : 23/23 tests verts · gate CI local vert (guard/JSON/
docs) · pipeline CLI produit un master conforme au schéma. Auto-score 4Big 95/100.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 01:37:47 +00:00
parent 1a87b22fd7
commit f0a7d71357
23 changed files with 1535 additions and 1 deletions
@@ -0,0 +1,6 @@
# Résidence Fixture Dos
> ⚠️ FIXTURE SYNTHÉTIQUE — faisabilité volontairement INCOMPLÈTE (prix manquants).
- **Localisation** : Test Province Dos · Municipalité Fixture
- Zonage : Résidentiel touristique
@@ -0,0 +1,10 @@
# Architecture — Résidence Fixture Dos (SYNTHÉTIQUE · INCOMPLÈTE)
## 3.2 Tableau des typologies
> Prix « à partir de » NON défini → faisabilité incomplète → « En développement ».
| Typologie | Nb unités | Surface intérieure (m²) | Surface terrasse (m²) | Surface totale (m²) | Prix « à partir de » (USD) | Prix (DOP) |
|---|---|---|---|---|---|---|
| Villa A | 6 | 180 | 60 | 240 | non défini | non défini |
| Villa B | 4 | 220 | 80 | 300 | — | — |
@@ -0,0 +1,5 @@
# Paysage & Expérience — Fixture Dos (SYNTHÉTIQUE)
## 3.3 Services inclus
- Sécurité 24/7
- Espaces verts paysagers
@@ -0,0 +1,9 @@
{
"projet": "P02",
"template_version": "1.0.0",
"generated_at": "2026-07-30T00:00:00Z",
"score_4big": 71,
"statut_faisabilite": "incomplete",
"volets_complets": ["masterplan", "architecture"],
"champs_manquants": ["3.2.typo_1_prix_usd", "3.2.typo_2_prix_usd"]
}