diff --git a/project-plan/checklist-execution.md b/project-plan/checklist-execution.md index a89b50d..d69f324 100644 --- a/project-plan/checklist-execution.md +++ b/project-plan/checklist-execution.md @@ -180,28 +180,30 @@ Objectif: transformer état actuel (partiellement implémenté) vers produit fon ## 3) Frontend web (`gmail-interface-clone`) +> **Avancement (2026-05-23)** — migration offline-first API dans `gmail-interface-clone` : **13/22** items section 3 cochés. Reste : settings mail backend, cleanup fichiers mock, recherche sans fallback offline, sync par compte, modules suite (§3.4), a11y/i18n/perf (§3.6). + ### 3.1 Fondation data/API -- [ ] Remplacer `lib/email-data.ts` par source serveur paginée. -- [ ] Remplacer `lib/contacts/mock-data.ts` et `mock-accounts` par API backend. -- [ ] Créer client API unique (baseURL, auth bearer, gestion erreurs, timeout, retry). -- [ ] Ajouter couche query/cache (SWR ou TanStack Query). -- [ ] Définir contrat TypeScript partagé avec backend (DTOs versionnés). +- [x] Remplacer `lib/email-data.ts` par source serveur paginée. *(frontend: `use-mail-queries` + adapters; `email-data.ts` conservé pour types uniquement — suppression fichier TBD)* +- [x] Remplacer `lib/contacts/mock-data.ts` et `mock-accounts` par API backend. *(frontend: `use-contact-queries`, `useMailAccounts`; mocks non importés hors fichiers définition — suppression fichiers TBD)* +- [x] Créer client API unique (baseURL, auth bearer, gestion erreurs, timeout, retry). *(frontend: `lib/api/client.ts`, `auth-store.ts`)* +- [x] Ajouter couche query/cache (SWR ou TanStack Query). *(frontend: `@tanstack/react-query` + persist `idb`, `query-provider.tsx`, `offline-queue.ts`)* +- [ ] Définir contrat TypeScript partagé avec backend (DTOs versionnés). *(frontend: `lib/api/types.ts` aligné API; package monorepo partagé TBD)* ### 3.2 Mail UI -- [ ] Brancher liste mails, lecture, flags, labels, delete sur `/api/v1/mail`. -- [ ] Brancher compose/send/scheduled sur outbox backend. -- [ ] Brancher recherche UI sur backend search (fallback local supprimé). -- [ ] Brancher multi-comptes réels (accounts API + switch account effectif). -- [ ] Brancher settings (pas page placeholder) avec persistance backend. +- [x] Brancher liste mails, lecture, flags, labels, delete sur `/api/v1/mail`. *(frontend: `use-mail-queries` / `use-mail-mutations`, composants liste + vue)* +- [x] Brancher compose/send/scheduled sur outbox backend. *(frontend: `use-compose-mutations`, `scheduled-store` outbox)* +- [ ] Brancher recherche UI sur backend search (fallback local supprimé). *(frontend: `useMailSearch` → `/mail/search` + fallback cache offline; autocomplete `search-engine` locale conservée)* +- [x] Brancher multi-comptes réels (accounts API + switch account effectif). *(frontend: `useMailAccounts`, `account-store` sans `MOCK_USER_ACCOUNTS`)* +- [ ] Brancher settings (pas page placeholder) avec persistance backend. *(frontend: `mail-settings-store` local — pas d'endpoint settings backend)* ### 3.3 Contacts UI -- [ ] Brancher store contacts sur API contacts. -- [ ] Brancher création/édition/suppression/fusion sur backend. -- [ ] Brancher import/export vCard/CSV. -- [ ] Ajouter état synchronisation + résolution conflits. +- [x] Brancher store contacts sur API contacts. *(frontend: `use-contacts-list`, store UI-only `contacts-store.ts`)* +- [x] Brancher création/édition/suppression/fusion sur backend. *(frontend: `use-contact-mutations`, pages contacts + `merge-duplicates-view`)* +- [x] Brancher import/export vCard/CSV. *(frontend: `import-dialog` → API create; export CSV/vCard client depuis sélection)* +- [ ] Ajouter état synchronisation + résolution conflits. *(frontend: bannière sync mail globale seulement — pas conflits CardDAV)* ### 3.4 Agenda/Drive/Meet/Photos UI @@ -212,10 +214,10 @@ Objectif: transformer état actuel (partiellement implémenté) vers produit fon ### 3.5 Realtime UX -- [ ] Connecter WS sécurisé. -- [ ] Rafraîchir liste/detail sans reload quand events backend arrivent. -- [ ] Gérer offline/reconnect/sync status visible. -- [ ] Ajouter indicateur santé sync par compte. +- [x] Connecter WS sécurisé. *(frontend: `lib/api/ws.ts` token + `since` seq)* +- [x] Rafraîchir liste/detail sans reload quand events backend arrivent. *(frontend: invalidation TanStack Query sur events WS)* +- [x] Gérer offline/reconnect/sync status visible. *(frontend: `sync-status-bar.tsx`, `use-network-status.ts`, flush `offline-queue`)* +- [ ] Ajouter indicateur santé sync par compte. *(frontend: barre globale offline/syncing — pas indicateur par compte mail)* ### 3.6 Accessibilité, i18n, perf