Repository navigation
Construire mon profil (E-09), Modifier le profil, Réglages et suppression de compte #387
Copy link
Copy link
Closed
Labels
area:mobileapps/mobileapps/mobileprio:P0BloquantBloquantstatus:readySpec complète, prêt à coderSpec complète, prêt à codertype:featureNouvelle fonctionnalitéNouvelle fonctionnalité
Milestone
Description
Contexte
Epic : #6
Maquette : E-09 · validée le 2026-09-24 (D-023, D-025, D-028) ; « Sur le terrain » validée le 2026-09-26 (D-056, D-058) ; Premium revu par D-073 et D-074
Ecrans › E-09 · Compte-et-Monetisation · Analytics › Action · E-09 · D-023, D-025, D-028, D-030, D-046, D-056, D-058, D-073, D-074
Issu du découpage de #38 (décision de Paul du 2026-10-13). Dépend de l'API du profil (GET/PATCH /me, /config) et de la session de l'app, créée par #386. Les pages tertiaires des Réglages (E-19) sont portées par #189, le comportement de DELETE /me côté API par #128.
Comportement attendu
- E-09 « Mon profil » tel que les autres le voient (D-023) : photo, prénom, bio, quartier, anecdotes, parcours à la une, badge de certification et sheet « Créateur certifié », section « Sur le terrain » (nombre de lieux vérifiés, absente à zéro,
verifiedPlacesde/users/:id/profile, D-056), encart Widoo Premium sans la création et profil vide revus (D-073), profil masqué, profil hors connexion (D-025). - « Modifier le profil » : bio, quartier, anecdotes (3 au plus, à partir des questions actives de
/config), parcours à la une (3 au plus, modifiables seulement ici), réordonnancement par « Monter » et « Descendre » ; enregistrement en unPATCH /me; toast d'enregistrement ; alerte d'abandon des modifications. - Page Réglages, ouverte par la roue dentée : e-mail (n'apparaît que là), préférences de notification, langue, liens légaux, interrupteur « Profil public », section Abonnement ou Premium pour un abonné (« Prolonger » sous le libellé, D-074), déconnexion, suppression de compte, version. Les pages ouvertes depuis ces lignes relèvent de Implémenter les pages tertiaires des Réglages (E-19) et la mise à jour obligatoire (E-20) #189.
- Suppression de compte sans choix (D-025) : alerte système de confirmation,
DELETE /me, toast, retour à l'état anonyme. - Mouvement (D-030) : M-03 pour les pages poussées, M-06 pour les toasts, vibrations des actions clés.
- Composant toast (D-046, repris de Appliquer la règle du texte agrandi (D-046) dans les composants de base #174) et barre du haut des pages secondaires, composants de base dans
apps/mobile/src/ui.
Critères d'acceptation
- Modifier le profil enregistre bio, quartier, anecdotes et parcours à la une, et mon profil affiché reflète le changement
- Suppression de compte effective et l'app revient à l'état anonyme
- L'e-mail n'apparaît que dans les Réglages
- Tous les textes visibles sont au vouvoiement
- États de la planche 2 de E-09 conformes à Ecrans › E-09 : profil public, Abonnement, profil masqué, suppression, hors connexion, toasts, alerte d'abandon
- Captures à 150 % de texte système de E-09, Modifier le profil et Réglages dans la PR, conformes à la planche 3 (et à D-058, D-074) : lignes des Réglages en
flexWrap, la valeur passe sous le libellé, l'e-mail n'est jamais coupé ; encart Premium à hauteur libre ; interrupteur actif sur toute la ligne - Libellés VoiceOver et TalkBack de E-09 conformes à la planche 3
- Barre du haut des pages secondaires (Modifier le profil, Réglages, Supprimer mon compte) et action du toast : composants de base dans
apps/mobile/src/ui, texte en<Text isDense>(plafond 1,3,mappings.accessibility.denseComponents), titre centré sur deux lignes. Aucun plafond posé dans l'écran - Toast plafonné à 1,3 en entier (D-046) : titre, sous-titre et action passent
isDenseau composantText; au plus grand réglage standard (×1,353), aucun toast ne déborde ; test unitaire - Aucun texte avec opacité ; compteur des chips d'ambiance en pleine couleur
- Durées, courbes et vibrations lues dans
mappings.motion, aucune valeur en dur ; « Réduire les animations » respecté (D-030) - Émet
profile_updatedavecfields[](champs modifiés parmiphoto,bio,neighborhood,anecdotes,featured) à l'enregistrement de « Modifier le profil » - Émet
certified_info_openedaveccreator_idetown: trueà l'ouverture de la sheet « Créateur certifié » depuis mon profil
Notes techniques
- Recette : le verifier de test de l'API (
apps/api/src/auth/test-verifier.ts) n'est importé que par les tests et ne sert pas en recette ; la recette sur appareil se fait donc avec un vrai compte, après Connecter l'utilisateur avec Google et par lien e-mail (E-10) #386, d'où le blocage. Les tests unitaires de l'écran simulent la session. - Événements typés dans
packages/shared/src/analytics.tsdepuis Instrumenter les événements analytics de la découverte #33 (PR chore(mobile): instrumenter les événements de la découverte #159).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:mobileapps/mobileapps/mobileprio:P0BloquantBloquantstatus:readySpec complète, prêt à coderSpec complète, prêt à codertype:featureNouvelle fonctionnalitéNouvelle fonctionnalité
Activity
PaulThiberville commentedon Oct 14, 2026
🔨 Démarrage — plan :
Branche
issue/387-my-profile-settings, partie demain(la PR #399 de #386 vient d'être fusionnée). Une seule PRFixes #387, niveau 1, sans fusion.apps/mobile/src/ui) : le toast reçoit un sous-titre et une action (« Réessayer »). Tout le toast est enisDense(plafond 1,3), il vibre en cas de succès ou d'erreur (mappings.motion.haptics) et il se pose au-dessus de la barre d'onglets. J'ajoute un test unitaire du plafond. Nouveaux composants : la barre du haut des pages secondaires (retour ou Annuler / Enregistrer, titre centré sur deux lignes, enisDense) et les lignes des Réglages (libellé et valeur enflexWrap, interrupteur actif sur toute la ligne).apps/mobile/src/profile) :GET /megardé sur le téléphone pour l'état hors connexion, effacé à la déconnexion.PATCH /meen un seul appel,DELETE /me. Une logique testée calcule le brouillon, les champs modifiés (profile_updated.fields[]), les « Monter » / « Descendre » et ce qui manque pour la certification.certified_info_opened, profil masqué, hors connexion). Puis Modifier le profil (prénom, bio, quartier, anecdotes à partir de/config, à la une), Réglages et Supprimer mon compte (alerte système,DELETE /me, toast, retour à l'état anonyme).Limites du contrat livré par #385, à confirmer en route :
GET /mene donne que l'id et le titre des parcours à la une. Il n'existe aucun endpoint qui liste les parcours publiés de l'utilisateur, ni ses chiffres, niverifiedPlaces. « Choisir un parcours », « Tous mes parcours » et « Sur le terrain » ne peuvent donc pas être alimentés. Je le signalerai dans l'Inbox.PaulThiberville commentedon Oct 14, 2026
📋 Revue MANAGER du 2026-10-14 après la fusion de la PR #419 (11:39Z,
main=e8e8a61, niveau 1). Status du Project : À déployer. Terminés attend la recette de Paul sur build preview avec un vrai compte (voir Notes techniques : la recette de la PR s'est faite avec une session simulée et une API locale).Critères tenus en partie, et leur cause (données absentes de l'API, d'après la section Limites de la PR) :
GET /mene distingue ni le pass de l'abonnement ni la formule → Distinguer le pass et l'abonnement dans GET /me #424 (needs-design, avec Brancher RevenueCat et construire l'écran Premium (E-17) #67). Page de suppression sans le nombre de parcours publiés → Exposer à mon profil (E-09) mes parcours publiés, leurs ambiances et mes lieux vérifiés #421, Afficher mes parcours publiés dans mon profil et Modifier le profil (E-09) #430.profile_updatedavecphoto: changer la photo est impossible (PATCH /men'accepte queavatarUrl: null, pas de pipeline d'upload pour l'avatar) → Définir l'envoi de la photo de profil #426 (needs-design, après Uploader et redimensionner les photos via URL signées #47). Un changement de prénom seul n'émet rien, le prénom n'étant pas au catalogue → Valider les textes de E-09 ajoutés par #387 #425.verifiedPlacespour mon profil → Exposer à mon profil (E-09) mes parcours publiés, leurs ambiances et mes lieux vérifiés #421 puis Afficher en cards les parcours à la une et la section Sur le terrain (E-09) #431 ; parcours à la une en cartes de titre (featuredRoutes={ id, title }) → Servir les parcours à la une de GET /me en cards #422 puis Afficher en cards les parcours à la une et la section Sur le terrain (E-09) #431. Chiffre parcours réalisés toujours masqué (completedRoutesvaut 0) → Calculer les parcours réalisés depuis les sorties terminées #423, bloqué par la définition de Définir les critères du badge Créateur certifié (parcours réalisés, vérifiés, note moyenne) #392 ; chiffre parcours publiés → Exposer à mon profil (E-09) mes parcours publiés, leurs ambiances et mes lieux vérifiés #421, Afficher mes parcours publiés dans mon profil et Modifier le profil (E-09) #430.Autres points de la PR, suivis ailleurs
profile→ Valider les textes de E-10 ajoutés par #386 #404 ; valeurprofiledeauth_prompteddéjà dans le catalogue, wiki Analytics à aligner → Ajouter les valeurs d'intent du profil et du déblocage à auth_prompted #403.notificationPrefsdifférentes du wiki (D-062) → amendement de Migration : users.locale, users.notification_prefs, PATCH /me et POST /me/devices avec la langue #197 ; pages des lignes E-19 → Implémenter les pages tertiaires des Réglages (E-19) et la mise à jour obligatoire (E-20) #189.widoo_testpartagée qui fait échouerschema.test.tsen local → commentaire sur Isoler la base de test par branche ou worktree #406.PaulThiberville commentedon Oct 15, 2026
Recette partielle sur appareil, 2026-10-15 : Paul, build preview Android EAS
858b93ac(main1a4845d), Redmi Note 9 sous MIUI 12.auth_promptedpuisauth_completedavecgoogle) et par l'API (GET /meen 200).PaulThiberville commentedon Oct 15, 2026
Recette sur appareil, déclarée par Paul en session le 2026-10-15, consignée par MANAGER. Build preview EAS
858b93ac(main1a4845d), Redmi Note 9 (Android), API de staging à jour avec la PR #461.OK :
Bugs trouvés pendant cette recette :
GET /meen boucle. Le retour à l'état anonyme après suppression n'est donc pas vérifié sur appareil ;PaulThiberville commentedon Oct 15, 2026
Recette sur appareil, déclarée par Paul en session le 2026-10-15 vers 13:40 (Paris), consignée par MANAGER. Build preview EAS
98b537be(main4b766c5), Redmi Note 9 (Android), API de staging. Paul : « tout est bon ».858b93acce matin (commentaire précédent). Restent non cochés, suivis ailleurs : parcours à la une et chips (Exposer à mon profil (E-09) mes parcours publiés, leurs ambiances et mes lieux vérifiés #421, Afficher mes parcours publiés dans mon profil et Modifier le profil (E-09) #430), Abonnement (Distinguer le pass et l'abonnement dans GET /me #424), captures 150 % et VoiceOver (TalkBack seul vérifié sur appareil), mouvement, analytics.Status du Project : Terminés.