Journal des Modifications
Historique complet des améliorations et corrections du Portail AQDR.
6 versions
v1.6.0Dernière version
2026-05-08Renommage — Portail AQDR
- L'application s'appelle maintenant **Portail AQDR** (était AQDR M3) — titre de page, sidebar, dumps SQL, journal des modifications
- Domaine : `portail.aqdr.org` configuré dans Vercel
Menu Développement (nouveau)
- Nouvelle section **Développement** dans la navigation latérale (couleur violette, icône Terminal)
- Page `/admin/dev` — Connexion & Synchronisation BD — protégée par la clé Super Admin
- **Connexion MySQL source** : formulaire (hôte, port, utilisateur, mot de passe, base de données) avec bouton de test de connexion ; liste toutes les tables avec leur nombre de lignes
- **Synchronisation vers Railway** : sélection individuelle ou globale des tables, lancement du sync avec journal en temps réel (terminal vert) et progression par table ; les tables absentes dans Railway sont créées automatiquement ; utilise `INSERT IGNORE` pour ne pas écraser les données existantes
- **Lien rapide** vers la page Sauvegarde BD existante
- Note explicative sur la destination (DATABASE_URL = Railway) et le comportement du sync
v1.5.0
2026-05-07Dump SQL — barre de progression + taille illimitée
- Le dump SQL utilise maintenant un **ReadableStream** (chunked transfer) : les données sont envoyées au navigateur au fur et à mesure sans jamais charger tout le fichier en mémoire serveur
- Barre de progression en temps réel affichant les octets reçus et une animation pulsante pendant le transfert
- Taille maximale retirée (anciennement 100 MB) — fonctionne pour des bases de données de plusieurs Go
- Bouton **Annuler** disponible pendant le transfert ; bouton **Reprendre** affiché si la connexion est coupée
- La barre vire au vert (succès) ou au rouge (erreur) avec message détaillé
Utilisateurs & Accès — Création d'un nouvel utilisateur
- Le bouton **Nouvel Utilisateur** ouvre maintenant un modal fonctionnel
- Champs : identifiant (login), nom d'affichage, courriel, mot de passe (min. 8 caractères), rôle
- Rôles disponibles : Éditeur, Gestionnaire de section, Administrateur National
- Création dans `wp_users` + insertion des métadonnées `wp_capabilities` et `wp_user_level`
- Détection automatique des doublons (login ou courriel déjà existant)
- La liste se rafraîchit automatiquement après la création
Utilisateurs & Accès — Modification fonctionnelle
- Le bouton **Modifier** ouvre maintenant un modal permettant de changer : nom d'affichage, courriel, rôle
- Le bouton **Désactiver / Activer** bascule le compte entre `editor` et `usager_desactive`
Transactions — Données réelles depuis le CPT
- La page Transactions lit maintenant les enregistrements `post_type='transaction'` dans `wp_posts`/`wp_postmeta` au lieu de la table de résumé `wp_transactions`
- Affiche : date et heure précise, matricule du membre, section, type (renouvellement/adhésion/don), mode de paiement avec icônes, nombre d'années, montant, numéro de chèque / ID Stripe / ID PayPal
Mode sombre
- Correction du mode sombre (classe `.dark` maintenant définie explicitement dans `globals.css`)
- La bascule clavier fonctionne correctement en ajoutant/retirant la classe sur `<html>`
Migration Railway
- Script `migrate.mjs` amélioré : reprise automatique depuis le dernier point de contrôle (INSERT IGNORE + offset)
- Inclut maintenant les CPTs `transaction` dans `wp_posts` et leurs `wp_postmeta` associées
- `SET sql_mode='NO_ENGINE_SUBSTITUTION'` pour compatibilité avec les valeurs de date zéro de WordPress
v1.3.0
2026-04-23Tableau de bord amélioré (inspiré des widgets WordPress)
- **Widget Paiement Rapide** — recherche d'un membre par numéro matricule, affiche son dossier et permet d'enregistrer un paiement sans quitter le tableau de bord (inspiré du widget WP `add_paiement_widget`)
- **Renouvellements du mois** — liste en temps réel des membres dont la date de renouvellement est ce mois-ci (mois + année courants)
- **Statistiques par section** — graphique à barres proportionnelles montrant le nombre de membres par section (top 8)
- **Membres expirés** — compteur cliquable vers la liste filtrée
- Carte de statistique « Renouvellements dus » maintenant calculée en temps réel depuis la base de données
Dossier membre — Impression (inspiré des vues PHP du thème)
- **Lettre d'abonnement** — page imprimable générée avec adresse, section et numéro de membre
- **Lettre de renouvellement** — avis de renouvellement avec date d'expiration et montant de cotisation
- **Deuxième avis de renouvellement** — version avec encadré d'avertissement urgence
- **Carte de membre** — carte plastifiée imprimable avec matricule en gras
- Toutes les impressions s'ouvrent dans un nouvel onglet et proposent `Imprimer / Fermer`
Dossier membre — Courriel (inspiré du widget Email WP)
- Boutons : Courriel d'abonnement, Courriel de renouvellement, Courriel du dernier avis, Courriel TEST
- Chaque envoi est **loggé automatiquement** dans l'historique des communications (CPT `communication` avec `wpcf-type-de-communication`)
- Indicateur visuel par bouton (en cours / envoyé / erreur)
- Section Communications de l'onglet affiche maintenant les vrais enregistrements issus de la base de données
Dossier membre — Sauvegarde automatique
- Délai de 1,5 seconde après chaque modification d'un champ
- Badge flottant en bas à droite : « Sauvegarde... / Sauvegardé / Erreur »
- Fonctionne sur tous les onglets (Général, Démographie, Abonnement)
Transfert de membres (nouvelle fonctionnalité)
- Page `/transferts` — gestionnaire de demandes de changement de section
- Un gestionnaire de section soumet une demande (membre, section actuelle → nouvelle section, motif)
- Un administrateur national peut **Approuver** (applique le changement sur `wpcf-section-du-membre`) ou **Refuser**
- Historique des demandes avec filtre par statut (En attente / Approuvés / Refusés / Tous)
- Lien « Transferts » ajouté dans la navigation principale
Corrections
- **Date de naissance** — était stockée en timestamp Unix (strtotime) dans WordPress. Maintenant convertie correctement en `YYYY-MM-DD` pour l'input HTML, et reconvertie lors de la sauvegarde
- Onglet Communications du dossier membre affiche maintenant les vraies données filtrées par ID membre
- Onglet Transactions du dossier affiche un compteur dans l'onglet
- API route `/api/membres/recherche?matricule=` ajoutée pour la recherche côté client
v1.2.0
2026-04-23Adaptations depuis le thème WordPress AQDR
- Modèle de données membres complet (appellation, extension, capitale, newsletter, adresse invalide, décédé, mois/année renouvellement)
- Logique de statut corrigée (post_status = publish/draft)
- Formulaire de paiement intégré au dossier membre
- Sections locales : conseil d'administration, frais, site web, fax
- MemberTransactionRepository pour les transactions individuelles (CPT `transaction`)
- Nouveau formulaire membre avec tous les champs WP
v1.1.0
2026-04-23Améliorations
- Topbar ajouté dans la mise en page
- Filtres unifiés dans la liste des membres (recherche + section + statut)
- Page Transactions : pagination + style + filtre par type
- Page Communications : style amélioré + pagination
- Sections : bouton « Voir les membres » fonctionnel
- Journal des modifications dans la navigation
v1.0.0
2026-04-01Lancement initial
- Tableau de bord avec statistiques en temps réel
- Gestion des membres (liste, création, modification)
- Sections locales, transactions, communications, utilisateurs
- Intégration base de données WordPress legacy via Drizzle ORM