Skip to content

Migration : users.locale, users.notification_prefs, PATCH /me et POST /me/devices avec la langue #197

Closed

Description

@IlanAMG

Contexte

Epic : #6
Maquette : E-19 (Langue, Notifications) · validée le 2026-09-28
D-062 (https://github.com/Inprogress-Agency/widoo-app/wiki/Design-Changelog) · Perimetre-MVP · Architecture-Technique › i18n · Modele-de-Donnees · API

Comportement attendu

  • 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

Activity

  1. added this to the v0.3 milestone on Sep 28, 2026
  2. PaulThiberville commented on Oct 14, 2026

    @PaulThiberville
    Collaborator

    📋 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.

  3. PaulThiberville commented on Oct 14, 2026

    @PaulThiberville
    Collaborator

    🔨 Démarrage — plan :

    • 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).
  4. PaulThiberville commented on Oct 14, 2026

    @PaulThiberville
    Collaborator

    📋 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions