Saisir, sauvegarder et figer les jours déjà posés #61

Closed
opened 2026-10-05 18:51:16 +02:00 by nessar · 6 comments
nessar commented 2026-10-05 18:51:16 +02:00 (Migrated from 172.24.0.1:8928)

Blocked by: None — can start immediately.

Parent

#13

What to build

L’utilisateur déclare ses jours non travaillés directement dans le calendrier, les retrouve après rechargement et obtient un calcul qui garde ces dates et types fixes sans débiter à nouveau ses soldes restants.

issue #13, entretien et spécification de développement. Respecter le glossaire du domaine et les ADR 0002, 0005, 0006 et 0007.

Acceptance criteria

  • Un mode explicite « Saisir les jours déjà posés » présente l’horizon actuellement choisi et permet de sélectionner CP, RTT ou Autre. Autre couvre toutes les autres raisons de ne pas travailler ; ANY reste uniquement un sélecteur de règle.
  • Un clic sur une date admissible ajoute le type sélectionné ; un deuxième clic avec ce type supprime la déclaration ; un clic avec un autre type la remplace. Une date porte au maximum une déclaration.
  • Seuls les jours du lundi au vendredi hors jours fériés français nationaux sont admissibles. Les commandes et les cases sont utilisables au clavier ; le type et le marquage immédiat « Déjà posé » sont accessibles aux lecteurs d’écran et reconnaissables sans la seule couleur.
  • Les déclarations sont sauvegardées automatiquement dans le navigateur, indépendamment des soldes et de l’horizon, puis restaurées avant le calcul initial. En l’absence de déclarations sauvegardées, la liste est vide. Changer d’horizon conserve les dates hors de la période affichée et leurs types.
  • Ajouter, supprimer ou remplacer une déclaration ne modifie aucune quantité de solde. Une déclaration n’exige pas de solde source et ne devient pas un placement consommant un droit.
  • Les clics de saisie ne lancent pas de calcul. Calculer soumet les déclarations avec les autres saisies ; en consultation, le résultat précédent conserve son horizon et ses déclarations jusqu’au résultat du nouveau calcul. Modifier les saisies après soumission ne change pas le contexte de ce calcul.
  • Le chemin de calcul direct et le worker utilisent les mêmes déclarations. Aucun nouveau placement, déplacement d’optimisation ou déplacement hypothétique ne peut occuper une date déclarée ; aucune déclaration ne peut être déplacée, supprimée ou retypée par ces opérations.
  • Le calendrier de consultation identifie les déclarations du résultat comme des saisies utilisateur, avec leur type et sans débit ni décision d’optimisation fictifs. Les explications, la trace originale et les comparaisons des nouveaux placements conservent les données du calcul qui les a produits.
  • Une annulation avec un meilleur plan valide conserve ses déclarations fixes ; une annulation sans plan conserve le résultat incomplet existant. Les données malformées relèvent d’une entrée invalide, et une requête sans déclaration conserve le comportement existant.
  • Les tests de comportement couvrent les trois opérations de saisie, l’accessibilité, les dates interdites, la restauration et la conservation hors horizon, l’absence de modification des soldes, la soumission explicite et l’immuabilité du résultat. Un scénario de planification sans règle vérifie l’absence de chevauchement par le chemin direct et le worker, y compris dans un plan annulé et une comparaison de date.

Les périodes de repos et les contributions aux règles seront ajoutées par les tickets suivants. Ce ticket est démontrable avec des règles désactivées : déclarer une date, calculer des congés restants, constater qu’elle reste fixe et ne reçoit aucun nouveau placement, puis recharger la page.

Blocked by

  • None — can start immediately.
