PRISME France 2030 · Culture & IA

SPEC — Module Webmail / Mail Assistant

Vérifier la maturitéSpecDoc. générale

Références :

Date : 2026-04-26

Statut : Rédigée — POC mono-utilisateur à intégrer, cible production multiuser PostgreSQL planifiée

Périmètre : intégration du projet mail-assistant comme module applicatif Qwik City accessible sur webmail dans l'application agenda.

Source plan Cursor : .

Complément multiuser : décision utilisateur 2026-04-26 — production multiuser, sauvegarde d'identifiants, cache mail serveur, synchronisations IMAP backend en arrière-plan et réseau fédéré Marty.

Références Plan-Directeur :

Conformité au schéma directeur

Schéma directeurSection de cette SPEC
§1 Contexte & objectif§1
§2 Description fonctionnelle§2
§3 Architecture & références§3
§4 Spécifications techniques détaillées§4
§5 Dépendances & interactions§5
§6 Plan d'implémentation§6
§7 Résultats attendus§7
§8 Suivi & traçabilité§8
§9 Annexes§9

Alignement code (2026-05-27)

Audit spec ↔ dépôt (grep -ri webmail sous src) — ticket #3137. Les chemins ci-dessous sont relatifs à la racine du fork calendrier.

Routes et UI

RôleChemin réel
Page webmailComposant interface (shell + état page ; pas de Composant interface séparé)
API metaPoint d'entrée API
API proposalsPoint d'entrée API
API promptPoint d'entrée API
API mark-processedPoint d'entrée API
API accountsPoint d'entrée API
API test comptePoint d'entrée API
API syncPoint d'entrée API
API sync-statusPoint d'entrée API
API preview mailPoint d'entrée API
API pièce jointePoint d'entrée API
API uploadPoint d'entrée API
Helpers routes APIhelpers
Hors §3.1 spec — export RGPDPoint d'entrée API
Hors §3.1 spec — templatesPoint d'entrée API, Point d'entrée API
Composants UIComposant interface, Composant interface, Composant interface, Composant interface
Garde auth routeprotected paths (webmail, requiresAuth)
i18nmessages {fr,en,es}, domaines core * ; entrée sidebar Composant interface

Bibliothèque webmail

Fichiers sources (hors __tests__ et *.test) : account manager, action compatibility, assistant analysis, audit log, cache invalidation, content length exceeds, credential encryption, credentials, dashboard load, db repository, field visibility, fixtures, imap sync cursors, imap sync plan, imap sync worker, legacy mapping, mark processed post, Signaux d'apprentissage réseau, Suggestions fusion local / fédéré, observability, permissions, quotas, read json body, resolve action mail keys, scenarios, security rgpd, server, sqlite groups, sync brick attachments, sync brick body preview, sync brick folder list, sync brick message envelope, sync brick thread index, Templates e-mail (sources L0–L3), types, webmail a11y, webmail data policy, webmail db schema, webmail pg pool, webmail pg repository ; doc module : .

Tests Vitest (liste exhaustive au 2026-05-27)

webmail.test ; account manager.test, credentials.test, dashboard load.test, db repository.test, fixtures.test, imap sync plan.test, legacy mapping.test, scenarios.test, server.test, sync brick attachments.test, sync brick body preview.test, sync brick folder list.test, sync brick message envelope.test, sync brick thread index.test, webmail a11y.test, webmail db schema.test ; action compatibility.test, assistant analysis.test, audit log.test, cache invalidation.test, content length exceeds.test, credential encryption.test, field visibility.test, imap smtp backend.test, imap sync cursors.test, imap sync worker.test, mark processed post.test, marty signals.test, marty suggestions.test, observability.test, permissions.test, quotas.test, read json body.test, resolve action mail keys.test, security rgpd.test, server contracts.test, sqlite groups.test, sync bricks.test, templates.test, webmail data policy.test, webmail db repository.test, webmail e2e multiuser.test, webmail pg pool.test, webmail worker integration.test ; helpers.test, mark processed route.test, webmail proposals route.test, webmail sync post body.test.

Écarts vs cette SPEC (P0 — #3137)

ZoneSpec (§ / diagramme)Code actuelÉcart
Composants §3.2Composant interface, Composant interface, Composant interface (PascalCase)Page dans Composant interface ; preview prompt inline ; pas de PathPicker dédiéFichiers et découpage UI non alignés sur la nomenclature §3.2
Persistance §3.2 / §3.5hfsql schema, conteneur webmail-hfsql, diagramme §9.2webmail db schema, webmail pg repository, webmail pg pool, db repository ; variables WEBMAIL_PG_* / WEBMAIL_DATABASE_URL (webmail data policy)Doc et mermaid encore centrés HFSQL ; code branché PostgreSQL + alias legacy
Marty / templates §3.2marty template profileSignaux d'apprentissage réseau, Suggestions fusion local / fédéré, Templates e-mail (sources L0–L3)Nom de module spec obsolète
Données serveur §2 / STUB-MOY-005Production multiuser PostgreSQLserver : dispatch shouldServeWebmailFixtures → fixtures si PG absent et hors prodPOC/fixtures encore servis en dev sans PG (#2978, #2985)
Routes API §3.1Liste fermée §3.1+ export-rgpd, templatesEndpoints livrés non documentés en §3.1
Modules métier §3.2Liste courte (9 fichiers)+ briques sync, worker, RGPD, quotas, observabilité, etc. (voir README)Inventaire §3.2 incomplet pour l’audit code
Worker §3.6Service webmail-worker distinctimap sync worker + plan imap sync plan (même dépôt)Séparation processus Docker vs lib à clarifier dans la spec
Tableau §3.4 POCStockage POC = SQLitesqlite groups + groupes via API ; PG optionnelCohérent POC mais libellés §3.4 « HFSQL » en production à harmoniser (cf. décision 2026-05-25 en-tête)

Prochaine passe doc (hors périmètre #3137) : renommer références HFSQL → PostgreSQL dans §3.4–§3.7 et §9.2 ; mettre à jour §3.1–§3.2 avec les chemins kebab-case et modules réels ; traiter les stubs ouverts #2988#2991.

1. Contexte & objectif

Le projet mail-assistant doit être intégré dans l'application agenda comme un module complet de traitement webmail, accessible depuis la route Qwik City webmail.

Le POC est volontairement simple : mono-utilisateur, configuration issue de .env, persistance locale SQLite, traitement local des messages et actions QCM. La cible production évolue vers un modèle multiuser adossé à un PostgreSQL serveur (remplace SQLite et l’ancienne cible HFSQL documentée en 2026-04-26) pour les identifiants, les comptes mail, les états de synchronisation, le cache mail et les préférences de templates.

Décisions utilisateur actées dans cette demande (2026-04-26) :

Objectif métier

Offrir un espace de traitement assisté des mails entrants : lire, regrouper, qualifier, préparer des réponses, classer, archiver, traiter les pièces jointes et générer des prompts/action plans exploitables par l'utilisateur.

Périmètre inclus

Hors périmètre immédiat du POC

Hors périmètre production initiale

2. Description fonctionnelle

2.1 Vue webmail

La page webmail présente une liste de messages regroupés par besoin d'action. L'utilisateur peut traiter les messages un par un ou par sélection multiple.

Comportement attendu :

2.2 Groupes fonctionnels

Les groupes sont calculés côté serveur et mis en cache SQLite. Ils aident l'utilisateur à prioriser sans devenir une vérité métier permanente.

Groupes POC attendus :

2.3 Actions et scénarios

Les actions doivent être dérivées d'un scénario proposé, pas seulement d'une liste brute action_types.

Actions couvertes :


Synthèse PRISME — 1201 lignes dans la source complète.

Voir aussi PRISME : Vision module Webmail · README module