PRISME France 2030 · Culture & IA

Vision — module Webmail du Calendrier Grainerie

RéférencesAxe projetDoc. générale

Projet : PRISME — France 2030 · Calendrier Grainerie v3

Statut : vision produit & technique — TRL 4–5 (POC intégré, production PostgreSQL en cours)

Sources code :

Complète : Expérimentations actuelles · IA fédérée Marty · Autonomie & outils souverains

1. Intention — pourquoi un webmail dans l'agenda ?

La Grainerie traite chaque jour des flux mails liés aux résidences, productions, privatisations, logistique, Europe et relations filière. Ces messages ne sont pas déconnectés du planning : ils déclenchent des actions sur Baserow, le calendrier, la préparation technique, les demandes publiques.

Problème adressé : basculer entre Outlook/Gmail, le Calendrier et Baserow fragmente l'attention ; les réponses répétitives consomment du temps ; les données partent vers des GPAI cloud si l'on branche des assistants tiers.

Réponse imaginée : un module webmail dans l'application Qwik, accessible aux utilisateurs Baserow authentifiés, qui :

  1. Synchronise les boîtes IMAP en arrière-plan (cache serveur, pas de rechargement intégral à chaque ouverture).
  2. Regroupe les messages par besoin d'action (répondre, classer, archiver, réunion, pièce jointe…).
  3. Propose des scénarios et des champs visibles selon le contexte (logique QCM compacte, navigation clavier type Typeform).
  4. Assist via Marty : analyse, suggestions, templates — sans envoyer le corps des mails au réseau fédéré.
  5. Garde l'humain aux commandes : pas d'action destructive sans validation explicite.

Formulation :

2. Expérience utilisateur imaginée

2.1 Page webmail

flowchart LR
  subgraph ui["Interface /webmail"]
    G["Groupes<br/>reply_needed · meeting · archive…"]
    C["Cartes compactes<br/>sélection multiple"]
    T["Toolbar sticky<br/>actions de lot"]
    E["Éditeur inline<br/>si champ manquant"]
    M["Modal aperçu<br/>mail · brouillon · prompt"]
  end

  U["Utilisateur authentifié"] --> G
  G --> C
  C --> T
  T --> E
  E --> M
ComportementDétail
RegroupementGroupes calculés côté serveur (reply_needed, classification, archive_ready, meeting, attachment_needed, manual_review…)
FocusUne carte active pour le clavier ; sélection multiple indépendante
ScénariosActions dérivées d'un scénario (reply_then_classify, meeting_response, attach_and_reply…) — pas d'une liste brute
Actions isoléesSuppression et « marquer lu » en parcours séparé, jamais mélangées silencieusement
Pièces jointesUpload local contrôlé pour enrichir un prompt ou une réponse

2.2 Parcours multi-comptes (production)

  1. Ouverture webmail — état vide guidé si aucun compte.
  2. Ajout compte IMAP/SMTP (preset ou saisie).
  3. Test connexion backend — mot de passe jamais renvoyé au client après enregistrement.
  4. Identifiants chiffrés en base PostgreSQL.
  5. Premier job sync IMAP en arrière-plan → UI syncing puis propositions dès les premières briques.
  6. Syncs suivantes : invalidation ciblée des seules briques impactées.

3. Architecture technique — sync par briques

L'idée centrale : ne pas retélécharger toute la boîte à chaque fois. La sync IMAP est découpée en briques indépendantes, chacune avec hash, date et stratégie de recalcul.

flowchart TB
  IMAP["Serveur IMAP<br/>fournisseur mail"]
  W["Worker IMAP<br/>imap-sync-worker"]
  PG[("PostgreSQL<br/>cache webmail")]
  API["Routes /api/webmail/*"]
  UI["Page Qwik /webmail"]

  IMAP <-->|"briques"| W
  W --> PG
  UI --> API
  API --> PG
  W -->|"assistant-analysis"| PG
BriqueContenu mis en cache
folder-listDossiers, UIDVALIDITY, compteurs
message-envelopeUID, Message-ID, sujet, expéditeur, flags
message-body-previewExtrait texte, hash corps
message-body-fullCorps complet à la demande
attachments-indexMétadonnées PJ
attachments-binaryBinaire optionnel, rétention courte
thread-indexFils, In-Reply-To, références
assistant-analysisGroupe, scénario, confiance, actions proposées
user-stateTraité, template choisi, brouillon

Modules code (README) : imap sync plan, sync brick *, cache invalidation, imap sync cursors, observability.

