- CLAUDE.md devient un index concis : contexte, stack, regles absolues
numerotees, pointeurs vers les fichiers de regles detaillees via
references @.claude/rules/*.md
- Les conventions detaillees (architecture, backend, frontend, testing,
naming, git, workflow) sont extraites dans .claude/rules/ pour rester
chargees a la demande sans gonfler le context du CLAUDE.md principal
- Ajoute la regle absolue "Ne jamais mentionner Claude/IA dans commits
ou PR" (point 10) pour garder l'historique git signe par l'utilisateur
- 11 tests couvrant le login (3) et la visibilite sidebar par RBAC (8)
- 6 personas seedes via la commande app:seed-e2e, miroir cote front
dans frontend/tests/e2e/_fixtures/personas.ts
- Page Objects (LoginPage, SidebarComponent) avec selecteurs stables
par href + loginAs programmatique via cookie BEARER
- Targets Makefile : seed-e2e, test-e2e, test-e2e-ui, install-e2e-deps
- CLAUDE.md + README.md : workflow E2E + regle d'or "un E2E par bug
prod uniquement" pour garder la suite maintenable dans la duree
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Implemente le journal d'audit append-only sur toutes les mutations Doctrine
des entites portant #[Auditable]. Couvre les 5 tickets de doc/audit-log.md :
1. Table PG audit_log (uuid PK, jsonb changes, index entity/time/performer)
+ AuditLogWriter (DBAL connexion dediee audit, blacklist defense-in-depth
sur password/plainPassword/token/secret) + RequestIdProvider (UUID v4 par
requete HTTP principale).
2. Attributs Auditable / AuditIgnore dans Shared/Domain/Attribute/
+ AuditListener (onFlush capture + postFlush ecriture hors transaction ORM,
pattern swap-and-clear, erreurs loguees jamais propagees). User annote.
3. API Platform read-only /api/audit-logs (permission core.audit_log.view)
avec filtres entity_type / entity_id / action / performed_by / plage
performed_at + DbalPaginator implementant PaginatorInterface (hydra:view
genere automatiquement).
4. Page admin /admin/audit-log : tableau pagine, filtres persistes en query
params, row expandable (diff + timeline de l'entite), entree sidebar avec
permission. Composable useAuditLog avec resetAuditLog() auto-enregistre
sur onAuthSessionCleared.
5. Composant AuditTimeline reutilisable : garde permission, lazy loading,
dates relatives FR, skeleton loader.
Fix connexe : phpunit.dist.xml forcait APP_ENV=dev via <env> ce qui cablait
framework.test=false et rendait test.service_container indisponible ; le
JWT_PASSPHRASE ne matchait pas non plus les cles dev. Corrige en meme temps
pour debloquer la suite de tests.
Update CLAUDE.md to reflect actual ports (PG 5437, frontend 3004).
Fix CHANGELOG.md header from "Ferme" to "Coltura".
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Backend: Domain/Application/Infrastructure/Api layers per bounded context.
Frontend: domains/{context}/ modules with isolated components/services/stores.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>