Répéter un créneau sur plusieurs jours

Le panneau créait un créneau, pour un jour. Or un même horaire se répète d'un
jour à l'autre bien plus souvent qu'il ne varie : ressaisir cinq fois
« 9 h–17 h, pause 30 » était le geste le plus répété de la semaine, et le plus
exposé à la faute de frappe.

Les sept jours sont désormais cochables. Le jour ouvert est coché et verrouillé
— on ne crée pas ailleurs qu'ici depuis la case d'un jour donné — et voyage dans
un champ caché, puisqu'une case désactivée n'est pas envoyée.

La création est **tout ou rien**. Un jour refusé, pour période close ou
chevauchement, annule les autres : une répétition à demi appliquée laisserait un
planning que personne n'a voulu, et qu'il faudrait défaire à la main pour le
refaire. Le contrôle de période porte donc sur tous les jours demandés avant la
première écriture.

Trois champs du modèle étaient inatteignables depuis l'écran : le nombre de
repas, la note du créneau, et l'étiquette en modification. Cette dernière était
un vrai défaut — une étiquette posée de travers se corrigeait en supprimant le
créneau pour le refaire, ce qui perdait sa validation et son historique.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Opus 5 committed 2026-08-11 13:54:26 +02:00
1 parent 804e14bf04
commit aa7336d749
6 files changed
+236 -74

No files matched your search

+4
View File
@@ -33,7 +33,9 @@ const shift = (
startAt: zonedInstant(date, start, TZ),
endAt: zonedInstant(date, end, TZ),
breakMinutes: 0,
mealCount: 0,
poste: 'vte',
labelId: null,
isValidated: false,
note: null,
...over,
@@ -89,7 +91,9 @@ describe('buildRows', () => {
startAt,
endAt,
breakMinutes: 0,
mealCount: 0,
poste: 'inv',
labelId: null,
isValidated: false,
note: null,
},
+2
View File
@@ -35,6 +35,8 @@ const shift: BoardRow['days'][number][number] = {
time: '09:00–17:00',
minutes: 480,
breakMinutes: 30,
mealCount: 0,
labelId: null,
state: 'published',
note: null,
};