Repository navigation
Ajouter la photo du lieu aux étapes de la card de recherche (steps[].photoUrl) #219
Description
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 portephotoUrl, l'URL de la photo principale de son lieu,nullsi le lieu n'en a pas. Parcoursaccess = 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), aphotoUrlànull; card déverrouillée (D-075), chaque étape portephotoUrlcomme une card gratuite. packages/shared:RouteCard.steps[].photoUrl(URL ounull, champ toujours présent) ;api-clientsuit le type.- Mobile, tooltip de E-04 (départ et étape touchée) : l'image est
photoUrlde l'étape affichée, avec repli surcoverUrldu 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 ;photoUrlsuit les étapes que la card porte.
Critères d'acceptation
- Test d'intégration : card gratuite, chaque étape a
photoUrl(photo principale du lieu, ounullsans photo) ; card Premium, départ àphotoUrl: nullet aucune URL de photo d'étape 2+ dans le JSON brut - Test de schéma
RouteCard:photoUrlURL ounull, obligatoire sur chaque étape - Tooltip du départ et d'une étape touchée : photo du lieu de l'étape,
coverUrlsi 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[].photoUrlsuit les étapes que la card porte (D-075) : test d'intégration, card Premium déverrouillée (jeton d'un comptepremiumnon expiré) → chaque étape portephotoUrlcomme une card gratuite ; absente des étapes que la card verrouillée ne porte pas
Notes techniques
- À empiler en haut de la pile de l'epic Epic — Carte et découverte #8 (au-dessus de chore(shared): renvoyer le budget de la card en somme des coûts #218) tant qu'elle n'est pas fusionnée : la tooltip d'étape vient de feat(mobile): ouvrir la tooltip d'une étape au tap sur la carte #216.
- Aucune migration attendue : les photos de lieu existent déjà dans
media.
Activity
IlanAMG commentedon Sep 28, 2026
D-071 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) :
steps[].photoUrl: photo principale du lieu, départage parcreated_at. OK d'Ilan donné en session design le 2026-09-28.PaulThiberville commentedon Sep 29, 2026
📋 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[].photoUrlsuit 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.IlanAMG commentedon Oct 13, 2026
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.
IlanAMG commentedon Oct 13, 2026
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.