- Added new endpoints for listing trash, recent, and starred files. - Implemented chunked file uploads to support large file handling. - Introduced copy and rename functionalities for file management. - Enhanced error handling with specific drive-related error responses. - Updated validation for copy and rename requests. - Improved service methods to handle new functionalities and ensure quota checks. - Updated project checklist to reflect completion of file management features.
12 KiB
12 KiB
Ulti Suite — Checklist d'exécution complète
Objectif: transformer état actuel (partiellement implémenté) vers produit fonctionnel bout en bout.
0) Gouvernance & alignement docs
- Mettre à jour statuts dans
project-plan/README.mdselon réalité code (ne plus marquer "Planifié" ce qui existe déjà en API). - Séparer clairement, dans chaque
.md, ce qui est déjà implémenté, partiel, non commencé. - Définir roadmap officielle en 3 phases: MVP fonctionnel, hardening, différenciation IA/automations.
- Ajouter "Definition of Done" par service (backend, frontend, sécurité, tests, observabilité).
Owners nominaux (pilotage)
| Stream | Owner nominal | Backup |
|---|---|---|
| Produit / priorisation | @PO |
@Lead |
| Backend core mail | @BE-Core |
@BE-Platform |
| Intégrations suite (NC/Jitsi/Immich) | @BE-Integrations |
@BE-Core |
| Frontend web | @FE-Lead |
@FE-App |
| Sécurité | @Security |
@BE-Platform |
| Infra / DevOps / Observabilité | @DevOps |
@SRE |
| QA / tests e2e | @QA |
@FE-App |
1) Fondations transverses (obligatoire avant features)
Auth, identité, permissions
- Imposer auth OIDC sur toutes routes privées, sans mode silencieux en prod.
- Créer middleware de rôles (admin/user/service) et l'appliquer sur
/api/v1/admin. - Mapper comptes Ulti ↔ comptes mail externes avec règles ownership strictes.
- Ajouter journal d'audit sécurité (login, token rejeté, action admin, suppression critique).
- Définir modèle permissions commun (read/write/admin) réutilisable Drive/Photos/Contacts/Agenda.
Sécurité secrets & credentials
- Chiffrer credentials IMAP/SMTP au repos (AES-GCM + key rotation planifiée).
- Interdire stockage plaintext secrets dans DB.
- Centraliser gestion secrets
.env/runtime pour dev/prod. - Ajouter politique rotation secrets (OIDC, SMTP, webhook shared secrets).
- Ajouter validation stricte inputs (URL webhooks, payload size, MIME, etc.).
Qualité backend
- Ajouter couche service claire entre handlers HTTP et accès DB.
- Uniformiser erreurs API (code, message, details, trace id).
- Ajouter validations payload complètes sur tous endpoints.
- Ajouter pagination/filtrage standard partout (contacts, events, files, assets, messages).
- Ajouter migrations DB manquantes pour besoins réels (indexes, contraintes d'intégrité, FK manquantes).
Observabilité & exploitation
- Ajouter request-id/correlation-id dans logs.
- Ajouter métriques Prometheus (latence, erreurs, jobs sync, queue outbox, webhook success rate).
- Ajouter health checks détaillés (DB, Redis/KeyDB, Nextcloud, Immich, Jitsi).
- Ajouter dashboard Grafana baseline.
- Définir alerting (mail sync bloquée, outbox bloquée, erreurs 5xx anormales).
Tests & CI
- Couvrir endpoints critiques par tests d'intégration.
- Ajouter tests worker IMAP/smtp outbox/rules/webhooks.
- Ajouter tests de migration DB en CI.
- Ajouter tests e2e frontend sur parcours clés (lire mail, envoyer, planifier, rechercher).
- Bloquer merge si tests critiques échouent.
2) Backend monolithe (ulti-backend)
2.1 API Mail (Ultimail backend)
Correctifs prioritaires
- Corriger logique outbox "scheduled" vs "queued" pour envoi planifié.
- Vérifier ownership sur
UpdateLabels,UpdateFlags,DeleteMessage,UpdateRule,DeleteRule,DeleteWebhook. - Corriger flux création utilisateur manquant (external_id OIDC absent -> échec sous-requêtes user_id).
- Ajouter gestion robuste erreurs SQL (
rows.Scan,Execresult check,rows.Err). - Corriger cohérence threading (
thread_id,references,in_reply_to).
Implémentation manquante
- Endpoint brouillons (create/update/delete/list).
- Endpoint pièces jointes (upload/download/inline/cid mapping).
- Endpoint dossiers/labels (CRUD + mapping IMAP flags/folders).
- Endpoint recherche avancée (filtres expéditeur, date, attachment, label, account).
- Endpoint identities (alias/from/reply-to/signature par compte).
Hardening
- Limiter taille body/attachments.
- Sanitizer HTML côté lecture.
- Protection anti-abus envoi (rate limit, retry backoff, circuit breaker SMTP).
- Idempotency key sur envoi.
2.2 Sync IMAP & pipeline mail
- Persister état sync incrémental fiable (UIDVALIDITY, MODSEQ, last seen UID).
- Support suppressions/updates IMAP, pas seulement insert nouveaux messages.
- Gérer dossiers spéciaux (Sent/Drafts/Trash/Archive/Spam) cross-provider.
- Extraire et stocker attachments vers object storage.
- Lancer rules engine à réception et tracer résultats.
- Déclencher webhooks selon règles matchées.
- Publier events realtime WS après sync.
2.3 SMTP / Outbox / Scheduling
- Normaliser statuts outbox (
draft,queued,scheduled,sending,sent,failed,cancelled). - Implémenter retries exponentiels + dead-letter strategy.
- Implémenter "send now", "reschedule", "cancel scheduled".
- Écrire message envoyé dans dossier Sent (sync cohérente UI).
- Gérer inline attachments MIME multipart mixed/alternative.
2.4 Rules & Webhooks
- Câbler réellement
rules.Enginedans pipeline réception. - Câbler réellement
webhooks.Executordepuis actions de règles. - Ajouter simulation/test endpoint "run rule on sample message".
- Ajouter templates webhook versionnés + preview rendu variables.
- Ajouter signatures webhook (HMAC) + retry + backoff + DLQ.
- Ajouter observabilité des exécutions (latence, erreur, payload tronqué).
2.5 Realtime (/ws)
- Remplacer
user_idquery param non sûr par auth token WS. - Ajouter événements typés (mail.created, mail.updated, outbox.updated, contact.updated...).
- Ajouter heartbeat/ping/pong.
- Gérer reconnexion client + rattrapage delta.
- Limiter connexions par user/session.
2.6 Search
- Finaliser recherche events (Agenda) et contacts (CardDAV), pas fallback users local.
- Ajouter recherche multi-index (mail+contacts+files+events) avec score unifié.
- Ajouter snippets contextuels et highlighting.
- Ajouter filtres type/date/account.
- Préparer option Meilisearch/Typesense activable.
2.7 Modules suite (Drive/Calendar/Contacts/Meet/Photos/Admin)
Drive
- Ajouter upload chunked gros fichiers.
- Ajouter rename/copy/list trash/recent/starred.
- Ajouter ACL simplifiées (owner/editor/viewer) mappées correctement.
- Ajouter quotas et erreurs métier propres.
Calendar
- Ajouter update événement + gestion ETag/If-Match.
- Ajouter invitations/réponses participants.
- Ajouter free/busy endpoint.
- Ajouter création lien Meet auto depuis event.
Contacts
- Ajouter update contact + ETag.
- Ajouter sync incrémentale (sync-token).
- Ajouter fusion doublons serveur.
- Ajouter endpoints enrichissement interactions mail/réunions/fichiers.
Meet
- Valider claims JWT Jitsi (iss/sub/aud/domain) selon déploiement réel.
- Ajouter logique droits modérateur (owner room, policy).
- Ajouter enregistrement + stockage Drive.
- Ajouter métadonnées sessions (participants, durée, logs).
Photos
- Corriger mapping API Immich (champs JSON exacts, erreurs HTTP).
- Ajouter pagination/tri/filtres robustes.
- Ajouter albums CRUD complets.
- Ajouter liaison stockage/quota avec Ultidrive.
Admin
- Ajouter RBAC admin strict.
- Ajouter CRUD utilisateurs complet (create/invite/disable/reactivate).
- Ajouter quotas multi-service (mail/drive/photos).
- Ajouter pages stats exploitables + export audit.
3) Frontend web (gmail-interface-clone)
3.1 Fondation data/API
- Remplacer
lib/email-data.tspar source serveur paginée. - Remplacer
lib/contacts/mock-data.tsetmock-accountspar 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).
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.
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.
3.4 Agenda/Drive/Meet/Photos UI
- Créer shell pages front pour chaque service avec navigation cohérente.
- Implémenter workflows MVP: Drive list/upload/download, Agenda list/create event, Meet create/join, Photos list/upload.
- Réutiliser patterns UI partagés (toasts, loaders, erreurs, confirmations).
- Ajouter permissions UI selon rôle.
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.
3.6 Accessibilité, i18n, perf
- Audit a11y (navigation clavier, aria, contraste).
- Uniformiser FR/EN i18n.
- Réduire payload initial (code splitting, lazy heavy panels).
- Mesurer Core Web Vitals et fixer régressions.
4) Infrastructure & déploiement
Docker/compose/proxy
- Vérifier routes nginx (
/api,/ws,/cloud,/meet,/auth) en env réel. - Ajouter TLS (Let's Encrypt ou reverse proxy dédié) pour prod.
- Ajouter limites upload/timeout proxy adaptées gros fichiers.
- Ajouter profiles compose clairs (dev, prod, modules optionnels).
Données & backup
- Politique backup PostgreSQL + object storage + Nextcloud.
- Test restauration périodique.
- Politique rétention logs et audit.
Sécurité runtime
- Durcir containers (users non-root, capabilities minimales, seccomp).
- Mettre scan vulnérabilités dépendances/images en CI.
- Ajouter CSP/headers sécurité côté frontend + proxy.
5) Plateformes futures
Desktop (Tauri)
- Initialiser wrapper Tauri.
- Gérer auth desktop sécurisée (token storage natif).
- Ajouter notifications système.
- Ajouter intégration filesystem native (uploads drag/drop large files).
Mobile
- Définir stratégie mobile (PWA avancée vs app native).
- Implémenter MVP mobile mail (liste/lecture/compose simple).
- Ajouter sync background + notifications push.
6) Validation "ça fonctionne"
Parcours utilisateur obligatoires
- Connecter compte OIDC, créer compte mail IMAP/SMTP, voir inbox sync.
- Lire mail HTML/texte + télécharger pièce jointe.
- Envoyer mail immédiat, vérifier réception et dossier Sent.
- Planifier envoi, replanifier, envoyer maintenant.
- Créer règle (label + webhook), vérifier exécution réelle.
- Rechercher mail/contact/event depuis recherche globale.
- Créer contact, retrouver en auto-complétion compose.
- Créer événement agenda + lien meet + invitation mail.
- Upload fichier drive + partage lien.
SLO minima
- API p95 < 300ms hors endpoints lourds.
- Échec sync mail < 1% sur 24h.
- Taux succès webhook > 99% hors erreurs distantes.
- Disponibilité service mensuelle cible >= 99.5%.
Ordre recommandé d'exécution
- Blocage critique: sécurité credentials + auth/rbac + bug outbox scheduled.
- MVP mail réel: sync IMAP fiable + outbox + UI branchée backend.
- Intégrations suite MVP: contacts/calendar/drive branchés parcours simples.
- Observabilité + tests: CI solide, dashboards, alerting.
- Différenciation: règles avancées, webhooks templates, IA.