- React 19 + Vite + Tailwind v4 : tokens.css copié tel quel (source de vérité), classes composants extraites de la maquette validée, Manrope auto-hébergée, primitives shadcn-style possédées (Button cva, menu Radix) - connexion fidèle à la maquette ; liste démo affichée seulement si /auth/demo-accounts répond (404 ⇒ rien — ADR-002, l'API seule source) - coquille : sidebar 4 groupes avec rail safran actif (écrans futurs marqués R1-R3), topbar recherche/thème/chip DÉMO + sélecteur de rôle (bascule 101 ms, critère < 3 s) ; page /design = référence vivante des revues pixel - règle d'or : schema.d.ts généré depuis docs/openapi.json et committé (openapi-typescript + openapi-fetch) - tokens.css : tokens --nav-* ajoutés (valeurs de la maquette validée) ; seed réaligné sur les personas de la maquette - vérifié en navigateur réel (Playwright + Chrome headless) : 7 captures, parcours démo complet, bi-thème, zéro erreur console ; typecheck + vitest + build OK Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6.1 KiB
Journal de bord — SIOP V2
Trace chronologique des sessions (la plus récente en premier). Le playbook (docs/0X-*) est le livre ; ici, c'est le quotidien.
2026-07-15 — Pr. Daaif (+ Claude) — R0.11 : apps/web (connexion + sélecteur démo, coquille, /design)
Actions
apps/web(React 19 + Vite + Tailwind v4) :tokens.csscopié tel quel depuis 02-design ; classes composants extraites de la maquette validée ; Manrope auto-hébergée (@fontsource) ; primitives shadcn-style possédées (Button/variants cva, menu Radix).- Client typé :
pnpm generate:client→src/api/schema.d.tsgénéré depuisdocs/openapi.jsonet committé (règle d'or) ; openapi-fetch + injection du jeton. - Écrans : connexion (fidèle maquette, liste démo masquée si l'API répond 404 — ADR-002), coquille sidebar (4 groupes, rail safran actif, écrans à venir marqués R1-R3) + topbar (recherche ⌘K, bascule de thème, chip DÉMO, sélecteur de rôle dans le menu compte), /design (référence vivante : nuanciers, typo, boutons, pastilles), tableau de bord R0 minimal.
- Compléments : tokens
--nav-*ajoutés àtokens.css(valeurs issues de la maquette validée) ; seed réaligné sur les personas de la maquette (Salma Idrissi, Ahmed Benali, …) pour des revues pixel cohérentes. - Vérifié dans un vrai navigateur (Playwright + Chrome headless) : parcours démo-login → tableau de bord → bascule Dispatcher→Technicien en 101 ms (critère < 3 s) → /design clair & sombre ; 7 captures, zéro erreur console. Typecheck, 3 tests vitest, build prod OK.
Décisions
- Le web ne lit pas
VITE_DEMO_MODE: la présence du mode démo est déduite de la réponse de/auth/demo-accounts(404 ⇒ rien n'est affiché) — une seule source de vérité, l'API. - Les entrées de navigation des releases futures restent visibles mais inertes, marquées R1/R2/R3 — le périmètre est annoncé, pas simulé.
Prochaine étape : R0.12 — CI GitHub Actions (lint, typecheck, tests, couverture api ≥ 70 %, ci-contract sur openapi.json/clients, Playwright du parcours démo) puis R0.13 Dockerfiles + runbook Dokploy.
2026-07-15 — Pr. Daaif (+ Claude) — R0.10 : apps/api complète (auth, matrice, démo-login, seed)
Actions
packages/shared: vocabulaires (7 rôles, 10 catégories d'objets), schémas Zod (auth, profil, santé) et contrat d'API ;pnpm contractgénèredocs/openapi.json(committée — règle d'or ADR-001).apps/api(NestJS 11 + Prisma 6) : migrationr0_identity(Role/Permission/User) ; guard JWT global fermé par défaut (+@Public()explicite) ; PermissionsGuard (@RequirePermission, matrice relue en base, cache 60 s) ;FileStorage(seul point d'import MinIO) ;/health(base, Redis, stockage).- Démo-login ADR-002 : module enregistré uniquement si
DEMO_MODE=true(sinon routes 404), double verrou production (DEMO_MODE_I_KNOW), refus des comptesisDemo=false. - Seed idempotent : 7 rôles, matrice complète (70 lignes), 7 comptes démo (mot de passe commun
SEED_DEMO_PASSWORDpour la connexion classique). - Vérifié bout-en-bout : 19 tests Jest verts (dont e2e démo on/off) ; smoke test sur build de prod — démo-login →
/users/meavec matrice, 401 sans jeton, healthok.
Décisions
AppModule.forRoot()(module dynamique) pour rendre l'enregistrement conditionnel du module démo testable dans les deux états — le e2e « routes absentes » est l'exigence n°1 de l'ADR-002.- Le seed n'écrase jamais une ligne de matrice existante : la base est la source de vérité des droits, le fichier n'est que le point de départ.
Prochaine étape : R0.11 apps/web — login + sélecteur de comptes démo (fidèle à maquette-web.html), coquille sidebar/topbar avec bandeau « DÉMO », page /design, client typé généré depuis docs/openapi.json.
2026-07-15 — Pr. Daaif (+ Claude) — R0 : maquettes VALIDÉES ; architecture + squelette
Actions
- Maquettes HD validées par le référent → le design est la loi des revues pixel.
- 03-architecture : ADR-001 (stack), ADR-002 (démo-login
DEMO_MODE, double verrou prod), vue C4, modèle de données R0 (Role/Permission/User,isDemo). - Racine monorepo (pnpm + turbo, Node 24) ;
infra/: compose local (PostgreSQL 18 pgvector+PostGIS via Dockerfile dédié, Redis, MinIO).
Décisions
- Convention
siop2-pour tous services/conteneurs Docker (référent — collisions sur le réseau partagé Dokploy en v1).
Prochaine étape (reprise) : R0.10 apps/api (auth JWT + matrice permissions + démo-login + seed) → R0.11 apps/web (login + sélecteur démo + coquille + /design) → R0.12 CI → R0.13 prépa Dokploy.
2026-07-15 — Pr. Daaif (+ Claude) — R0 : kickoff, vision, cadrage, design
Actions
- Refondation décidée : nouveau dépôt
siop-spelev/siop2, 100 % nouveau code ; la v1 (siop) est gelée comme référence. Jalons R0→R5 créés. - Playbook initialisé : 00-vision (charte projet, personas, benchmark Atlas), 01-cadrage (plan de releases avec DoD, user-story map, exigences non fonctionnelles mesurables, registre des risques).
- 02-design : charte graphique (bleu-treuil / safran / acier, Manrope, motif « rail »),
tokens.css(source de vérité, bi-thème), palettes analytics validées par script (CVD + contraste, modes clair et sombre), maquettes HD navigables (7 écrans : connexion + démo-login, tableau de bord, liste OT, fiche OT avec bilan codé, fiche ascenseur + QR, portail demandeur, mobile technicien) — publiées pour revue.
Décisions (référent, via questions)
- Diagnostic v1 : esthétique absente, docs éparpillées, périmètre dérivant, bascule de comptes pénible → V2 design-first, playbook en livre, releases fermées, sélecteur de compte démo (
DEMO_MODE) dès R0. - 100 % nouveau code ; périmètre v1 = web + mobile + IA par paliers ; déploiement Dokploy ; nom conservé : SIOP.
Prochaine étape : validation de la charte + maquettes par le référent (bloquant — aucun code applicatif avant), puis 03-architecture + squelette monorepo.