Projet CRM — Contacts, discussions & besoins clients · juillet 2026
Proposition
Ce document présente le projet d'ajout d'une partie CRM à Astrolabe : un module Contacts synchronisé avec Outlook, un suivi des échanges e-mails façon discussion, des rendez-vous (réunions, entrevues, déjeuners…) reliés au calendrier, un suivi des besoins clients dans le temps, une timeline de toute la relation, des fiches enrichissables librement — avec une confidentialité réglable donnée par donnée — et un pont vers Tiime (devis, factures, paiements).

C'est une proposition à discuter : vos retours sont attendus, notamment sur les questions ouvertes en fin de document.
Sommaire
  1. La vision en une minute
  2. La fiche contact, cœur du module
  3. Design : toute la relation sur une page
  4. Synchronisation bidirectionnelle avec Outlook
  5. E-mails : envoi et suivi type discussion
  6. Besoins du client : un suivi qui évolue
  7. Rendez-vous & interactions
  8. Timeline & vues chronologiques
  9. Champs libres multi-types & pièces jointes
  10. Confidentialité par donnée
  11. Intégration Tiime : du besoin à la facture
  12. Découpage en 8 lots livrables
  13. Questions ouvertes — votre avis compte

🧭 La vision en une minute

Astrolabe sait aujourd'hui gérer les projets, les tâches et le temps. Il lui manque la dimension relation client : qui sont nos contacts, qu'est-ce qu'on s'est dit, de quoi ont-ils besoin, et où en est-on.

Le module CRM apporte sept briques :

👥
Contacts synchronisés

Un carnet d'adresses partagé, synchronisé dans les deux sens avec les contacts Outlook de chacun.

💬
Discussions

Envoi de mails depuis Astrolabe et historique des échanges présenté comme un fil de discussion.

🎯
Besoins clients

Chaque besoin identifié est suivi dans le temps, avec son statut et l'historique de ses évolutions.

📅
Rendez-vous

RDV, réunions, entrevues, déjeuners… associés au contact et synchronisés avec le calendrier Outlook.

🕒
Timeline

Tout l'historique de la relation en un fil chronologique — par client, par collaborateur ou global.

🔐
Confidentialité fine

Chaque donnée peut être privée, partagée avec certains collègues, ou visible de tous.

💶
Pont vers Tiime

Du besoin gagné au devis, à la facture et au paiement — la boucle commerciale se ferme dans Tiime.

🧱
Le module s'appuie entièrement sur l'existant : connexion Microsoft déjà en place (OAuth Graph), moteur de synchronisation Outlook éprouvé (calendrier), architecture Controller → Service → Repository, et migrations compatibles MariaDB/SQLite.

🗂️ La fiche contact, cœur du module

Chaque contact a une fiche unique, partagée par l'équipe, qui regroupe tout ce qu'on sait de lui. Aperçu de l'organisation cible :

Marie Charpentier
Directrice digitale — Groupe Hélios · marie.charpentier@helios.example
Synchronisée Outlook ✓
💬 Discussions
Re: proposition refonte intranetS. Philippe · hier
Compte-rendu atelier du 02/07A. Durand · 03/07
Premier contact salon VivaTech privéS. Philippe
🎯 Besoins du client
Refonte intranetProposition
Automatisation reportingQualifié
Formation équipe dataIdentifié
🧩 Champs libres
📝 Note : contexte budgétaire 2027partagé
🎙️ Audio : débrief appel du 05/07privé
🖼️ Photo : tableau blanc ateliertous
📎 Pièces jointes
proposition-v2.pdf1,2 Mo
cahier-des-charges.docx640 Ko
💶 Facturation (Tiime)
F-2026-041 · 12 400 €payée
F-2026-058 · 6 800 €en retard
Devis D-2026-019 · 24 000 €envoyé
📅 Rendez-vous
🍽️ Déjeuner point annuel15/07 · 12h30
🤝 Réunion cadrage intranet11/07 · 10h00
📞 Appel de suivi privé04/07
🧷 Projets & tâches liés
📁 Refonte intranet Héliosdécideuse
📁 TMA site vitrinefacturation
☑️ Atelier cadrage datainterlocutrice

Champs de base

Création et modification depuis l'interface web et depuis le CLI astro (contact:add, contact:list, contact:show…).

Liens avec les projets et les tâches

Un contact peut être relié à aucun, un ou plusieurs projets et/ou tâches Astrolabe :

