Aller au contenu principal

Plan d'Améliorations - Système d'Invitations et d'Amis

Statut actuel : ✅ KEEP web + BE + /mobile/network (Vague A). Progression rewards obsolete.

Backlog : Port Friends UX to sibling aaperture-mobile (Second Frame / Circles) via /mobile/network* — tracked also in mobile ROADMAP.md / PLAN_IMPLEMENTATION_MOBILE.md.

Référence :

  • Friends Module (documentation technique backend)
  • Invitations Module (documentation technique backend)
  • APP_CLEANUP_MAP.md
  • PRIORITES.md - Section "Système d'invitations et d'amis"

✅ Fonctionnalités Implémentées​

Backend​

  • ✅ Système d'invitations avec solde (5 invitations de base)
  • ✅ Création d'invitations par email avec token et code
  • ✅ Acceptation d'invitations via token ou code
  • ✅ Gestion du solde (balance, total_earned, total_used)
  • ✅ Système d'amis avec demandes mutuelles
  • ✅ Amitié automatique lors de l'acceptation d'invitation
  • ✅ Récompenses pour le référent (XP, coins, invitations)
  • ✅ Intégration avec organisations (limitation aux amis)
  • ✅ Visibilité utilisateur (paramètre is_visible)
  • ✅ Localisation approximative (hubs) : GET /friends/with-location — amis avec zone (ville, pays) et coordonnées hub (hub_lat, hub_lon) pour la carte ; jamais d’adresse précise (rue, code postal) exposée
  • ✅ Notifications in-app (NotificationsService) : invitation acceptée (parrain), demande d'ami reçue, demande d'ami acceptée
  • ✅ Notifications email (EmailService) : invitation acceptée (parrain), demande d'ami reçue (destinataire), demande d'ami acceptée (expéditeur) — FR/EN selon locale du destinataire

Frontend​

  • ✅ RightSidebar avec onglets Chat/Amis
  • ✅ FriendsList avec recherche
  • ✅ InvitationsPage complète
  • ✅ FriendsPage complète (onglets Amis, Carte, Invitations)
  • ✅ Onglet Carte : carte des amis par zone (hubs) — localisation approximative uniquement (ville/pays), jamais d’adresse précise ; pastilles/marqueurs avec popup (profil, message)
  • ✅ « Voir sur la carte » depuis le profil utilisateur (ami avec zone) et depuis la liste d’amis ; lien vers /friends?tab=carte&highlight=userId
  • ✅ Hooks React Query (useInvitations, useFriends, useFriendsWithLocation)
  • ✅ Modification MembersTab pour filtrer par amis
  • ✅ Navigation unifiée : une entrée « Amis » (page Friends avec onglet Carte) ; plus d’entrée séparée « Carte utilisateurs » dans la sidebar

🚀 Améliorations Futures (Priorité Moyenne)​

0. Port mobile Friends / network (BACKLOG — haute pour Second Frame)​

Impact : Parité réseau native
Effort : Moyen

  • Reprendre UX Friends (liste, demandes, carte hubs) sur aaperture-mobile
  • Brancher sur contrats backend /mobile/network* (pas Doublons/Discord/progression)

1. Email de rappel pour invitations en attente (optionnel)​

Impact : Améliore le taux d'acceptation Effort : Faible

  • Email de rappel pour les invitations non acceptées (délai configurable, ex. 3 jours)

2. Statistiques et analytics​

Impact : Insights sur l'utilisation du système Effort : Faible-Moyen

  • Dashboard invitations :
    • Taux d'acceptation des invitations
    • Nombre d'invitations envoyées/acceptées par période
    • Top référents (utilisateurs qui invitent le plus)
  • Dashboard amis :
    • Nombre d'amis par utilisateur
    • Activité des amis (dernière connexion)
    • Suggestions d'amis basées sur les organisations communes

Référence : Intégration avec AnalyticsService existant

3. Améliorations UX​

Impact : Améliore l'expérience utilisateur Effort : Faible-Moyen

  • Invitations :
    • Copie rapide du code d'invitation (bouton copy)
    • Partage direct du code via liens sociaux
    • Prévisualisation du lien d'invitation
    • Historique des invitations avec filtres (statut, date)
  • Amis :
    • Indicateur de statut en ligne/hors ligne
    • Recherche avancée d'amis (par nom, email, organisation)
    • Suggestions d'amis (utilisateurs dans les mêmes organisations)
    • Profil utilisateur enrichi (badges, niveau, statistiques)

4. Gestion avancée des invitations​

Impact : Plus de flexibilité Effort : Moyen

  • Invitations personnalisées :
    • Message personnalisé avec l'invitation
    • Expiration personnalisable (au lieu de 7 jours fixes)
    • Invitations multiples pour le même email (annuler l'ancienne)
  • Invitations de groupe :
    • Inviter plusieurs utilisateurs en une fois
    • Codes d'invitation réutilisables (optionnel)
    • Limite de réutilisation des codes

5. Intégration avec la progression — CANCELLED​

Progression/gamification deleted (Vague A). Do not plan badges/défis XP against Friends.

Référence : ProgressionService

🔮 Améliorations Futures (Priorité Basse)​

1. Système de groupes​

Impact : Organisation avancée Effort : Élevé

  • Création de groupes d'amis
  • Partage de ressources avec des groupes
  • Notifications de groupe

2. Système de recommandations​

Impact : Découverte d'utilisateurs Effort : Moyen-Élevé

  • Recommandations basées sur :
    • Organisations communes
    • Contacts communs
    • Localisation (si disponible)
    • Intérêts similaires (badges, niveaux)

3. Export des données sociales​

Impact : Portabilité des données Effort : Faible

  • Export de la liste d'amis (CSV, JSON)
  • Export de l'historique des invitations
  • Export des statistiques sociales

📝 Notes Techniques​

Points d'attention​

  1. Performance : Les requêtes d'amis peuvent être lentes avec beaucoup d'utilisateurs. Considérer la pagination et le cache.
  2. Sécurité : Vérifier que les codes d'invitation sont suffisamment sécurisés (6 caractères alphanumériques).
  3. Scalabilité : Le système d'amis bidirectionnel crée 2 entrées par amitié. Vérifier l'impact sur les performances.
  4. Expiration : Implémenter un job cron pour expirer automatiquement les invitations anciennes.

Intégrations​

  • ✅ Email service : Emails de notification (invitation acceptée, demande d'ami reçue/acceptée) — implémenté
  • ✅ Notifications service : Notifications in-app pour invitation acceptée et demandes d'amis — implémenté
  • Analytics service : Tracking des métriques d'invitations et d'amis (à venir)
  • Progression service : deleted (Vague A)

🔗 Références​