Blocked by: None — can start immediately. ## Parent [#13](https://gitlab.nessar.fr/nessar/vac-optimizer/-/work_items/13) ## What to build L’utilisateur déclare ses jours non travaillés directement dans le calendrier, les retrouve après rechargement et obtient un calcul qui garde ces dates et types fixes sans débiter à nouveau ses soldes restants. [issue #13](https://gitlab.nessar.fr/nessar/vac-optimizer/-/work_items/13), entretien et spécification de développement. Respecter le glossaire du domaine et les ADR 0002, 0005, 0006 et 0007. ## Acceptance criteria - [ ] Un mode explicite « Saisir les jours déjà posés » présente l’horizon actuellement choisi et permet de sélectionner CP, RTT ou Autre. Autre couvre toutes les autres raisons de ne pas travailler ; ANY reste uniquement un sélecteur de règle. - [ ] Un clic sur une date admissible ajoute le type sélectionné ; un deuxième clic avec ce type supprime la déclaration ; un clic avec un autre type la remplace. Une date porte au maximum une déclaration. - [ ] Seuls les jours du lundi au vendredi hors jours fériés français nationaux sont admissibles. Les commandes et les cases sont utilisables au clavier ; le type et le marquage immédiat « Déjà posé » sont accessibles aux lecteurs d’écran et reconnaissables sans la seule couleur. - [ ] Les déclarations sont sauvegardées automatiquement dans le navigateur, indépendamment des soldes et de l’horizon, puis restaurées avant le calcul initial. En l’absence de déclarations sauvegardées, la liste est vide. Changer d’horizon conserve les dates hors de la période affichée et leurs types. - [ ] Ajouter, supprimer ou remplacer une déclaration ne modifie aucune quantité de solde. Une déclaration n’exige pas de solde source et ne devient pas un placement consommant un droit. - [ ] Les clics de saisie ne lancent pas de calcul. Calculer soumet les déclarations avec les autres saisies ; en consultation, le résultat précédent conserve son horizon et ses déclarations jusqu’au résultat du nouveau calcul. Modifier les saisies après soumission ne change pas le contexte de ce calcul. - [ ] Le chemin de calcul direct et le worker utilisent les mêmes déclarations. Aucun nouveau placement, déplacement d’optimisation ou déplacement hypothétique ne peut occuper une date déclarée ; aucune déclaration ne peut être déplacée, supprimée ou retypée par ces opérations. - [ ] Le calendrier de consultation identifie les déclarations du résultat comme des saisies utilisateur, avec leur type et sans débit ni décision d’optimisation fictifs. Les explications, la trace originale et les comparaisons des nouveaux placements conservent les données du calcul qui les a produits. - [ ] Une annulation avec un meilleur plan valide conserve ses déclarations fixes ; une annulation sans plan conserve le résultat incomplet existant. Les données malformées relèvent d’une entrée invalide, et une requête sans déclaration conserve le comportement existant. - [ ] Les tests de comportement couvrent les trois opérations de saisie, l’accessibilité, les dates interdites, la restauration et la conservation hors horizon, l’absence de modification des soldes, la soumission explicite et l’immuabilité du résultat. Un scénario de planification sans règle vérifie l’absence de chevauchement par le chemin direct et le worker, y compris dans un plan annulé et une comparaison de date. Les périodes de repos et les contributions aux règles seront ajoutées par les tickets suivants. Ce ticket est démontrable avec des règles désactivées : déclarer une date, calculer des congés restants, constater qu’elle reste fixe et ne reçoit aucun nouveau placement, puis recharger la page. ## Blocked by - None — can start immediately.
nessar commented 2026-10-05 18:51:52 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in issue #62

mentioned in issue #62
nessar commented 2026-10-05 18:53:06 +02:00 (Migrated from 172.24.0.1:8928)

changed the description

changed the description
nessar commented 2026-10-05 18:53:13 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in issue #63

mentioned in issue #63
nessar commented 2026-10-07 00:24:24 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in issue #69

mentioned in issue #69
nessar (Migrated from 172.24.0.1:8928) closed this issue 2026-10-07 00:28:11 +02:00
admin-backup commented 2026-10-07 00:28:18 +02:00 (Migrated from 172.24.0.1:8928)

mentioned in commit 036a8c0e1e

mentioned in commit 036a8c0e1ef84da62a14bff0df9a5702d6a93e37

Preserved GitLab #61 history: source attribution, exact timestamps, discussion grouping and review positions. Historical diff snapshots: 0; visible source notes: 5.

gitlab-35-issue-61.md (SHA-256 90e651cf7639b2e0bb88799978c5df81541d40588e820c0084b5e13caedd8a3e)

gitlab-35-issue-61.json (SHA-256 4428684352e6333496d3eeee8ed1e000cf221bf6ce45107e42c919271cf1a2e2)

Old CI job execution and reports are omitted. Original source files and rollback backups remain protected.

<!-- gitlab-to-gitea-history:35:Issue:61 --> Preserved GitLab #61 history: source attribution, exact timestamps, discussion grouping and review positions. Historical diff snapshots: 0; visible source notes: 5. [gitlab-35-issue-61.md](https://gitea.nessar.fr/attachments/34a54f7c-2745-41ff-bb53-0b0629fb8a3f) (SHA-256 `90e651cf7639b2e0bb88799978c5df81541d40588e820c0084b5e13caedd8a3e`) [gitlab-35-issue-61.json](https://gitea.nessar.fr/attachments/00e37295-5a29-44ba-91f6-e13d94f1cfce) (SHA-256 `4428684352e6333496d3eeee8ed1e000cf221bf6ce45107e42c919271cf1a2e2`) Old CI job execution and reports are omitted. Original source files and rollback backups remain protected.
gitea-emergency added this to the Development project 2026-10-11 22:14:31 +02:00
gitea-emergency moved this to Closed in Development on 2026-10-11 22:14:31 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nessar/vac-optimizer#61