[DTP-Worker] Sprint 8 · buffer L75 · Fiches agents SEO/DevOps/Frontend/ONAPI cross-linkent leurs livrables in-repo (clôt le chantier cross-linking)
Les 4 dernières fiches du chantier (annoncées 'reste' par les sessions précédentes) listaient leurs livrables en code-spans nus : aucun chemin cliquable de la fiche vers l'artefact gated qui la réalise. Passage aux liens markdown relatifs, pattern déjà appliqué à faisabilite/publiciste/qa/erpnext/crm : - seo : colonne Sortie -> out/*.json + module -> README.md (5 liens) - devops : ci.yml + ci/README.md + deploy_runbook/README.md (3 liens) - frontend_console : portails/ + chat_otoia/ -> README.md (2 liens) - onapi_legal : confotur/ -> README.md (1 lien) Anti-invention #6 : 11 cibles verifiees existantes (test -f) avant edition ; 0 texte descriptif/chiffre modifie, 0 code touche (doc-only). Guards verts : check_docs exit 0 (0 lien interne casse) · guard_constraints exit 0. Regression inchangee (534 verts). Chantier cross-linking desormais complet sur les 13 agents. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -21,8 +21,8 @@ et vérifications HTTP restent côté **agent DevOps/ERPNext Backend**.
|
|||||||
|
|
||||||
| Module | Sprint | Rôle | Entrée | Tests |
|
| Module | Sprint | Rôle | Entrée | Tests |
|
||||||
|---|---|---|---|---|
|
|---|---|---|---|---|
|
||||||
| `.gitea/workflows/ci.yml` + `ci/` | 1 (roadmap L29) | **CI/CD Gitea Actions** : 3 guards blocants (contraintes / JSON / docs) + un job de tests par livrable gated + `gate` agrégateur + `e2e-baseline` | déclenché sur `push`/`pull_request` → `main` + `workflow_dispatch` | 22 suites gated |
|
| [`.gitea/workflows/ci.yml`](../../.gitea/workflows/ci.yml) + [`ci/`](../../ci/README.md) | 1 (roadmap L29) | **CI/CD Gitea Actions** : 3 guards blocants (contraintes / JSON / docs) + un job de tests par livrable gated + `gate` agrégateur + `e2e-baseline` | déclenché sur `push`/`pull_request` → `main` + `workflow_dispatch` | 22 suites gated |
|
||||||
| `05_deliverables_mvp/devops/deploy_runbook/` | 8 (roadmap L73) | **Run-book VPS unifié** : graphe de **7 phases ordonnées** couvrant TOUS les modules gated, dépendances inter-phases + confirmations préalables sourcées | `deploy_runbook_gen.py build\|validate` | 29 (dont 14 injections négatives) |
|
| [`05_deliverables_mvp/devops/deploy_runbook/`](../../05_deliverables_mvp/devops/deploy_runbook/README.md) | 8 (roadmap L73) | **Run-book VPS unifié** : graphe de **7 phases ordonnées** couvrant TOUS les modules gated, dépendances inter-phases + confirmations préalables sourcées | `deploy_runbook_gen.py build\|validate` | 29 (dont 14 injections négatives) |
|
||||||
|
|
||||||
### Le gate CI — trois guards blocants (`ci/`)
|
### Le gate CI — trois guards blocants (`ci/`)
|
||||||
- **`guard_constraints.sh`** : détecte l'**usage** (pas la simple mention) des
|
- **`guard_constraints.sh`** : détecte l'**usage** (pas la simple mention) des
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ le câblage de l'endpoint OTOIA et l'application du thème desk restent côté *
|
|||||||
|
|
||||||
| Module | Volet roadmap | Sortie | Métrique vérifiée |
|
| Module | Volet roadmap | Sortie | Métrique vérifiée |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| `portails/` | Sprint 4 (L49) — « 5 portails rôle » | `out/workspace.json` | **5 `Workspace` natifs v15** (`OTO Ventes` 4 cartes/11 liens/12 rôles · `OTO Construction` 4/9/10 · `OTO Achat` 3/8/5 · `OTO Compta` 4/11/8 · `OTO Direction` 4/14/9) |
|
| [`portails/`](../../05_deliverables_mvp/frontend/portails/README.md) | Sprint 4 (L49) — « 5 portails rôle » | `out/workspace.json` | **5 `Workspace` natifs v15** (`OTO Ventes` 4 cartes/11 liens/12 rôles · `OTO Construction` 4/9/10 · `OTO Achat` 3/8/5 · `OTO Compta` 4/11/8 · `OTO Direction` 4/14/9) |
|
||||||
| `chat_otoia/` | Sprint 6 (L63) — « Chat OTOIA embedded » | `out/{custom_block,chat_mount}.json` | **5 `Custom Block` + 5 configs runtime** (persona Amélie QC · langues FR/EN/ES · `endpoint: null`) |
|
| [`chat_otoia/`](../../05_deliverables_mvp/frontend/chat_otoia/README.md) | Sprint 6 (L63) — « Chat OTOIA embedded » | `out/{custom_block,chat_mount}.json` | **5 `Custom Block` + 5 configs runtime** (persona Amélie QC · langues FR/EN/ES · `endpoint: null`) |
|
||||||
|
|
||||||
- **Portails** : CLI `python3 workspaces_gen.py build|validate` · **12 invariants** ·
|
- **Portails** : CLI `python3 workspaces_gen.py build|validate` · **12 invariants** ·
|
||||||
**19 tests** · job CI `frontend-portails-tests` (gated).
|
**19 tests** · job CI `frontend-portails-tests` (gated).
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ worker n'écrit **jamais** sur le serveur.
|
|||||||
|
|
||||||
| Module | Volet roadmap | Sortie | Métrique vérifiée |
|
| Module | Volet roadmap | Sortie | Métrique vérifiée |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| `confotur/` | Sprint 5 (L55) — « Refactor `oto_module_confotur_application.py` → dépôts automatiques » | `out/{doctype_confotur_application,MANIFEST}.json` | **DocType `CONFOTUR Application`** custom **soumissible** v15 : **18 champs** (14 de donnée) · **4 sections** · **3 rôles/permissions** · **2 évènements de dépôt** |
|
| [`confotur/`](../../05_deliverables_mvp/legal/confotur/README.md) | Sprint 5 (L55) — « Refactor `oto_module_confotur_application.py` → dépôts automatiques » | `out/{doctype_confotur_application,MANIFEST}.json` | **DocType `CONFOTUR Application`** custom **soumissible** v15 : **18 champs** (14 de donnée) · **4 sections** · **3 rôles/permissions** · **2 évènements de dépôt** |
|
||||||
|
|
||||||
- **CLI** : `python3 confotur_application_gen.py validate|build` · **14 invariants** ·
|
- **CLI** : `python3 confotur_application_gen.py validate|build` · **14 invariants** ·
|
||||||
sortie déterministe (tri stable, zéro horodatage).
|
sortie déterministe (tri stable, zéro horodatage).
|
||||||
|
|||||||
@@ -21,13 +21,14 @@ génération du `sitemap.xml` et la soumission Google Search Console restent cô
|
|||||||
|
|
||||||
| Volet roadmap (L60) | Sortie | Métrique vérifiée |
|
| Volet roadmap (L60) | Sortie | Métrique vérifiée |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 200+ mots-clés FR/EN/ES | `out/seo_keywords.json` | **258** mots-clés (fr=87 · en=87 · es=84), chacun sourcé — cible min 200 / 50 par langue |
|
| 200+ mots-clés FR/EN/ES | [`out/seo_keywords.json`](../../05_deliverables_mvp/seo/out/seo_keywords.json) | **258** mots-clés (fr=87 · en=87 · es=84), chacun sourcé — cible min 200 / 50 par langue |
|
||||||
| schema.org | `out/seo_schema_org.json` | graphe JSON-LD : **10 nœuds** (`Organization` + 9 `Residence`) |
|
| schema.org | [`out/seo_schema_org.json`](../../05_deliverables_mvp/seo/out/seo_schema_org.json) | graphe JSON-LD : **10 nœuds** (`Organization` + 9 `Residence`) |
|
||||||
| hreflang | `out/seo_hreflang.json` | **10 pages** × FR/EN/ES + `x-default` |
|
| hreflang | [`out/seo_hreflang.json`](../../05_deliverables_mvp/seo/out/seo_hreflang.json) | **10 pages** × FR/EN/ES + `x-default` |
|
||||||
| compte-rendu | `out/MANIFEST.json` | comptes + cibles + hors-périmètre |
|
| compte-rendu | [`out/MANIFEST.json`](../../05_deliverables_mvp/seo/out/MANIFEST.json) | comptes + cibles + hors-périmètre |
|
||||||
|
|
||||||
CLI : `python3 seo_gen.py build|validate` · Job CI : `seo-tests` (`unittest
|
Module : [`05_deliverables_mvp/seo/`](../../05_deliverables_mvp/seo/README.md)
|
||||||
discover`) · **36 tests**, gated dans le pipeline.
|
(voir README) · CLI : `python3 seo_gen.py build|validate` · Job CI : `seo-tests`
|
||||||
|
(`unittest discover`) · **36 tests**, gated dans le pipeline.
|
||||||
|
|
||||||
## Source de vérité unique (zéro invention · #6)
|
## Source de vérité unique (zéro invention · #6)
|
||||||
La matière première est **`projets_master.json`**, la sortie canonique du
|
La matière première est **`projets_master.json`**, la sortie canonique du
|
||||||
|
|||||||
Reference in New Issue
Block a user