documentation
Kohinos v3 Doc générée le commit f558098fa

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é InstallationCompleter avec 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}/modify dé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 edit ne 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/messenger pour 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 /documents publique.

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 via enumType Doctrine : SepaMandateStatus, RecurringRequestStatus, RecurringPurchaseStatus, GdprRequestStatus, EmailLogStatus, IbanChangeRequestStatus. Valeurs DB inchangées, API string conservée, accesseurs get/setStatusEnum().
  • Filet de couverture admins Sonata (#38) : SonataAdminCoverageTest (~90 routes list+create) + AbstractAdminTestCase, extension Twig kohinos_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, route account_statement), portail stats prestataire (route prestataire_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.sh détectant le drift entre .claude/rules/ et .windsurf/rules/.

Modifications

  • Dette 14 : QueryBuilder sortis des contrôleurs/services vers les repositories (trait OperationsByAccountQueryTrait, repositoryClass bindé), suppression des shims getContainer() 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 SEPA Solidoume 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_type survit au POST via hidden field, méthode resolveExpediteurType() centralisée.
  • Audit de tests : ReconversionFormTest passé de markTestIncomplete à vert via createAuthenticatedClientWithSessionContext().

Corrections

  • SsaReportService : null-safety sur manager.emlcAccount (lignes 230, 303, 571) — la commande kohinos:ssa:execute --test ne crashe plus sur Prestataire sans compte EMLC.
  • Bug Sonata FilterTypeGuesser + enum : HTTP 500 sur les listes recurring corrigé par ChoiceFilter::class explicite.
  • 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}/modify protégée par triple garde : access_control firewall, #[IsGranted('ROLE_ADHERENT')], et signature controller nullable + 404 propre.

Déploiement

  • cache:clear obligatoire (métadonnées Doctrine enumType), vider DEV_AUTO_LOGIN_EMAIL sur l'environnement cible, monitoring quotidien bin/ai-workflows/financial/check-invariants.php.
  • Reliquat CI : doctrine:schema:validate échoue sur le mapping Category (Sonata Classification, inversedBy manquant) — 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 @method sur CustomEntityManager.
  • 4 nouveaux invariants financiers exposés via bin/ai-workflows/financial/check-invariants.php.
  • Listener InteractiveLoginSubscriber + champ user.last_session_context JSON.

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.
Versions plus anciennes

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.