Resout les 5 findings de la review automatique + couverture ManyToMany
annoncee dans CLAUDE.md :
- AuditListener : resolution de la classe via ClassMetadata plutot que
`$entity::class` direct (defense proxy Doctrine : sous ORM 2 les lazies
sont des `Proxies\__CG__\...`). Test de regression via getReference().
- AuditListener : capture des modifications de collections to-many
(OneToMany / ManyToMany) via getScheduledCollectionUpdates /
getScheduledCollectionDeletions. Les diffs sont mergees dans le
changeset existant ou creent une entree "update" dediee.
- AuditLogResource + Provider : filtre multi-valeurs
`entity_type[]=X&entity_type[]=Y` (IN clause DBAL via
ArrayParameterType::STRING), endpoint `/audit-log-entity-types` pour
alimenter le MalioSelectCheckbox cote front.
- audit-log.vue : refonte complete. Passage a `MalioDataTable`,
composants `Malio*` (MalioInputText, MalioSelectCheckbox, MalioButton),
suppression complete de la persistance URL (`readQuery` / `syncQuery`
/ `route.query`). `datetime-local` conserve avec TODO pointant
l'exception CLAUDE.md.
- AuditTimeline : fix du saut d'items 11-30. `PAGE_SIZE = 10` aligne
avec un `itemsPerPage=10` passe au backend. Token anti-race pour
ignorer les reponses tardives quand l'entite affichee change.
- AuditLogDetail : affichage des diffs de collections to-many (+ / -)
dans le tableau field/old/new existant.
- logout.vue : ajout du `resetAuditLog()` au logout pour eviter qu'un
user suivant (meme onglet) voie l'etat audit de l'ancien.
- Permission / Role / Site : marquage `#[Auditable]`.
- Version bump 0.1.32 → 0.1.34.
Tests : 228 / 228 (221 assertions → 851, dont regressions proxy + M2M).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>