Décision infra (mai 2026) : stockage production uniquement PostgreSQL (postgres:16, Configuration (docker compose.webmail)) — remplace SQLite POC et l'ancienne cible HFSQL documentée en avril 2026.

4. Marty — suggestions et templates (L0 → L3)

Le réseau fédéré Marty sert deux objectifs distincts dans le webmail :

ObjectifMécanismeCe qui ne part pas au réseau
Suggestions de traitementSignaux anonymisés, modèles partagés, fusion local/fédéréCorps des mails, PJ, identifiants
Templates par défautInitialisation depuis modèles fédérés, personnalisation localeContenu brut des messages

Niveaux de personnalisation (spec §2.8) :

NiveauSourceRôle
L0Templates génériques embarquésSocle par scénario
L1Choix et corrections utilisateurApprentissage local
L2Suggestions fédérées anonymiséesPropositions / pondérations
L3Template finalValidé explicitement avant usage

Garde-fou code : mergeSuggestionWithLocal — la suggestion fédérée n'est appliquée que si sa confiance dépasse le template local ; sources affichées (federated vs local) dans l'UI.

Fichiers : Suggestions fusion local / fédéré, Signaux d'apprentissage réseau, Templates e-mail (sources L0–L3) — tickets WEBMAIL-037 à 039.

Voir IA fédérée Marty §4.2.

5. Sécurité, droits et RGPD

PrincipeImplémentation imaginée
Accèswebmail et * réservés aux utilisateurs Baserow authentifiés — pas d'accès Guest ni public
Secretscredentials, credential encryption — chiffrement côté serveur
Quotasquotas — comptes, PJ, volume sync
Auditaudit log — journal des actions sensibles
RGPDsecurity rgpd — export / suppression ; pas de corps brut dans l'export
Permissionspermissions, field visibility — rôles et champs par scénario
Consentement MartyGroupe federated du panneau consentement — pas de contribution sans opt-in

Alignement PRISME : objectif 3 du dossier — droits, traçabilité, IA responsable (Objectif 3 — droits).

6. Place dans l'écosystème PRISME

flowchart TB
  subgraph grainerie["La Grainerie — site pilote"]
    CAL["Calendrier v3<br/>planning · résidences"]
    WM["Webmail /webmail<br/>courrier métier"]
    MARTY["Marty<br/>assistant · edge"]
  end

  subgraph data["Données souveraines"]
    BR["Baserow"]
    PG[("PostgreSQL")]
    SOG["Serveur Outils Grainerie"]
  end

  subgraph filiere["Horizon filière PRISME"]
    PIL["Structures pilotes CIRC-INO"]
    MESH["PRISME-Mesh · fédération"]
  end

  CAL <--> WM
  WM --> MARTY
  CAL --> BR
  WM --> PG
  MARTY --> SOG
  WM -.->|"commun potentiel<br/>TRL 6–7"| PIL
  MARTY --> MESH
DimensionAujourd'hui (Grainerie)PRISME (cible)
UsageÉquipes internes, résidences, régieMutualisation filière cirque / SV
HébergementServeur Outils GraineriePackage edge + infogérance Le Filament
IAMarty local + signaux fédérés webmailRéseau CIRC-INO, consentement granulaire
LicenceCC BY-NC-SA 4.0 (application)Communs documentés, pas de rente données

TRL estimé : 4–5 — code en production partielle (routes API, tests Vitest, worker PG) ; écarts fixtures/spec documentés (audit #3137, mai 2026).

7. État d'avancement & écarts assumés

ZoneVision (spec)Réalité code (mai–juil. 2026)
UIComposants PascalCase dédiésPage Composant interface + composants kebab-case
StockagePostgreSQL multiuserwebmail pg repository, schéma 001-initial-schema.sql — fixtures encore en dev sans PG
WorkerService Docker webmail-workerimap sync worker + imap worker.mjs
MartyTemplates L0–L3 + fédéréWEBMAIL-037–039 livrés ; consentement v1.2
RGPDExport opérationnelRoute export-rgpd — enrichissement en cours
InfraProfil Configuration (docker compose.webmail)AG-5 planifié — preuve worker 24 h

Honnêteté dossier : le Webmail est une innovation réelle mais non généralisée filière au stade candidature — pilote interne, comme l'edge Nœud IA POC.

8. Ce que je n'ai pas voulu

9. Formulation dossier (extrait)

10. Références


Document de travail — juillet 2026 — vision produit alignée sur la spec du 26/04/2026 et l'audit code du 27/05/2026.