Skip to content

Admin : affiliation et clics de réservation (A-09) #344

Open

Description

@IlanAMG

Contexte

Epic : #5
Admin-Web › A-09 · Compte-et-Monetisation › Liens de réservation · programmes : #212
Décision : D-085 (cadrage du 2026-10-09)

Comportement attendu

  • UI : programmes d'affiliation, lien partenaire de Widoo par lieu, liste des étapes réservables avec l'origine du lien et les clics sur 30 jours, filtre « lieux réservables sans lien partenaire ».
  • API : GET/POST/PATCH /admin/affiliate-programs, PATCH /admin/places/:id (partner_booking_url, partner_program_id), GET /admin/bookable-steps ; endpoint public GET /go/:stepId qui enregistre le clic dans booking_clicks et redirige (302) vers le lien affiché (créateur d'abord, D-048).
  • Côté app (Paul, ticket lié) : le bouton « Réserver » ouvre /go/:stepId.

Critères d'acceptation

  • Un clic sur « Réserver » est compté puis redirigé en moins de 200 ms
  • Le lien du créateur passe avant le lien partenaire de Widoo

Activity

  1. added this to the v0.6 milestone on Oct 9, 2026
  2. Nascimento95 commented on Oct 16, 2026

    @Nascimento95
    Collaborator

    🔨 Démarrage — branche issue/344-affiliation, empilée sur issue/348-settings-and-log (#500), au bout de la pile #363, #365, #398, #479, #499.

    Niveau de risque proposé : 3 (nouvelle table et migration 0018, endpoint public non authentifié qui redirige) : level:3, revue OWASP, la fusion attend la demande de l'opérateur.

    Plan en commits autonomes

    1. Migration 0018 : affiliate_programs, booking_clicks, places.partner_booking_url et partner_program_id.
    2. Schémas partagés et règle du lien affiché (créateur d'abord, puis partenaire de Widoo).
    3. API : GET/POST/PATCH /admin/affiliate-programs.
    4. API : lien partenaire dans la fiche d'un lieu (PATCH /admin/places/:id).
    5. API : GET /go/:stepId (compte le clic, redirige en 302, limité en débit).
    6. API : la fiche d'un parcours renvoie le lien partenaire quand le créateur n'en a pas (bookingIsAffiliate à vrai).
    7. API : GET /admin/bookable-steps (origine du lien, clics sur 30 jours, filtre « sans lien partenaire »).
    8. Client API.
    9. Admin : programmes. 10. Admin : étapes réservables. 11. Admin : lien partenaire dans le formulaire du lieu.

    Décisions de l'opérateur : un programme inactif n'est pas utilisé ; l'éditeur et l'admin modifient programmes et liens partenaires ; l'API remplace le lien de la fiche par le lien partenaire quand le créateur n'en a pas (l'app n'a rien à changer).

    Hors périmètre : le bouton « Réserver » qui appelle /go/:stepId est le ticket mobile #345 (Paul) ; sans lui, les liens partenaires s'affichent mais ne sont pas comptés.

  3. Nascimento95 commented on Oct 16, 2026

    @Nascimento95
    Collaborator

    🔎 PR ouverte : #501 (niveau 3, label level:3, base issue/348-settings-and-log). La fusion attend la demande de l'opérateur.

    Vérification humaine : Marco a testé en local le 2026-10-16, sur le contenu de la PR avant son découpage en commits (identique à b166abd), dans l'admin connecté et dans le navigateur :

    • Programmes : liste, panneau, ajout, nom déjà pris refusé, modification, désactivation et réactivation.
    • Étapes réservables : origines des liens, clics sur 30 jours, filtre « Lieux sans lien partenaire », lien vers la fiche d'un lieu.
    • Fiche d'un lieu : lien partenaire et programme ; un lien en http:// est refusé.
    • /v1/go/:stepId : un clic sur La Sainte-Chapelle redirige vers son site et le compteur de l'étape augmente de 1 ; un identifiant inconnu donne un 404 sans redirection.
      Il a jugé que « c'est ok ».

    Critères d'acceptation : tenus et testés, le clic compté puis redirigé en moins de 200 ms, et le lien du créateur avant le lien partenaire. Non démontrable dans l'app : l'affichage du lien partenaire dans la fiche d'un parcours (GET /routes/:id n'existe pas, #36) et le bouton « Réserver » qui appelle /go (#345, Paul).

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions