From a725d4c7d28fee701b6997cc46cffddefbcd26bf Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Wed, 30 Sep 2026 22:13:07 +0200 Subject: Allow granular routine frequencies like 5/2w --- scripts/seed-sheet1-routines.ts | 66 ++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 33 deletions(-) (limited to 'scripts/seed-sheet1-routines.ts') diff --git a/scripts/seed-sheet1-routines.ts b/scripts/seed-sheet1-routines.ts index 3e3a286..2e1df37 100644 --- a/scripts/seed-sheet1-routines.ts +++ b/scripts/seed-sheet1-routines.ts @@ -4,7 +4,7 @@ * What the photo shows: rows = tasks grouped by room, columns = ISO week * numbers of year 2026 (confirmed by user). An X = "done that week". * No explicit target frequencies are written anywhere, so every - * `frequencyDays` below is INFERRED from the gaps between X marks — each one + * `frequency` below is INFERRED from the gaps between X marks — each one * carries a `TODO(you)` comment with the observed weeks. Search for * `TODO(you)` and set the real intervals. * All routines live in the single 'Ménage' project; rooms are a 'Room/Task' @@ -42,7 +42,7 @@ import { createClient } from '@libsql/client'; type SeedRoutine = { name: string; // 'Room/Task' — slash prefix groups by room inside the single project - frequencyDays: number; + frequency: string; /** Last checked ISO week of 2026 read off the sheet; null = never checked. */ lastWeek2026: number | null; /** What the task covers (common-wisdom baseline, adapt freely). */ @@ -68,14 +68,14 @@ const ROUTINES: SeedRoutine[] = [ // ---- Ménage ---- { name: 'Aspirateur', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 37, description: 'Sols, tapis, plinthes et dessous des meubles. Vider le bac, nettoyer brosse et filtre quand l’aspiration baisse.', }, { name: 'Serpillère', - frequencyDays: 14, + frequency: '14d', lastWeek2026: 34, description: 'Après aspiration, serpillère bien essorée. Insister entrées et cuisine. Rincer la tête après usage.', @@ -83,7 +83,7 @@ const ROUTINES: SeedRoutine[] = [ // --- Bureau --- { name: 'Bureau/Vitres', - frequencyDays: 180, + frequency: '180d', lastWeek2026: 22, description: 'Cadres puis vitre, de haut en bas, par temps couvert. Rails et joints dépoussiérés.', @@ -91,13 +91,13 @@ const ROUTINES: SeedRoutine[] = [ // ---- Chambre rose ---- { name: 'Chambre rose/Draps', - frequencyDays: 14, + frequency: '14d', lastWeek2026: 31, description: 'Draps + taies changés, matelas aéré 30 min. Lavage à 60 °C.', }, { name: 'Chambre rose/Vitres', - frequencyDays: 180, + frequency: '180d', lastWeek2026: 22, description: 'Cadres puis vitre, de haut en bas, par temps couvert. Rails et joints dépoussiérés.', @@ -105,7 +105,7 @@ const ROUTINES: SeedRoutine[] = [ // --- Chambre verte --- { name: 'Chambre verte/Vitres', - frequencyDays: 180, + frequency: '180d', lastWeek2026: 22, description: 'Cadres puis vitre, de haut en bas, par temps couvert. Rails et joints dépoussiérés.', @@ -113,69 +113,69 @@ const ROUTINES: SeedRoutine[] = [ // ---- Cuisine ---- { name: 'Cuisine/Vitres', - frequencyDays: 180, + frequency: '180d', lastWeek2026: 22, description: 'Cadres puis vitre, de haut en bas, par temps couvert. Rails et joints dépoussiérés.', }, { name: 'Cuisine/Cafetière', - frequencyDays: 30, + frequency: '30d', lastWeek2026: 12, description: 'Détartrer puis rincer deux fois. Réservoir et porte-filtre lavés, filtre à eau selon notice.', }, { name: 'Cuisine/Lave-vaisselle', - frequencyDays: 30, + frequency: '30d', lastWeek2026: 32, description: 'Filtre et bras gicleurs nettoyés, joints essuyés, cycle vide à chaud.', }, { name: 'Cuisine/Placard', - frequencyDays: 90, + frequency: '90d', lastWeek2026: 19, description: 'Vider, trier dates, jeter les périmés, essuyer étagères. Lourds en bas.', }, { name: 'Cuisine/Four', - frequencyDays: 90, + frequency: '90d', lastWeek2026: 32, description: 'Pyrolyse ou produit avec temps de pose, vitre et lèchefrite à part. Grilles trempées au bicarbonate.', }, { name: 'Cuisine/Frigo', - frequencyDays: 30, + frequency: '30d', lastWeek2026: 22, description: 'Périmés jetés, clayettes lavées, température ~4 °C vérifiée, joints essuyés.', }, { name: 'Cuisine/Micro-ondes', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 32, description: 'Bol d’eau vinaigrée chauffé 3 à 5 min puis essuyage parois et plateau. Sans gratter à sec.', }, { name: 'Cuisine/Surfaces', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 32, description: 'Plan de travail et crédence dégraissés, rincés, séchés.', }, { name: 'Cuisine/Gazinière', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 32, description: 'Grilles et chapeaux trempés, plaque dégraissée, gicleurs débouchés si flamme irrégulière.', }, { name: 'Cuisine/Évier', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 32, description: 'Cuve et robinet détartrés et désinfectés, bonde et trop-plein nettoyés.', @@ -183,76 +183,76 @@ const ROUTINES: SeedRoutine[] = [ // ---- Toilettes ---- { name: 'Toilettes/Toilettes', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 34, description: 'Cuvette dedans et dehors, abattant et charnières, chasse et poignée, sol autour. Laisser agir le produit.', }, { name: 'Toilettes/Lavabo', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 34, description: 'Vasque et robinet, miroir, poubelle vidée, savon rechargé.', }, // ---- Salle de bain ---- { name: 'Salle de bain/Joints', - frequencyDays: 90, + frequency: '90d', lastWeek2026: 12, description: 'Brossés au bicarbonate + vinaigre, rincés, séchés. Aérer pour limiter les moisissures.', }, { name: 'Salle de bain/Calcaire', - frequencyDays: 14, + frequency: '14d', lastWeek2026: 34, description: 'Vinaigre sur paroi, robinetterie et pommeau (trempage), rinçage abondant.', }, { name: 'Salle de bain/Canalisations', - frequencyDays: 30, + frequency: '30d', lastWeek2026: 34, description: 'Bicarbonate + vinaigre + eau chaude, temps de pose. Pas de soude sauf bouchon avéré.', }, { name: 'Salle de bain/Porte-serviettes', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 34, description: 'Serviettes lavées, barre et crochets dépoussiérés et essuyés.', }, { name: 'Salle de bain/Baignoire', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 34, description: 'Parois et fond anti-calcaire, joints, bonde et trop-plein. Rincer et sécher.', }, { name: 'Salle de bain/Miroir', - frequencyDays: 14, + frequency: '14d', lastWeek2026: 34, description: 'Microfibre + eau vinaigrée, sans détremper cadre et bords.', }, { name: 'Salle de bain/Lavabo', - frequencyDays: 7, + frequency: '7d', lastWeek2026: 34, description: 'Vasque, robinet, bonde (cheveux), miroir, savon rechargé.', }, // ---- Salon ---- { name: 'Salon/Vitres', - frequencyDays: 180, + frequency: '180d', lastWeek2026: 22, description: 'Cadres puis vitre, de haut en bas, par temps couvert. Rails et joints dépoussiérés.', }, { name: 'Salon/Placards', - frequencyDays: 90, + frequency: '90d', lastWeek2026: null, // no marks → no completion description: 'Vider, trier (donner, jeter), dépoussiérer, ranger par usage.', @@ -260,7 +260,7 @@ const ROUTINES: SeedRoutine[] = [ // ---- Terrasse ---- { name: 'Terrasse/Sol', - frequencyDays: 60, + frequency: '60d', lastWeek2026: 25, description: 'Balayé puis lavé, joints désherbés, mobilier contrôlé selon saison.', @@ -306,11 +306,11 @@ for (const r of ROUTINES) { await client.execute({ sql: `INSERT INTO routines - (id, version, project_id, name, frequency_days, description, archived, archived_at, created_at) + (id, version, project_id, name, frequency, description, archived, archived_at, created_at) VALUES (?, 1, ?, ?, ?, ?, 0, NULL, ?)`, - args: [routineId, projectId, r.name, r.frequencyDays, r.description, now], + args: [routineId, projectId, r.name, r.frequency, r.description, now], }); - console.log(`add [${PROJECT}] ${r.name} every ${r.frequencyDays}d`); + console.log(`add [${PROJECT}] ${r.name} every ${r.frequency}`); createdRoutines++; } -- cgit v1.3