You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Migration : users.locale, users.notification_prefs, PATCH /me et POST /me/devices avec la langue #197
users.locale (fr, en ou nul = langue du téléphone) ; users.notification_prefs jsonb { reminders, next_day, my_routes }, true par défaut.
PATCH /me accepte locale et notificationPrefs ; GET /me les renvoie.
notificationPrefs porte les clés du wiki (API › Compte, D-062) : { reminders, nextDay, myRoutes }. Les clés provisoires livrées par Exposer et enregistrer le profil complet dans GET /me, PATCH /me et /config #385 (plannedRouteReminders, creatorPush, creatorEmail, packages/shared/src/schemas/me.ts, « Keys to confirm with the E-09 mock-up ») sont remplacées, schéma partagé compris (amendement MANAGER du 2026-10-14).
POST /me/devices enregistre la langue du téléphone avec le jeton push.
Critères d'acceptation
Migration appliquée en staging
Langue effective d'un utilisateur = users.locale, sinon langue du dernier appareil, sinon fr
GET /me et PATCH /me n'exposent plus que reminders, nextDay et myRoutes dans notificationPrefs ; les anciennes clés sont refusées en 422 ; tests
📋 Amendement MANAGER du 2026-10-14, suite à la découverte de CODE pendant #387 : l'API livrée par #385 expose notificationPrefs avec des clés provisoires (plannedRouteReminders, creatorPush, creatorEmail) qui ne correspondent pas à celles du wiki (API › Compte, D-062 : { reminders, nextDay, myRoutes }, et settings.notifications.types de tokens.json : reminders, next_day, my_routes). Le contrat validé fait foi : ce ticket les remplace (puce et critère ajoutés). À livrer avant la page Notifications de #189.
packages/shared : langues fr/en et règle de la langue effective (compte, sinon dernier appareil, sinon fr), testée ; NotificationPrefs passe aux clés du wiki { reminders, nextDay, myRoutes } (clés provisoires de Exposer et enregistrer le profil complet dans GET /me, PATCH /me et /config #385 retirées, refusées en 422) ; locale dans Me et UpdateMe ; corps de POST /me/devices ({ pushToken, locale }, jeton Expo validé).
apps/api : migration additive 0010 (users.locale nullable avec contrôle fr/en, table devices : jeton push unique, langue du téléphone, effacée avec le compte) ; préférences stockées en { reminders, next_day, my_routes } (Modele-de-Donnees) ; GET/PATCH /me avec locale ; POST /me/devices (204, un jeton appartient au dernier compte connecté sur le téléphone) ; suppression des appareils à la suppression du compte ; tests, dont l'absence du jeton dans les journaux.
packages/api-client : ajout de registerDevice seulement.
Branche issue/197-user-locale-notification-prefs, niveau 2 attendu (migration additive, données personnelles nouvelles).
📋 MANAGER (2026-10-14) : déploiement staging vérifié en lecture. Run deploy-staging.yml sur main au commit 2b21b3b (PR #441) en succès à 13:59Z (run 38576237207), puis 9faeb29 en succès à 14:11Z ; job Cloud Run widoo-api-migrate (widoo-staging, europe-west9) : exécution widoo-api-migrate-j8dfl réussie (1/1) à 14:10:56Z, postérieure à 14:00Z, migrations 0010 et 0011 incluses. Status → Terminés.
Activity
PaulThiberville commentedon Oct 14, 2026
📋 Amendement MANAGER du 2026-10-14, suite à la découverte de CODE pendant #387 : l'API livrée par #385 expose
notificationPrefsavec des clés provisoires (plannedRouteReminders,creatorPush,creatorEmail) qui ne correspondent pas à celles du wiki (API › Compte, D-062 :{ reminders, nextDay, myRoutes }, etsettings.notifications.typesde tokens.json :reminders,next_day,my_routes). Le contrat validé fait foi : ce ticket les remplace (puce et critère ajoutés). À livrer avant la page Notifications de #189.PaulThiberville commentedon Oct 14, 2026
🔨 Démarrage — plan :
packages/shared: languesfr/enet règle de la langue effective (compte, sinon dernier appareil, sinonfr), testée ;NotificationPrefspasse aux clés du wiki{ reminders, nextDay, myRoutes }(clés provisoires de Exposer et enregistrer le profil complet dans GET /me, PATCH /me et /config #385 retirées, refusées en 422) ;localedansMeetUpdateMe; corps dePOST /me/devices({ pushToken, locale }, jeton Expo validé).apps/api: migration additive0010(users.localenullable avec contrôlefr/en, tabledevices: jeton push unique, langue du téléphone, effacée avec le compte) ; préférences stockées en{ reminders, next_day, my_routes }(Modele-de-Donnees) ;GET/PATCH /meaveclocale;POST /me/devices(204, un jeton appartient au dernier compte connecté sur le téléphone) ; suppression des appareils à la suppression du compte ; tests, dont l'absence du jeton dans les journaux.packages/api-client: ajout deregisterDeviceseulement.Branche
issue/197-user-locale-notification-prefs, niveau 2 attendu (migration additive, données personnelles nouvelles).PaulThiberville commentedon Oct 14, 2026
📋 MANAGER (2026-10-14) : déploiement staging vérifié en lecture. Run
deploy-staging.ymlsurmainau commit2b21b3b(PR #441) en succès à 13:59Z (run 38576237207), puis9faeb29en succès à 14:11Z ; job Cloud Runwidoo-api-migrate(widoo-staging, europe-west9) : exécutionwidoo-api-migrate-j8dflréussie (1/1) à 14:10:56Z, postérieure à 14:00Z, migrations 0010 et 0011 incluses. Status → Terminés.