-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bugfix: le RDV doit afficher l'adresse du responsable, pas du proche #4812
Conversation
C'est entièrement possible que la description de la spec soit fausse, et que l'implémentation actuelle soit satisfaisante pour le métier. Je pense que ça vaudrait le coup de clarifier où on indique l'adresse du proche et celle du responsable dans l'interface (et lecture et écriture), et qu'on soit capable de dire si ça a du sens. |
bbee0d0
to
6c1f33e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🙇 merci de prendre le temps de te pencher là dessus, et bravo pour la détection de cette spec via le fuzzing 👏
Je rejoins Victor qu’une bonne piste d’amélioration serait d’expliciter de quel usager on affiche l’adresse dans les cas ambigus. Je vois que c’est explicité dans tous les cas dans l’étape 3 du admin rdv wizard : https://github.com/betagouv/rdv-service-public/blob/production/app/views/admin/rdv_wizard_steps/step3.html.slim#L35. On pourrait éventuellement rajouter la précision directement dans les méthodes address
, address_complete
, address_without_personal_information
.
Néanmoins j’approuve cette PR car je pense que c’est déjà un beau pas en avant :
- on corrige le code qui fait l’inverse de ce qu’il prétend
- on corrige les specs
- le code est amélioré en rapprochant
user_for_home_rdv
duAddressConcern
.
Je pense que le changement de comportement est tout à fait acceptable vu le peu de nombre de cas et que tu as l’air de dire que c’est souvent insignifiant.
@@ -53,4 +53,9 @@ def address_without_personal_information | |||
Motif.human_attribute_value(:location_type, :phone) | |||
end | |||
end | |||
|
|||
def user_for_home_rdv | |||
proches, responsables = users.partition(&:responsible_id) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
élégant 👏 j’avais un doute que ça soit une légère régression de perfs de ne plus faire de distinction sur le loaded?
mais après réfléxion j’imagine que rails ne va pas recharger les users
si tu appelles partition
dessus 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On aurait pu continuer de faire la distinction sur le loaded?
, mais fait le pari que si l'association n'est pas chargée, ça ne coûte pas beaucoup plus cher de charger tous les users, puisque le nombre d'usager souvent 1, parfois 2-3 (c'est pour les RDVs individuels).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, et aussi :
- on peut faire le pari que tous les
#users
seront utilisés ailleurs aussi - c'est facile de preloader l'association
#users
, d'ailleurs on le fait dansAdmin::RdvsController
- le code est plus simple ici si on ne fait pas cette tentative d'optimisation (et on peut utiliser ce magnifique
partition
que j'aime)
Je pense surtout que c'est tellement marginal que je doute qu'un⋅e seul⋅e agent sache quelle adresse est censée s'afficher.
En effet ça vaudrait le coup, mais ça demande du temps supplémentaire à implémenter, et je pense qu'on peut merger cette PR et garder l'amélioration pour plus tard.
Merci beaucoup, je suis 100 % aligné. 🚀 |
J'ai créé une issue pour aller plus loin et clarifier l'interface : #4850 |
En faisant du fuzzing dans #4809, une spec est passée au rouge :
rdv-service-public/spec/models/rdv_spec.rb
Line 188 in fb68d72
L'intention de cette spec est de vérifier que lorsqu'on a un RDV avec un proche et un responsable, c'est l'adresse du responsable que l'on veut afficher. Or, dans le code, c'est l'adresse du proche qui est affichée !
Pourquoi cette spec était au vert ? Plusieurs raisons :
:user
est toujours la même, donc dans la spec les deux usagers ont la même adresse, doncit { is_expected.to eq responsible.address }
passe mais ça ne nous apprend rienCe code récupère les users qui ont un
responsible_id
, donc les proches !Comportement attendu
À mon avis, le comportement attendu est :
Je ne suis vraiment pas sûr de mon coup niveau métier donc je vais demander l'avis du public.
Info importante : on est dans le troisième cas pour environ 200 usagers, et dans beaucoup de cas cas les adresses ont juste une virgule de différence.
Il est important de noter que jusqu'ici, c'est donc l'adresse du proche qui est affichée, et que ce fix consiste donc en un changement de comportement métier.