-
Notifications
You must be signed in to change notification settings - Fork 2
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
feat: Déclaration et affichage de la durée d'un service (en nombre d'heures par semaines) #115
Conversation
ee6c497
to
b151c10
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.
Beau travail ! Cela fonctionne bien. Juste quelques remarques sur le code.
Ça me frustre toujours un peu quand un composant de saisie de nombre renvoie du texte, et qu'on doive gérer les cas undefined
, null
et ""
comme valides dans une fonction isInteger(). Mais je sais aussi qu'il est toujours compliqué de gérer les entrées de nombres. J'imagine que le système que tu as implémenté est le meilleur que tu aies trouvé. On pourra en discuter à l'occasion.
front/src/lib/components/specialized/services/fields-duration.svelte
Outdated
Show resolved
Hide resolved
Pour cela, on ajoute 2 informations : * le temps hebdomaire nécessaire à la réalisation du service * le nombre de semaines sur lequel s'étend le service
…ice depuis un modèle
…orrectement compte des champs de type Number
…ur saisir la durée de prestation
…e, si et seulement si les champts "volume horaire hebdomadaire" et "nombre de semaine(s)" sont renseignés
…o plutot que orange-avertissement
d76f31c
to
af48028
Compare
b2b98bf
to
ceec899
Compare
ℹ️ PR re-créée à partir de #23
🍣 Problème
En tant que Éditeur d’un Service pour ma Structure, je souhaite indiquer, pour le-dit service, le temps passé (en nombre d'heures par semaine et en nombre de semaines) par le Bénéficiaire afin d’aider à l’orientation d’un service par les Accompagnateurs tout en satisfaisant aux obligations légales à venir (loi Travail 2025).
L'information doit apparaître dans la fiche service.
🦄 Solution
Ajouter 1 section ("Durée de la prestation") avec 2 champs dans le formulaire d'édition d'une structure :
Règles de gestion :
✅ Pour tester
1/ Consultation
En tant qu'Utilisateur (connecté ou visiteur, Gestionnaire ou pas)
Quand j'accède à une fiche Service avec les 2 champs de Temps passé rempli
Alors je vois le bloc "Durée de la prestation"
Ainsi que l'information de volume horaire total
Quand j'accède à une fiche Service avec l'un, l'autre ou les 2 champs non saisi(s)
Alors je ne vois pas le bloc "Durée de la prestation"
2/ Edition
En tant que Gestionnaire de Structure connecté
Quand j'édite une Fiche service
Alors je vois une section "Durée de la prestation"
Et je peux renseigner le Volume horaire hebdomadaire
Ainsi que le Nombre de semaine
Et je suis indiqué en temps réel du volume horaire total (et sa répartition) de la prestation
3/ Gestion des erreurs
🍀 Misc
Les 2 champs ajoutés sont
Service.durationWeeklyHours
etService.durationWeeks
.En base, ces champs sont tous deux de type integer nullable.
Il a fallu faire attention à bien les remonter dans les Modèles de service.
Côté front-end, c'était un peu plus compliqué que prévu. Étrangement, il n'y a pas grand chose côté
<BasicInputField/>
pour gérer les numériques. La raison, c'est que HTML prévoit que pour un champ<input type="number">
, si la valeur saisie n'est pas un nombre valide, alorsevent.target.value
vautundefined
, ce qui complique très fortement la gestion des erreurs.Heureusement, dans le code, j'ai pu m'appuyer sur une fonctionnalité pre / post-processing des données lors de la validation des schémas de données pour m'en sortir.
En particulier, un point de difficulté a été d'envoyer la valeur
null
à l'API pour bien indiquer la volonté de "ne pas/plus renseigné" de valeur pour l'un ou l'autre champs. Sans la propriétéservice.schema.post
, la requête PATCH qui partait n'embarquait pas le champs, et donc la valeur n'était pas mise à jour dans le système.Dernière remarque, pour la partie métier de la consultation : en m'appuyant sur l'existant, j'en ai déduis que si une information est manquante, plutôt qu'afficher un label "non renseigné", on cache le bloc associé. Ainsi, si un service ne possède pas les 2 informations de durée, alors on n'affiche pas le bloc durée.
👓 Revue de code
On peut y aller commit-par-commit 🧘♂️.