c0d2e21ef3
Livre le dernier volet ouvert de Sprint 4 : Frontend Console « 5 portails (Ventes/Construction/Achat/Compta/Direction) ». Contrainte #1 (ERPNext natif) : le portail de landing par rôle EST le DocType Workspace v15 → 5 Workspaces natifs. Anti-invention (#6) : rôles et DocTypes dérivés du contrat rbac_50_roles.json ; chaque lien/raccourci vise un DocType présent dans les permissions_cibles du portail (droit prouvé) ; couverture exhaustive ; flag custom issu du contrat ; tokens de marque repris verbatim de CLAUDE.md #4. CLI + 12 invariants + 19 tests (4 négatifs). Régression 260 tests verts. Hand-off VPS #8 documenté. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.9 KiB
3.9 KiB
Daily Report · 2026-07-30 · Claude Code DTP Worker (session 15)
Session : 20260730_072711
Tâche exécutée
Sprint 4 · Frontend Console — Générateur de Workspaces ERPNext (5 portails
rôle) (roadmap 04_roadmap/ROADMAP_8_WEEKS_OR_LESS.md §Sprint 4 l.49 :
« Frontend Console : 5 portails (Ventes/Construction/Achat/Compta/Direction) »).
Contexte / analyse
- Relu
CLAUDE.md,ROADMAP_8_WEEKS_OR_LESS.md, l'05_activity_log/2026-07-30.mdet les rapports sessions 11-14. - Constat : les deux autres volets de Sprint 4 sont livrés — CRM (workflow
vente s11, DocType porteur s12) et ERPNext Backend (commissions s13, e-CF DGII
s14). Le volet Frontend Console « 5 portails rôle » restait ouvert (aucun
artefact
portail/workspacedans le repo). - Décision d'architecture (contrainte #1 « ERPNext natif = priorité absolue
avant tout outil externe ») : dans ERPNext v15, le portail de landing par rôle
EST le DocType
Workspace(le desk affiche à l'utilisateur les Workspaces dont il détient un rôle autorisé). On livre donc 5 Workspaces natifs plutôt qu'un framework de dashboard externe.
Fichiers créés — 05_deliverables_mvp/frontend/portails/
portails_spec.json— mise en page des 5 portails (cartes, raccourcis, thème) ; ne déclare aucun DocType ni rôle hors du contrat RBAC.wslib/{__init__,frappe,builder}.py— connaissance Frappe (DocTypeWorkspace- enfants
shortcuts/links/roles+ blocscontent) + assemblage déterministe (dérive rôles et DocTypes du contratrbac_50_roles.json).
- enfants
workspaces_gen.py— CLIbuild/validate· 12 invariants de cross-cohérence.workspace.schema.json— contrat de sortie draft-07.out/{workspace,MANIFEST}.json— hand-off (commité).tests/test_workspaces.py— 19 tests (dont 4 négatifs).README.md·.gitignore.
Fichiers modifiés
.gitea/workflows/ci.yml: jobfrontend-portails-tests+ ajout augate.
Anti-invention (cœur · #6)
La source de vérité est le contrat RBAC, jamais la spec :
- Aucun lien / raccourci inventé : tout DocType visé (carte ou raccourci) doit
figurer dans les
permissions_ciblesdu portail → le portail a prouvablement le droit dessus (invariants 2-3, testés en négatif). - Couverture exhaustive et sans doublon des DocTypes autorisés par les cartes (aucun oubli silencieux — invariant 3).
- Rôles dérivés du contrat (mêmes rôles que le
Role Profiledu portail), triés ; 44 rôles restreints au total. - Flag
custom(DocType OTO à créer vs natif v15) lu dans le contrat (source unique — invariant 9). - Aucun chiffre stocké : raccourcis type DocType = compteur live du desk.
- Tokens de marque (
#0a0a12,#f0b429, Fraunces, Cormorant Garamond) repris verbatim de CLAUDE.md #4, chacun avecsource(invariant 11).
Résultat
5 Workspaces : 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).
Console technique plateforme exclue (roadmap = 5 portails métier ; invariant
d'égalité stricte avec portails_business).
Vérifs
- 19/19 tests ; gate CI local vert (guard + JSON + docs + YAML
ci.ymlOK). - Régression : 260 tests verts au total (241 + 19).
- Build déterministe (invariant 12 : deux passes identiques).
Hors périmètre worker (VPS · #8)
- Fixer
Workspace.moduleau module de l'app OTO à l'import (laissénull). - Créer les DocTypes custom avant import :
CONFOTUR Application,Faisabilité,Publiciste Log(issus des modules OTOV7 du contrat). - Déposer
workspace.jsondansfixtures/puisbench migrate. - Appliquer le thème luxury dark+doré (couche thème desk / Website Theme).
→ agent ERPNext Backend + Frontend Console (déploiement thème).
Auto-score 4Big : 96/100.