Skip to content

Ajouter la photo du lieu aux étapes de la card de recherche (steps[].photoUrl) #219

Open

Description

@PaulThiberville

Contexte

Epic : #8
Prérequis : #25 (recherche, fermé) ; #161 (card Premium réduite au départ, PR #208) ; #153 (tooltip d'une étape touchée, PR #216)
Maquette : E-04 · validée le 2026-09-28 (D-071)
API › Card de recherche · Ecrans › E-04 · E-04 · D-066

Réponse de DESIGN à #164, point 5 (D-066) : la tooltip de E-04 montre la photo du lieu de l'étape, que la card de recherche ne porte pas ; l'app affiche aujourd'hui coverUrl pour le départ (#26) comme pour une étape touchée (#153), dont le lieu n'est pas celui de la couverture. La card gagne steps[].photoUrl.

Question pour Ilan

@IlanAMG, D-066 note ce champ comme une décision prise seule par DESIGN, à relire. Ce ticket passe status:ready à ta confirmation (un « OK » en commentaire suffit), ou part en révision si tu préfères une autre source d'image. Point à préciser avec : la « photo principale du lieu » n'est pas définie dans Modele-de-Donnees › media (owner_type = place, plus petite position ?).

Comportement attendu

  • API, GET /v1/routes/search : chaque étape d'une card de parcours gratuit porte photoUrl, l'URL de la photo principale de son lieu, null si le lieu n'en a pas. Parcours access = premium : card verrouillée, le départ, seule étape envoyée (D-014, Retirer les coordonnées des étapes d'un parcours Premium de la recherche #161), a photoUrl à null ; card déverrouillée (D-075), chaque étape porte photoUrl comme une card gratuite.
  • packages/shared : RouteCard.steps[].photoUrl (URL ou null, champ toujours présent) ; api-client suit le type.
  • Mobile, tooltip de E-04 (départ et étape touchée) : l'image est photoUrl de l'étape affichée, avec repli sur coverUrl du parcours quand elle est nulle.
  • L'URL servie est celle du média en base ; les vignettes d'environ 200 px viennent avec le stockage des médias (Uploader et redimensionner les photos via URL signées #47), hors de ce ticket.
  • Cache et droit d'accès selon D-075 (API › Conventions) : réponse anonyme Cache-Control: public (ETag), réponse avec jeton privée ; photoUrl suit les étapes que la card porte.

Critères d'acceptation

  • Test d'intégration : card gratuite, chaque étape a photoUrl (photo principale du lieu, ou null sans photo) ; card Premium, départ à photoUrl: null et aucune URL de photo d'étape 2+ dans le JSON brut
  • Test de schéma RouteCard : photoUrl URL ou null, obligatoire sur chaque étape
  • Tooltip du départ et d'une étape touchée : photo du lieu de l'étape, coverUrl si elle est nulle (test du choix de l'image ; recette iOS et Android)
  • Test à 150 % de texte système mentionné dans la PR
  • Niveau de risque annoncé dans la PR (nouvelle donnée servie par un endpoint public)
  • steps[].photoUrl suit les étapes que la card porte (D-075) : test d'intégration, card Premium déverrouillée (jeton d'un compte premium non expiré) → chaque étape porte photoUrl comme une card gratuite ; absente des étapes que la card verrouillée ne porte pas

Notes techniques

Activity

  1. added this to the v0.2 milestone on Sep 28, 2026
  2. removed
    needs-designQuestion ou maquette à produire en mode DESIGN
    on Sep 28, 2026
  3. IlanAMG commented on Sep 28, 2026

    @IlanAMG
    Member

    D-071 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : steps[].photoUrl : photo principale du lieu, départage par created_at. OK d'Ilan donné en session design le 2026-09-28.

  4. PaulThiberville commented on Sep 29, 2026

    @PaulThiberville
    CollaboratorAuthor

    📋 Report de D-075 (2026-09-29, correction de D-066 sur la card de recherche Premium, décision de Paul au nom d'Ilan ; voir #161) : critère ajouté au corps, et deux lignes de « Comportement attendu » alignées. steps[].photoUrl suit les étapes que la card porte : présente sur chaque étape d'une card Premium déverrouillée, absente des étapes que la card verrouillée ne porte pas. La ligne « La réponse reste publique […] ne dépend pas de l'appelant » ne tenait plus : la réponse avec jeton est privée (Vary: Authorization). Le ticket reste en attente de la confirmation demandée à @IlanAMG.

  5. modified the milestones: v0.2, v0.6 on Oct 13, 2026
  6. IlanAMG commented on Oct 13, 2026

    @IlanAMG
    Member

    Chef de projet (point du 2026-10-13) : jalon v0.2 → v0.6. v0.2 est échu depuis le 07/10 et ses P0 sont livrés ; ce ticket de finition de la découverte ne conditionne pas la suite. v0.6 (25/11) regroupe la finition avant le lancement, pour laisser la place à v0.3 (fiche, orchestration, compte), dont aucun P0 n'a encore démarré. Priorité inchangée.

  7. removed this from the v0.6 milestone on Oct 13, 2026
  8. IlanAMG commented on Oct 13, 2026

    @IlanAMG
    Member

    Chef de projet (2026-10-13, suite) : jalon v0.6 retiré, ticket remis au backlog, priorité inchangée. Orientation retenue ce jour avec Ilan et Paul : séparer le périmètre du temps, avec des sprints d'une semaine (champ Sprint du Project, à partir du 19/10). Un ticket de finition découvert en cours de route va au backlog et entre dans un sprint selon sa priorité. Le placer en v0.6 ce matin faisait déborder son epic sur une date sans rapport avec le travail.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions