Skip to content

Exposer GET /users/:id/profile pour le profil public de créateur (E-16) #471

Closed

Description

@PaulThiberville

Contexte

Epic : #6
Maquette : E-16 · validée le 2026-09-24 (ticket API : la maquette fixe les données affichées)
API › Découverte (ligne GET /users/:id/profile) · Compte-et-Monetisation › Profil public · Ecrans › E-16 · E-16 · D-023, D-025, D-056, D-091

#65 porte l'écran E-16 (PR brouillon #469) et, dans son « Comportement attendu », l'endpoint GET /users/:id/profile, qui n'existe pas dans apps/api (découverte de CODE). Sans lui, l'app affiche « Ce profil n'est pas disponible » pour tout créateur, et les critères 404 de #65 ne peuvent pas être tenus. Ce ticket porte la part API ; #65 est bloqué par lui.

Comportement attendu

  • GET /v1/users/:id/profile, public, jeton facultatif (cards dépendantes de l'appelant, D-075, comme /routes/search), selon la ligne de la page API : avatar, prénom, membre depuis, quartier, bio ; certified et certification (critères avec valeur, seuil et état) ; chiffres routesPublished, routesCompleted, ratingAvg, verifiedPlaces (chacun null s'il n'existe pas, verifiedPlaces null à zéro, D-056) ; anecdotes dans l'ordre (questionKey, libellé, réponse) ; parcours à la une dans l'ordre, en cards ; parcours publiés en cards, query sort=recent|rating|duration, moods[], cursor ; moodCounts pour les chips.
  • 404 not_found si is_public = false, si le compte est supprimé (anonymisé ou purgé, D-025) ou inconnu : même réponse dans les trois cas.
  • Un compte supprimé n'a plus de lien vers un profil : ses parcours publiés gardent author: null dans les cards et la fiche (« Membre Widoo », D-025), sans identifiant qui mènerait à /users/:id/profile.
  • Seuls les parcours publiés du créateur apparaissent : ni brouillon, ni privé, ni retiré.
  • Forme de réponse : reprendre le schéma PublicProfile de packages/shared/src/schemas/public-profile.ts posé par la PR feat(mobile): afficher le profil public de créateur (E-16) #469, ou le corriger dans la même PR que l'endpoint s'il s'écarte de la page API.

Critères d'acceptation

  • Tests d'intégration : profil public complet (identité, chiffres, anecdotes, à la une, parcours) conforme au schéma partagé
  • Tests : 404 pour un profil masqué, pour un compte supprimé et pour un identifiant inconnu, réponse identique
  • Tests : parcours publiés en cards, triés par recent, rating et duration, filtrés par moods[], paginés par cursor sans doublon ni trou ; brouillons, privés et retirés absents
  • Tests : moodCounts compte les parcours publiés par ambiance ; verifiedPlaces compte les lieux distincts confirmés et vaut null à zéro
  • Test : après DELETE /me, le profil répond 404 et les cards de ses parcours publiés ont author: null
  • Ligne GET /users/:id/profile de la page API vérifiée contre la réponse livrée ; tout écart signalé sur l'Inbox 📥 Inbox — Triage #4

Notes techniques

Activity

  1. added this to the v0.3 milestone on Oct 15, 2026
  2. PaulThiberville commented on Oct 15, 2026

    @PaulThiberville
    CollaboratorAuthor

    🔨 Démarrage — plan :

  3. PaulThiberville commented on Oct 15, 2026

    @PaulThiberville
    CollaboratorAuthor

    Vérification de staging, 2026-10-15, consignée par MANAGER.

    • deploy-staging.yml vert sur becf89e (run 38708541976) et sur les déploiements suivants, dont c0be04e ; GET /v1/health de staging répond {"status":"ok","database":"up"} ; un identifiant inconnu répond 404.
    • Recette de Paul sur le build preview 98b537be (Redmi Note 9, vers 13:40) : profil public E-16 ouvert depuis une card, servi par cet endpoint.
    • Cochés : les cinq critères de test (PR feat(api): exposer le profil public d'un créateur (E-16) #473). « Ligne de la page API vérifiée » reste non coché : la PR ne le dit pas explicitement.

    Status du Project : Terminés.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions