Skip to content

Construire la fiche parcours (E-05) #37

Closed

Description

@IlanAMG

Contexte

Epic : #9
Prérequis : #125, thème NativeWind généré depuis tokens.json et composants de base
Maquette : E-05 · validée le 2026-09-23
Ecrans · E-05 · D-002, D-013, D-014

Comportement attendu

  • Carrousel photos, titre, ambiance, public, auteur, badge de vérification, description, bloc d'infos clés, conditions, timeline, étapes avec transitions et horaires du jour, bloc de vérification par étape (lecture seule jusqu'à v0.5), barre d'actions Favori / Programmer / Go (Go ouvre Google Maps sans suivi tant que v0.4 n'est pas livré), Partager, Signaler.
  • Pas de carte ni de Google Maps dans la fiche : « Voir sur la carte » ramène à l'accueil avec le parcours sélectionné (E-04) ; Google Maps n'apparaît qu'une fois le parcours lancé (E-07). (D-013)
  • États : lieu signalé, étape signalée, parcours privé, Premium sans abonnement, parcours retiré, chargement, erreur ; détail dans les critères. (D-014)
  • Événements route_opened, route_scrolled, route_shared.
  • Mouvement (D-030, Direction-Artistique › Mouvement, mappings.motion) : M-01, ouverture depuis la card et fermeture au glissé ; M-10, photo à demi-vitesse au défilement. La card qui s'agrandit en fiche (M-01) se code à la main : les transitions partagées de Reanimated sont expérimentales. Repli accepté : la fiche monte du bas (M-02).
  • Budget (D-032, Orchestration) : « ≈ 25 € par pers. », jamais « env. » ; somme des coûts arrondie à 5 €, « ≈ 5 € » pour un petit montant, « Gratuit » si elle est nulle ; plus de fourchette. Lecteur d'écran : « environ 25 euros par personne ».

Critères d'acceptation

  • Fidélité à la maquette validée, captures iOS et Android
  • Ouverture sous 500 ms depuis le cache de la liste (données de carte réutilisées)
  • États conformes à Ecrans › E-05 : lieu signalé (ligne ambre foncé sous les tuiles, lien « Voir l'étape »), étape signalée (point « ! » sur la pastille, encadré ambre pâle déplié), parcours privé (pastille « Privé » à cadenas, ligne « Partagé par… »), parcours retiré (message, date du retrait, « Voir des parcours proches »), chargement (connu affiché tout de suite, barres grises, sans spinner), erreur (« Impossible de charger le détail du parcours » et Réessayer ; hors connexion, « Hors connexion »)
  • Premium sans abonnement : un seul bouton encre « Débloquer avec Premium » à la place de Programmer et C'est parti ; étape 1 complète, étapes suivantes verrouillées (heure, pastille, durée et trajet gardés ; nom et détail remplacés par la catégorie et « Réservé à Premium », cadenas) ; encart « Parcours Premium » après la fin du parcours ; bouton et encart ouvrent E-17
  • Pastille Premium (encre à 86 %, couronne dorée, « Premium » en blanc) sur la photo, cumulable avec Vérifié et avec Signature en pastille bleue
  • Tuiles d'infos à largeur selon leur contenu (flexGrow: 1, flexBasis: 'auto')
  • Note de chaque avis en chiffre après une étoile (« ★ 5 »)
  • Tuiles, pastilles sur la photo et barre collée plafonnées à maxFontSizeMultiplier={1.3} ; à 150 %, les deux boutons de la barre restent côte à côte
  • Ce plafond est posé dans les composants de base de apps/mobile/src/ui, jamais dans l'écran. La tuile d'infos, la barre collée et le compteur de photos sont des composants de base dont le texte est en <Text isDense>, avec les boutons de la barre en Button isDense ; les pastilles Vérifié, Signature et Premium passent par Badge
  • Libellés et rôles VoiceOver conformes au tableau de Ecrans › E-05 : dialogue « Fiche du parcours {titre} », focus sur le titre à l'ouverture, photos en élément ajustable, étapes en boutons avec état déplié
  • Couleurs, tailles, icônes et pastilles lues dans tokens.json (mappings.placeCategories, mappings.filterIcons, mappings.badges), aucune valeur en dur (D-015)
  • Point d'ambiance lu dans mappings.moodDots de tokens.json, par la clé d'ambiance. Le code suit tokens.json, pas les maquettes, qui gardent l'ancien vert du point Nature jusqu'au prochain réexport (D-016)
  • Pastille « Nouveau » à la place de la note tant que le parcours n'a aucun avis, et sceau certifié après le prénom sur la ligne créateur (D-023)
  • Icônes d'interface lues par leur nom dans mappings.uiIcons de tokens.json, aucune icône choisie en dur (D-025)
  • Durées, courbes et vibrations lues dans mappings.motion de tokens.json, aucune valeur en dur ; « Réduire les animations » respecté (D-030)
  • La card s'agrandit en fiche sans transition partagée de Reanimated ; repli accepté, la fiche qui monte du bas
  • Budget affiché « ≈ 25 € par pers. », « ≈ 5 € » pour un petit montant ou « Gratuit » quand la somme est nulle, sans fourchette, et lu « environ 25 euros par personne »

Activity

  1. added this to the v0.3 milestone on Sep 21, 2026
  2. added
    status:readySpec complète, prêt à coder
    and removed
    needs-designQuestion ou maquette à produire en mode DESIGN
    on Sep 23, 2026
  3. IlanAMG commented on Sep 25, 2026

    @IlanAMG
    MemberAuthor

    D-048 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : libellés de trajet par mode (« à pied », « en métro », « à vélo », « en voiture ») au lieu de « à pied » partout ; mention « Lien affilié » près de « Réserver » quand booking_is_affiliate ; « À prévoir » et « Comment venir » si renseignés.

  4. IlanAMG commented on Sep 25, 2026

    @IlanAMG
    MemberAuthor

    D-050 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : éléments visiteur à dessiner dans #181 (Lien affilié, « Jusqu'au … », crédit des photos, libellés par mode, accès). À intégrer après validation de cette planche.

  5. IlanAMG commented on Sep 25, 2026

    @IlanAMG
    MemberAuthor

    Report de l'éditeur validé le 2026-09-26 (D-052, https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog), maquettes dans la section E-05 de https://github.com/Inprogress-Agency/widoo-app/wiki/Ecrans :

    • crédit « © Auteur » sur la couverture et la photo d'étape (mappings.photoCredit : pastille encre à 40 %, texte blanc à 72 %) ; l'appui ouvre une bulle avec licence et lien source ; seulement pour media.source = commons
    • « Lien affilié » en petit texte gris sous « Réserver » (mappings.affiliate) quand booking_is_affiliate ou lien partenaire Widoo
    • « Jusqu'au 17 janv. » sur la ligne de l'étape, date complète dans le détail, année seulement si ce n'est pas l'année en cours (mappings.ephemeral, icône hourglass-medium)
    • trajet dit par mode, durée et distance (mappings.transitModes)
    • Accès sur deux lignes : « Métro Abbesses, ligne 12 », « à 50 m du départ » (computed.access, Calculer l'accès d'un parcours : station la plus proche depuis les données ouvertes d'Île-de-France Mobilités #180)
    • ligne ambre « Une étape s'est terminée le 17 janvier » quand une date de fin est passée
  6. PaulThiberville commented on Sep 28, 2026

    @PaulThiberville
    Collaborator

    📋 MANAGER — la PR #216 (#153) ouvre la fiche provisoire avec un paramètre step (1 à n) depuis « Voir plus » d'une étape touchée sur la carte. La fiche E-05 de ce ticket doit reprendre ce paramètre et s'ouvrir à l'étape indiquée (critère « Voir plus ouvre la fiche à l'étape tapée » de #153).

  7. IlanAMG commented on Sep 29, 2026

    @IlanAMG
    MemberAuthor

    D-072 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : nouvel encart d'un parcours Premium sur la fiche : achat du parcours seul en direct, lien du pass ; après achat, fiche déployée sur place ; valeurs dans mappings.premium.routeCard (tokens v34). Maquettes dans E-05.

  8. IlanAMG commented on Sep 29, 2026

    @IlanAMG
    MemberAuthor

    D-073 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : après un déblocage fait sans compte, la fenêtre de connexion (E-10) propose un compte « pour le garder ». Maquettes dans E-05.

  9. IlanAMG commented on Sep 29, 2026

    @IlanAMG
    MemberAuthor

    D-074 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) : en texte agrandi, le bouton « libellé · prix » passe sur deux lignes, le prix dessous, sans le point.

  10. IlanAMG commented on Sep 29, 2026

    @IlanAMG
    MemberAuthor

    Traduction automatique (D-076, #203) : son affichage sur cet écran est livré à part, en v0.5, dans #269. Rien à ajouter ici.

  11. PaulThiberville commented on Oct 13, 2026

    @PaulThiberville
    Collaborator

    🔨 Démarrage — plan :

    Décision de l'opérateur (Paul, 2026-10-13) : la fiche se construit sur le contrat d'API du wiki (GET /routes/:id, /routes/:id/timeline), l'API elle-même (#36) restant bloquée par #378.

    1. packages/shared : schémas Zod de la réponse de la fiche (RouteDetail complet : étapes complètes ou verrouillées, vérification, signalements, timeline du jour, créateur, derniers avis, lien privé) et de /timeline, et la réponse 410 d'un parcours retiré.
    2. packages/api-client : getRoute(id, { token }) et getRouteTimeline(id, startsAt) typés.
    3. App : un fournisseur de données injectable ; implémentation sur fixtures tirées du seed (demo-routes), transitions estimées par les coefficients de packages/orchestration. Exposer GET /routes/:id et /routes/:id/timeline, stocker computed #36 remplacera le fournisseur par l'API.
    4. Composants de base (apps/mobile/src/ui) : tuile d'infos, barre collée, compteur de photos, plafonnés à 1,3.
    5. Écran E-05 et ses états (lieu signalé, étape signalée, privé, Premium sans abonnement, retiré, chargement, erreur et hors connexion), mouvement M-02 en repli de M-01 et M-10, « Voir sur la carte » vers l'accueil avec la sélection.
    6. Événements route_scrolled et route_shared (déjà au catalogue), budget D-032 testé.

    Une seule PR, plusieurs commits de moins de 400 lignes utiles. Niveau 1.

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