Changelog public Kohinos
Cette page présente les cinq dernières versions de Kohinos sous deux angles :
un récapitulatif fonctionnel pour les utilisateurs et les trésoriers, et un récapitulatif
technique pour les développeurs. Les versions plus anciennes restent disponibles
intégralement dans les fichiers source CHANGELOG_USER.md et CHANGELOG.md
du dépôt, et la liste structurée des releases est sur la page Versions.
Pour les utilisateurs et trésoriers
Issu de CHANGELOG_USER.md. Ouvrez chaque version pour voir le détail des ajouts, corrections et impacts métier.
À venir — non encore publié — nouveaux outils trésorier & prestataire, durcissement financier (revue v3 : 🟢 GO CANARY)
Ajouts
- Tableau de bord trésorier : indicateurs consolidés de la monnaie locale sur un écran unique.
- Notification adhérent en cas d'échec de prélèvement SEPA : l'adhérent est prévenu par e-mail si son prélèvement échoue.
- Relevé de compte téléchargeable en PDF et CSV (adhérents et prestataires) depuis l'espace personnel.
- Portail statistiques prestataire : 4 indicateurs clés et graphiques d'activité.
- Saisie de dons en admin avec choix explicite adhérent / prestataire et confirmation avant débit pour les dons en eMLC.
- Deux nouveaux écrans dans le wizard d'installation : identité visuelle & SEO (étape 6bis) et conformité RGPD (étape 6ter).
- Étape HelloAsso : URL pour les dons (facultatif) — un bouton « Faire un don » apparaît si renseigné.
- Étape SEPA : jour mensuel de prélèvement des achats récurrents (1–28).
Modifications
- Finalisation de l'installation refactorée en service dédié
InstallationCompleteravec transaction unique pour garantir la cohérence. - Auto-création élargie des groupes utilisateur (Super Admin, Prestataire, Adhérent, Caissier, Trésorier) sur une base vierge.
Corrections
- Filtre SSA par fonds : erreur 500 sur l'admin SSA corrigée.
- Bouton « Continuer » bloqué après retour navigateur (bfcache) — restauré automatiquement.
- Boutons « Retour » du wizard corrigés en mode SSA seule, sans HelloAsso, et autour de l'étape SEPA.
- Date annuelle de prélèvement SEPA correctement respectée à l'installation (avant : forcée au 9 janvier).
Sécurité & fiabilité financière
- Route
/adherent/sepa/subscription/{id}/modifydésormais protégée par firewall : plus de 500 sur utilisateur anonyme. - Revue complète v3 : durcissement sécurité (gardes IBAN, CSRF, contrôles d'accès) et renforcement des garde-fous financiers (impossible de prélever deux fois, vérification systématique des soldes avant remboursement). Aucune faille exploitable.
3.3.0 — 2026-04-22 — renforcement sécurité concurrence et idempotence financière
Ajouts
- 4 nouveaux invariants financiers via
php bin/ai-workflows/financial/check-invariants.php: détection de Flux sans operations, doublons d'import historique, chaînage crypto cassé. - Mémorisation du dernier contexte choisi par les utilisateurs multi-rôles (prestataire / comptoir / groupe).
Modifications
- Double-clic admin sans conséquence sur « Valider l'achat monnaie » et « Associer une transaction HelloAsso ».
- Webhook HelloAsso SSA rejouable sans risque : pas de re-création de cotisation.
- Boutons « Ajouter cotisation gratuite » migrés GET → POST avec jeton CSRF.
- Import CSV historique désormais atomique par ligne.
Corrections
- Page d'accueil vide après déconnexion/reconnexion (multi-rôles) corrigée par restauration automatique du contexte.
- Erreur 500 « Child _token does not exist » à la validation de transaction, cotisation, achat monnaie, change MLC — corrigée.
Sécurité
- Permission map Sonata respectée sur les actions de cotisation gratuite (un admin sans droit
editne peut plus les déclencher).
v3.2.0 — 2026-04-07 — automatisation des tâches et supervision
Ajouts
- Tâches automatiques planifiées via Symfony Messenger & Scheduler (SEPA, SSA, cotisations MLC, purge RGPD, archivage emails) : plus besoin de cron système externe.
- Dashboard de supervision
/admin/messengerpour les super-admins : files de traitement, tâches planifiées, messages en erreur. - Bibliothèque de documents en ligne : upload PDF côté admin, page
/documentspublique.
Modifications
- Verrouillage anti-doublon sur les tâches planifiées même en charge serveur élevée.
Corrections
- Nettoyage de tables legacy (
prestataire_user,user_adherent) et correction de contraintes FK.
Sécurité
- Alertes email possibles via la commande de surveillance du scheduler en cas d'échec de traitement automatique.
v3.1.1 — 2026-04-02 — fiabilité des paiements HelloAsso et PayZen
Ajouts
- 57 nouveaux tests couvrant les callbacks HelloAsso et PayZen, retours de paiement, et cas d'erreur (token expiré, paiement refusé).
Modifications
- Appels vers l'API HelloAsso et Boffice protégés par un timeout de 10 secondes.
Corrections
- Page de retour PayZen qui restait bloquée dans certaines configurations : redirection vers confirmation rétablie.
Sécurité
- Garantie d'absence de doublon ou de perte de paiement sur les webhooks (idempotence renforcée).
v3.1.0 — 2026-03-29 — modernisation technique et fiabilité
Ajouts
- Guide Docker Compose complet pour l'installation.
- Documentation étendue des outils qualité : Rector, Psalm, Infection, PHPMD.
Modifications
- Code aligné sur les standards PHP 8.4 (typage strict, vérifications renforcées).
- Architecture protégée par Deptrac : 8 couches et 10 règles vérifiées automatiquement.
Corrections
- Notification email de flux affichant un type d'utilisateur incorrect — corrigée.
Sécurité
- Vérifications de types plus strictes dans les contrôleurs SEPA, HelloAsso et import.
Pour les développeurs
Issu de CHANGELOG.md. Détail par version : classes touchées, migrations, breaking changes.
Unreleased — revue v3 (🟢 GO CANARY), enums PHP 8.1, filet admins Sonata, outillage IA
Ajouts
- Revue complète v2.8.8 → v3 par 9 agents d'audit : rapport
docs/review-v3/RAPPORT_REVUE_V3.md(+ version HTML). Verdict passé de 🟠 NEEDS WORK à 🟢 GO CANARY (phases 1-5 terminées). Bilan qualité 2026-06-12 : PHPStan 0 hors baseline, php-cs-fixer 0/1234, SSA 127 ✅ / SEPA 140 ✅, 0 vulnérabilité (composer + npm), déprécations 100 % vendor. - 6 enums PHP 8.1 sous
src/Enum/(#39) mappés viaenumTypeDoctrine :SepaMandateStatus,RecurringRequestStatus,RecurringPurchaseStatus,GdprRequestStatus,EmailLogStatus,IbanChangeRequestStatus. Valeurs DB inchangées, API string conservée, accesseursget/setStatusEnum(). - Filet de couverture admins Sonata (#38) :
SonataAdminCoverageTest(~90 routes list+create) +AbstractAdminTestCase, extension Twigkohinos_entity_exists()pour les références soft-deleted. - Fonctionnel #40 : dashboard trésorier, notification adhérent échec SEPA (
docs/sepa/NOTIFICATION_ADHERENT_ECHEC_PRELEVEMENT.md), relevé compte PDF/CSV (AccountStatementService, routeaccount_statement), portail stats prestataire (routeprestataire_stats). - Configuration Windsurf complète (
.windsurf/rules/,.windsurf/workflows/) parallèle à.claude/: 10 rules structurelles, 6 rules d'expertise, 16 workflows. - 25 nouveaux subagents Claude Code et 40+ slash commands sous
.claude/agents/et.claude/commands/. - Politique MCP local-only (
.claude/rules/mcp-policy.md) : anti-SaaS, souveraineté priorité 2. - Script
scriptsperso/check-rules-drift.shdétectant le drift entre.claude/rules/et.windsurf/rules/.
Modifications
- Dette 14 : QueryBuilder sortis des contrôleurs/services vers les repositories (trait
OperationsByAccountQueryTrait,repositoryClassbindé), suppression des shimsgetContainer()Sonata. Dette 15 : 66 erreurs PHPStan hors baseline → 0, baseline ramenée 2790 → 2591. - Invariants financiers V1-V10 : vérifs de solde avant remboursement, verrous inter-services
sepa:processing:*, référence SSA SEPASolidoume cotisation {YYYYMM}, transaction unique, garde mandat actif au débit. - N+1 sur les crons SSA/SEPA résolus par méthodes repo dédiées.
DonAdmin:expediteur_typesurvit au POST via hidden field, méthoderesolveExpediteurType()centralisée.- Audit de tests :
ReconversionFormTestpassé demarkTestIncompleteà vert viacreateAuthenticatedClientWithSessionContext().
Corrections
SsaReportService: null-safety surmanager.emlcAccount(lignes 230, 303, 571) — la commandekohinos:ssa:execute --testne crashe plus sur Prestataire sans compte EMLC.- Bug Sonata
FilterTypeGuesser+ enum : HTTP 500 sur les listes recurring corrigé parChoiceFilter::classexplicite. - 7 corrections a11y P0 (WCAG) sur les templates Twig + fix bouton d'annulation de mandat.
Sécurité
- Phases 1-2 de la revue : B1-B8 (bloquants), S1-S4 (fail-closed IBAN, garde dev, IsGranted/CSRF), M5-M16 — tous corrigés en TDD strict.
/adherent/sepa/subscription/{id}/modifyprotégée par triple garde :access_controlfirewall,#[IsGranted('ROLE_ADHERENT')], et signature controller nullable + 404 propre.
Déploiement
cache:clearobligatoire (métadonnées DoctrineenumType), viderDEV_AUTO_LOGIN_EMAILsur l'environnement cible, monitoring quotidienbin/ai-workflows/financial/check-invariants.php.- Reliquat CI :
doctrine:schema:validateéchoue sur le mappingCategory(Sonata Classification,inversedBymanquant) — pré-existant, non financier, à corriger pour une CI 100 % verte.
3.3.0 — 2026-04-22 — renforcement sécurité concurrence (race conditions P0/P1 + invariants)
Ajouts
transactional()+ annotations@methodsurCustomEntityManager.- 4 nouveaux invariants financiers exposés via
bin/ai-workflows/financial/check-invariants.php. - Listener
InteractiveLoginSubscriber+ champuser.last_session_contextJSON.
Modifications
- Migration progressive des actions sensibles GET → POST avec CSRF token (cotisation gratuite, validations achats).
- Import CSV historique passé en transaction par ligne (atomicité fine).
Corrections
- Régression CSRF du 2026-04-20 :
OutOfBoundsException: Child "_token"corrigée en lisant_token_kohinos. - Perte du contexte User multi-rôles après logout/login — Phase 1 (capture régression) + Phase 2 (correctif).
Sécurité
- Double-clic admin idempotent (lock + flag
just_processed) sur les flux MLC et SSA. - Webhook HelloAsso SSA idempotent : re-jeu sans re-création de cotisation.
v3.2.0 — 2026-04-07 — Symfony Messenger & Scheduler, automatisation des cron
Ajouts
- Symfony Messenger + Scheduler configurés pour orchestrer SEPA, SSA, cotisations MLC, purge RGPD.
- Page
/admin/messenger(super-admin) : visualisation des files et messages en erreur. - Couverture tests paiements : bugfix PayZen Notify.
Modifications
- Lock Messenger pour éviter les doublons d'exécution sous charge.
- Nettoyage de tables legacy (
prestataire_user,user_adherent).
Corrections
- Contraintes FK fiabilisées sur les tables nettoyées.
Sécurité
- Commande de surveillance du scheduler pour alerte email en cas d'échec d'un job financier.
v3.1.1 — 2026-04-02 — robustesse paiements externes
Ajouts
- 57 tests supplémentaires sur les callbacks HelloAsso et PayZen.
Modifications
- Timeout 10s sur les appels HelloAsso et Boffice via le client HTTP Symfony.
Corrections
- Bug PayZen Notify : page de retour bloquée dans certains scénarios — corrigée.
Sécurité
- Vérifications d'idempotence renforcées sur les webhooks de paiement.
v3.1.0 — 2026-03-29 — modernisation Rector PHP 8.4 / Symfony 7.4
Ajouts
- Configuration Deptrac (8 couches, 10 règles).
- Configurations Psalm, Infection, PHPMD documentées.
- Guide Docker Compose pour l'installation locale.
Modifications
- Refactoring Rector massif : typage strict, déclarations modernes, type hints renforcés sur les contrôleurs SEPA / HelloAsso / Import.
Corrections
- Notification email
FluxNotificationService: type d'utilisateur incorrect affiché dans le template.
Sécurité
- Types stricts sur les payloads contrôleurs : surface d'erreur réduite côté entrées non validées.
Pour les versions antérieures à v3.1.0 (v3.0.x, v2.9.x, v2.8.x, v2.6.x…), consultez
directement les fichiers CHANGELOG_USER.md et CHANGELOG.md à la racine
du dépôt, ou la page Versions qui agrège la liste structurée
des releases.