🎨 Design : toute la relation sur une page

Proposition de design de la fiche client, dans la charte Astrolabe (bleu nuit, orange, turquoise, titres Bebas Neue, texte Outfit). Le principe : tout se lit sur une seule page, sans navigation intermédiaire — la timeline donne la carte, le fil donne le détail, la colonne donne les repères.

MC
Marie Charpentier
Directrice digitale — Groupe Hélios · marie.charpentier@helios.example
💬 Dernier échange : aujourd'hui 📅 Prochain RDV : déj. 15/07 🎯 2 besoins actifs 💶 1 facture en retard
✉️ E-mail 📅 RDV 📝 Note
1
30 j 90 j 1 an Tout Juin — Juillet 2026
02/07 · 1 RDV + 1 e-mail
+1
26/06 27 28 29 30 01/07 02 03 04 05 06 07 08 auj. 15/07
E-mail Rendez-vous Besoin Facture Note / appel
2
Tous ✉️ E-mails 📅 RDV 📝 Notes 🎯 Besoins 💶 Factures 🔍 Rechercher dans le fil…
✉️ E-mail 📝 Note 📅 RDV
Aujourd'hui
MC Marie Charpentier · 09:12tous
Re: proposition refonte intranet
Merci pour la V2 — le comité valide le périmètre, on peut avancer sur le planning…
↩ Répondre🔗 Lier à un besoin👥 Partager📌 Épingler
— actions affichées au survol —
Mardi 08/07
SP S. Philippe · 17:40tous
Proposition refonte intranet — V2
Version révisée en pièce jointe (périmètre + budget).
📎 proposition-v2.pdf · 1,2 Mo
SP S. Philippe · 09:05partagé
Point budget avant envoi
Échange interne partagé avec A. Durand sur le chiffrage…
Vendredi 04/07
📞 Appel · SP S. Philippe · 15:20privé
Note d'appel : Marie hésite sur la tranche 2, prévoir une option de repli.
Mercredi 02/07
🤝 Atelier de cadrage intranet — 10h00 · Groupe Hélios, Lyon S. Philippe + A. Durand
AD A. Durand · 18:02tous
Compte-rendu atelier du 02/07
Relevé de décisions et prochaines étapes…
📎 cr-atelier.pdf · 310 Ko
Lundi 30/06
🎯 Besoin « Refonte intranet » passé de Qualifié à Proposition S. Philippe
Jeudi 26/06
💶 Facture F-2026-058 · 6 800 € — envoyée (Tiime) échéance 26/07
Charger les échanges précédents (12) — ou remonter via la timeline
3
Visibilité par défauttous
Coordonnées
📧 marie.charpentier@helios.example
📱 06 12 34 56 78
grand compteintranetLyon
Besoins +
Refonte intranetProposition
Automatisation reportingQualifié
Projets liés +
📁 TMA site vitrinefacturation
☑️ Atelier cadrage datainterlocutrice
Fichiers +
📄 proposition-v2.pdf1,2 Mo
📄 cahier-des-charges.docx640 Ko
🎙️ débrief appel 05/07privé
🖼️ tableau blanc atelier2,1 Mo
Factures (Tiime)
F-2026-041 · 12 400 €payée
F-2026-058 · 6 800 €en retard

Comment ça se lit

Micro-interactions & accessibilité

📐
Sous 900 px, la colonne ③ passe sous le fil et la timeline défile au doigt. Les filtres (type, collaborateur, visibilité) s'appliquent simultanément à la timeline et au fil, qui restent toujours synchronisés.

🔄 Synchronisation bidirectionnelle avec Outlook

Les contacts Astrolabe et les contacts Outlook restent alignés automatiquement, dans les deux sens :

On réutilise les mécanismes déjà en production pour le calendrier :

⚠️
Nouveau consentement Microsoft requis : le périmètre Contacts.ReadWrite s'ajoute aux autorisations actuelles. Chaque utilisateur déjà connecté devra re-valider sa connexion Microsoft une fois (un clic).

À l'import, un dédoublonnage est appliqué : clé sur l'e-mail principal, sinon nom + société.

✉️ E-mails : envoi et suivi type discussion

Depuis la fiche d'un contact, on peut écrire et envoyer un e-mail sans quitter Astrolabe (l'envoi part de la boîte Outlook de l'utilisateur, via Microsoft Graph).

Les échanges — envoyés et reçus — sont regroupés en fils de discussion chronologiques sur la fiche, comme une messagerie : expéditeur, date, objet, corps du message, pièces jointes.

Partage entre collaborateurs

💡
Fini le « tu peux me transférer ton dernier échange avec le client ? » : l'historique partagé est visible directement sur la fiche, et chacun garde la main sur ce qui reste privé.

🎯 Besoins du client : un suivi qui évolue

Chaque fiche comporte une section « Besoins du client » : la liste des besoins identifiés chez ce client, chacun suivi dans le temps.

AttributDescription
Titre & descriptionLe besoin exprimé ou détecté, reformulé par nous.
StatutIdentifié → Qualifié → Proposition → Gagné / Perdu / Abandonné.
PrioritéHaute / moyenne / basse.
Montant estiméOptionnel — pour donner une vision pipeline.
ÉchéanceOptionnelle — quand le client attend une réponse.
Projet liéQuand le besoin se concrétise, on le relie au projet Astrolabe créé.

Le point clé : le besoin évolue. Chaque changement (statut, description, montant…) est journalisé avec l'auteur et la date — on peut rejouer l'histoire d'un besoin du premier contact jusqu'à sa conclusion.

📅 Rendez-vous & interactions

On peut associer au contact des événements de tout type — pas seulement des réunions formelles :

🤝
Rendez-vous / réunion

Présentiel ou visio, avec ordre du jour et compte-rendu.

🍽️
Déjeuner / dîner

Les moments informels comptent aussi dans la relation.

💼
Entrevue

Point rapide, rencontre sur site, passage au bureau.

📞
Appel / visio

Trace d'un échange téléphonique avec ses notes.

🎪
Salon / conférence

Rencontre sur un événement, premier contact.

📝
Autre

Type libre pour tout ce qui ne rentre pas dans les cases.

Chaque événement porte : type, titre, date et heure, lieu, participants (collaborateurs et contacts), notes / compte-rendu enrichissable après coup.

Intégration au calendrier Outlook

Comme toute donnée de la fiche, un rendez-vous porte sa visibilité : privé partagé ou tous.

🕒 Timeline & vues chronologiques

La timeline est la colonne vertébrale du CRM : tout ce qui s'est passé, remonté dans un fil chronologique unique — mails, rendez-vous, évolutions des besoins, notes, pièces ajoutées, liens vers les projets.

VueCe qu'elle montre
🕒 Timeline par contactTout l'historique de la relation avec ce client, du premier contact à aujourd'hui.
🌍 Timeline globaleLe fil d'activité CRM de toute l'équipe, tous contacts confondus.
👤 Filtre par collaborateurMes interactions, celles d'un collègue, ou toute l'équipe — combinable avec le filtre par contact.
📆 Vue calendrierLes rendez-vous passés et à venir, par collaborateur ou pour l'équipe.
📊 Vue pipeline (kanban)Les besoins clients par statut, glisser-déposer pour faire avancer un besoin.
⏰ Vue relancesLes contacts sans interaction depuis X jours, triés par ancienneté — qui recontacter en priorité.
🏢 Vue par sociétéL'activité agrégée par client (si la notion de société est retenue, cf. questions ouvertes).
🛡️
Les droits s'appliquent partout : chaque vue ne montre à l'utilisateur que ce qu'il a le droit de voir — ses données privées, ce qui est partagé avec lui, et le public. Le filtrage est fait côté serveur, dans l'API qui alimente la timeline.

🧩 Champs libres multi-types & pièces jointes

Au-delà des champs classiques, on peut ajouter n'importe quelle donnée à une fiche contact :

📝
Note

Texte riche / markdown : contexte, compte-rendu, mémo.

🖼️
Image

Photo de tableau blanc, capture d'écran, plan — aperçu direct.

🎙️
Audio

Débrief dicté après un rendez-vous — lecteur intégré.

🎬
Vidéo

Démo, enregistrement d'atelier — lecteur intégré.

📄
Fichier

Tout document : PDF, tableur, archive…

🔗
Lien, date, nombre…

URL, échéance, indicateur chiffré : les types s'étendent facilement.

Pièces jointes

🔐 Confidentialité par donnée

Chaque donnée d'une fiche — champ libre, pièce jointe, discussion, besoin, note, rendez-vous — porte sa propre visibilité :

VisibilitéQui voit ?Exemple d'usage
Privé Moi uniquement Note personnelle sur la négociation, brouillon d'analyse.
Partagé Les collaborateurs que je choisis Échanges sensibles partagés avec le binôme sur le compte.
Tous Toute l'équipe Coordonnées, historique standard, besoins en cours.

Deux ergonomies complémentaires, réglables par contact :

🛡️
Vraie confidentialité : les administrateurs ne voient pas les données privées des autres (seulement l'existence de la fiche). Le filtrage est fait côté serveur, dans l'API — jamais seulement à l'affichage.

💶 Intégration Tiime : du besoin à la facture

Tiime est notre outil de facturation et de comptabilité : le CRM doit s'y articuler pour fermer la boucle besoin → devis → facture → paiement, sans double saisie.

Liens nécessaires (le socle)

Liens possibles (la valeur ajoutée, par étapes)

🧾
Devis depuis un besoin

Un besoin qui passe en « Proposition » génère le devis Tiime pré-rempli ; son acceptation bascule le besoin en « Gagné ».

⏱️
Facturer le temps saisi

Pré-remplir la facture Tiime à partir des heures/jours Astrolabe du projet lié — le pont temps → facturation.

🔔
Relances de paiement

Les factures en retard remontent dans la vue « relances », à côté des relances commerciales.

📈
Rentabilité

CA facturé (Tiime) vs temps passé (Astrolabe) par client et par projet ; pipeline pondéré vs facturé réel.

⚠️
Faisabilité à valider : Tiime n'expose pas d'API publique documentée. Il faut les contacter pour un accès API partenaire ; à défaut, solution de repli par exports/imports (CSV) avec rapprochement semi-automatique. Les données financières suivent les mêmes règles de visibilité que le reste — visibilité restreinte par défaut à discuter.

🚀 Découpage en 8 lots livrables

Chaque lot est utilisable dès sa livraison, sans attendre les suivants :

1
Contacts de base

CRUD web + CLI, migrations, vue liste et fiche détail, liens contacts ↔ projets/tâches (0-n). Le carnet d'adresses partagé existe.

2
Synchro Outlook bidirectionnelle

Périmètre Contacts.ReadWrite, mapping idempotent, gestion des conflits, dédoublonnage.

3
Besoins clients

Section « Besoins », statuts, priorités, historique d'évolution journalisé, lien vers les projets.

4
Pièces jointes & champs libres

Stockage de fichiers sécurisé, champs multi-types (note, image, audio, vidéo, fichier, lien…).

5
Confidentialité par donnée

Visibilités privé / partagé / tous, visibilité par défaut par contact, filtrage API systématique.

6
E-mails & discussions

Envoi depuis Astrolabe, fils de discussion, rattachement automatique, partage entre collaborateurs.

7
Rendez-vous & timeline

Événements multi-types liés aux contacts, synchro calendrier Outlook, timeline par contact et globale, vues calendrier, pipeline et relances.

8
Intégration Tiime

Rapprochement clients et factures sur la fiche/timeline, puis devis depuis les besoins, facturation du temps saisi, relances de paiement et rentabilité (sous réserve de l'accès API).

🧪
Comme pour la synchro calendrier : développement TDD sur toute la chaîne, migrations réversibles compatibles MariaDB (production) et SQLite (tests), respect strict de l'architecture existante.

Questions ouvertes — votre avis compte

  1. Sociétés ou contacts ? Faut-il une notion de « société / compte client » fédérant plusieurs contacts (Mme Charpentier et M. Roux chez Hélios), ou des contacts indépendants suffisent-ils au départ ?
  2. Contact synchronisé par plusieurs collègues : si deux personnes ont le même contact dans leur Outlook, on propose une fiche Astrolabe unique avec un mapping par utilisateur. D'accord ?
  3. Historique des mails : rapatrier tout l'historique existant avec le contact, ou seulement les échanges à partir de l'activation du module ?
  4. Stockage : quel quota raisonnable pour les pièces jointes et les champs média (audio/vidéo) par contact ?
  5. Contenu de la timeline : doit-elle inclure aussi les événements des projets liés (jalons franchis, tâches livrées), ou seulement les interactions directes avec le client ?
  6. Tiime : quel accès à leurs données ? (les contacter pour une API partenaire ; sinon repli exports/imports). Et qui voit les montants facturés — tout le monde, ou visibilité restreinte par défaut ?

La spécification complète (modèle de données, architecture technique) est suivie dans l'issue GitHub dédiée :

Issue #67 — CRM : module Contacts →