🏠 Tableau de bord (page d'accueil)
À la connexion, un overlay plein-écran s'ouvre automatiquement pour les rôles administratifs (admin, DT, responsable). Bouton 🏠 Accueil dans le header pour le rouvrir à tout moment.
Sections du tableau de bord
- 📊 Indicateurs du pipeline — le pipeline actif et son montant, les acceptés et les refusés du mois avec le montant perdu, et le taux de réussite calculé sur les seuls dossiers tranchés. ⚠ Les dossiers abandonnés en sont exclus : un no-go interne ou une consultation sans suite n'est pas une perte face à un concurrent, et les compter tirerait le taux vers le bas sans raison.
- 🚀 Créer — entrées vers les modules. Aujourd'hui : Chiffrage ISO actif. Évolutions futures grisées (formation, évaluation).
- ⚡ À traiter maintenant — alertes prioritaires : offres acceptées non encore transférées, actions CRM en retard, dossiers inactifs depuis ≥ 21 jours. Cliquer sur une alerte ouvre directement la fiche pipeline correspondante.
- 📊 Pipeline résumé — chips par statut avec compteurs + montants cumulés (actifs vs gagnés du mois).
- 👥 Base client — KPIs (nb organismes, prospects, clients actifs) + recherche rapide + top tags.
- 📅 Prochaines actions — relances et actions dues sur les 7 prochains jours.
- 🕐 Activité récente — dernières actions CRM (dossiers ouverts, envois, transferts).
Raccourcis du header de la home
En haut à droite : 📊 Ouvrir la pipeline, 📁 Dossiers (liste plate de tous les dossiers), 👥 Base clients, ? Aide.
🔑 Connexion (email ou Microsoft)
Deux méthodes de connexion sur /login.html :
Email + mot de passe
Méthode classique pour les comptes provisionnés avec un mot de passe Supabase. Champ « Mot de passe oublié » disponible (lien magique envoyé par Resend).
Connexion Microsoft (OAuth)
Bouton Connexion Microsoft : ouvre le consentement Azure AD du tenant M365 AES Certification. Si le compte est déjà provisionné dans la base AES (via Admin > Utilisateurs), la session démarre directement. Sinon, message clair « Compte non provisionné — contactez un administrateur » + bouton de déconnexion.
supabase_auth_id ↔ email AES est créé automatiquement. Aucune action admin requise après le premier login OAuth réussi.Accès selon le rôle
- admin / super_admin / dt / responsable : accès complet (chiffrage + pipeline + clients + administration)
- ra / auditeur : lecture seule sur les dossiers et clients (pas de modification, pas de pipeline)
- Sans compte provisionné : pas d'accès. Un prospect utilise
/nouveau(token public, pas de login).
🤖 Assistant IA — pré-remplissage du formulaire
L'assistant Claude lit les documents fournis (PDF, Word, Excel, ODT, images, RC, CCTP, CCAP, AE…) puis pose les questions complémentaires nécessaires en langage naturel pour pré-remplir l'identification, la configuration multisite, les sites et les processus (steps 1 à 4).
Activation et formats
Au step 1, un bandeau 🤖 Assistant IA propose de déposer les documents. Glisser-déposer ou cliquer sur Importer mes documents. Limite d'environ 3,3 Mo par envoi. Formats supportés : PDF, DOCX, ODT, XLSX/XLS/XLSM/XLSB, CSV/TSV, ODS, TXT, images PNG/JPG/JPEG/GIF/WEBP.
Multi-upload et ajout en cours de chat
Plusieurs fichiers déposables en une fois. Pour ajouter des documents en cours de conversation, utiliser le bouton 📎 dans la barre du chat — l'IA intègre les nouveaux documents à son analyse.
Streaming et thinking
Les réponses s'affichent en temps réel pendant la génération (streaming SSE). Le moteur utilise Claude Opus 4.7 avec adaptive thinking pour mieux raisonner sur les documents ambigus.
Validation avant intégration au formulaire
L'IA demande une confirmation explicite avant de pousser les données. Bouton Confirmer et importer pour valider le pré-remplissage des steps 1-4.
Persistance de la conversation
Le transcript du chat (texte uniquement, sans les binaires trop lourds) est sauvegardé dans la proposition. À la réouverture du dossier, les bulles d'échange réapparaissent. Pour relancer l'analyse documentaire, re-uploader les originaux via 📎.
Mode prospect vs mode CA
L'assistant adapte son langage selon l'utilisateur :
- Mode CA (commercial connecté) : jargon métier visible (NRE, MD5, échantillonnage, complexity high/med/low), recommandations CA et explication des choix.
- Mode prospect (formulaire public) : aucun jargon. Questions uniquement sur la réalité de l'organisation (sites, effectifs, services). La complexité et le mode d'échantillonnage sont calculés en interne mais invisibles au prospect — seul le CA les voit à la réouverture.
La recherche en ligne — surtout pour les codes NAF
L'assistant dispose des outils web natifs (recherche et consultation de pages), avec citations automatiques dans le chat. Son usage principal : trouver les codes NAF, que les documents clients ne portent presque jamais — et jamais pour les établissements secondaires.
- avec le SIREN, il lit le code exact sur les données publiques INSEE ;
- la fiche de l'entreprise liste tous les établissements avec leur commune et leur code : il les rapproche des sites du dossier par la commune ;
- à défaut : le site web du client, les documents relus pour ça, puis une déduction depuis l'activité décrite — annoncée comme telle.
Les facteurs d'ajustement, et ce qu'il ne fait plus
Depuis septembre 2026, l'assistant propose les facteurs de réduction et d'augmentation de l'étape 5, chacun avec sa preuve citée — un manuel qualité qui dit « certifié ISO 9001 depuis 2014 », « la conception est assurée par la maison mère », « la maintenance est externalisée ». Ils figurent dans sa synthèse avant l'injection : ils changent le prix, ils ne doivent pas passer sans avoir été lus. Vous cochez ou décochez ensuite à l'étape 5.
En revanche il ne cote plus la complexité : le client déclare des faits, l'outil cote. Il fournit le code NAF et les particularités du site — régime ICPE, zone protégée, accidentologie — que le tableau ne peut pas connaître. Et il ne pré-coche aucune déclaration du client : la question d'intégration et sa grille restent à remplir par celui qui les déclare.
Le détail métier de ce que l'assistant remplit — champ par champ, étape par étape — vit dans l'aide du chiffrage, section « L'assistant IA ».
Flux complet d'une opportunité
De la création d'un prospect à la création du contrat dans la plateforme audit, voici le cheminement standard :
- Création — prospect via formulaire public
/nouveauOU CA via bouton + Nouvelle opportunité dans le header de la pipeline. - Chiffrage — le CA complète les steps 1 à 10, le moteur IAF calcule les durées. À la génération, un Word, un PDF commercial et un PDF de rapport sont déposés dans SharePoint (cf. SharePoint et téléchargements).
- Envoi de l'offre — le CA clique 📤 Envoyer l'offre au client. L'email contient le PDF en pièce jointe et un bouton ✅ Accepter l'offre en ligne.
- Acceptation — soit le CA glisse la carte sur Accepté (validation manuelle), soit le client clique le bouton d'acceptation en ligne.
- Transfert — le CA clique 🚀 Transférer vers audit, choisit le workflow cible et la date de signature, et la direction audit valide côté audit-platform.
Statuts d'opportunité
La pipeline CRM affiche les opportunités en colonnes selon leur statut :
| Statut | Quand ? | Badge |
|---|---|---|
Nouveau (brouillon) | Dossier créé mais vide ou à peine entamé. | brouillon |
Formulaire reçu (formulaire_recu) | Le prospect a soumis son formulaire via /nouveau. | formulaire_recu |
Chiffrage en cours (en_cours) | Le CA est en train de compléter le chiffrage. | en_cours |
Proposition envoyée (envoye) | L'offre Word a été envoyée au client. | envoye |
En négociation (en_negociation) | Échanges en cours pour ajustements. | en_negociation |
Accepté (accepte) | Offre validée (par le CA ou par le client en ligne). | accepte |
Transféré (transfere) | Contrat créé dans audit-platform. | transfere |
Refusé (refuse) | Perdu — motif obligatoire au drop. | refuse |
Abandonné (abandonne) | Décision interne de ne pas poursuivre : no-go sur un marché public, prospect qui se désiste avant toute offre. Motif optionnel. | abandonne |
Les cartes se déplacent par drag & drop. Le passage sur Accepté ouvre automatiquement le modal de validation, celui sur Refusé demande un motif.
Prospect self-service
Un prospect arrive sur /nouveau (ou reçoit un lien d'un CA). La page présente d'abord la démarche
et un bouton « Renseigner la demande de devis » : le dossier n'est créé qu'au clic.
Il peut ensuite compléter les steps 1 à 4. À la soumission :
Le plus gênant n'était pas là : les scanners de liens (Outlook, Defender, un antivirus, l'aperçu d'un lien dans Teams) ouvrent les URL contenues dans un e-mail, côté serveur, pour vérifier qu'elles sont sûres. Ils créaient donc des dossiers sans qu'aucun humain n'ait rien fait — cinq dans la même minute le 16 septembre, soit exactement le plafond de l'anti-abus. Trente dossiers vides ont dû être triés à la main.
Un scanner ne clique pas. Vous pouvez donc désormais coller ce lien dans un e-mail sans crainte, et l'ouvrir vous-même pour vérifier qu'il fonctionne.
- Un dossier est créé automatiquement avec un numéro unique (format
AES-2026-0042) - Un token signé permet au prospect de reprendre sa saisie via email (
/reprendre) - Les commerciaux sont notifiés par email (
contact@aes-certification.fr) - La carte apparaît dans la colonne Formulaire reçu
Limites anti-spam : 5 créations par IP/heure, 2 par email/24h.
✍️ Quand le client commence sa saisie et ne la termine pas
C'est le cas le plus fréquent, et il était jusqu'ici invisible. Tant que le prospect n'a pas cliqué sur « Soumettre », son dossier reste en brouillon, dans la colonne Nouveau — au milieu des brouillons ouverts par les chargés d'affaires, et impossible à distinguer d'eux.
AES-2026-0198 : quarante-cinq minutes de saisie, 77 champs
renseignés, un nom, un téléphone direct, deux sites déclarés dont un seul rempli.
Personne chez AES ne l'a su. Le dossier a été trouvé par une requête en base, à la main.
Trois choses se déclenchent désormais toutes seules :
- Une étiquette — « Saisie par le prospect/client en cours — non finalisé » — sur la carte du pipeline et dans la liste des dossiers.
- Un bloc sur le tableau de bord, avec le nom, l'adresse e-mail, et depuis combien de temps la saisie est à l'arrêt. Rouge au-delà de deux semaines.
- Un e-mail à AES (
contact@aes-certification.fr) le lendemain, avec le contact, le téléphone et l'avancement de chaque dossier concerné.
Le prospect, lui, reçoit une relance avec un lien qui rouvre son dossier là où il l'a laissé.
Si vous ouvrez un de ces dossiers
Un avertissement s'affiche avant l'ouverture du formulaire. Il ne dit pas que le dossier change de nature — il ne change pas : le statut reste le même et le client garde son lien. Il vous prévient de la seule chose qui compte vraiment : rien n'empêche deux personnes d'écrire en même temps. Votre formulaire s'enregistre tout seul après chaque changement d'étape, le sien toutes les trente secondes — le dernier enregistrement l'emporte, sans message.
Le risque est réel le lendemain d'une relance, puisqu'on vient justement d'inviter le client à revenir.
Création manuelle par le CA
Depuis le header de la pipeline, bouton + Nouvelle opportunité. Modal à 2 onglets :
👥 Client existant
- Recherche par raison sociale ou SIRET (min. 2 caractères)
- Sélection d'un organisme déjà en base → la nouvelle opportunité est rattachée automatiquement
- Évite les doublons côté base client
✨ Nouveau prospect
- Raison sociale (obligatoire), SIRET, contact (nom + email)
- Dédup automatique par SIRET : si un organisme existe déjà avec ce SIRET, une alerte propose de basculer sur Client existant
- Colonne de départ configurable : Nouveau, Chiffrage en cours (défaut) ou En négociation
Rattacher à un client existant (nouveau dossier depuis la fiche client)
Depuis la page 👥 Clients, ouvrir la fiche d'un organisme et cliquer sur Nouveau dossier. Les informations d'identification (raison sociale, SIRET, NAF, adresse), les sites et le contact principal sont pré-remplis à partir de la fiche.
⏰ Échéance de remise
La date — et l'heure — à laquelle l'offre doit être remise. Indispensable sur un marché public, où une minute de retard rend l'offre irrecevable, mais utile sur n'importe quel dossier pressé.
Où ça se saisit
- Étape 1 du chiffrage — un champ date + heure, visible du chargé d'affaires uniquement : le prospect ne le voit pas.
- Fiche de l'opportunité — modifiable à tout moment ; les deux restent synchronisés.
- L'assistant IA la remplit quand il détecte une consultation publique : il lit la date limite dans le règlement et la pose sans qu'on la ressaisisse.
Un champ « Demandes particulières » l'accompagne — celui-là est visible du prospect, qui peut y décrire une contrainte de calendrier ou une attente spécifique.
Où ça se voit
| Où | Quoi |
|---|---|
| Carte de la pipeline | Un badge ⏰ quand l'échéance approche, 💀 quand elle est dépassée |
| Tableau de bord | Un bloc 📅 Échéances de remise, trié par urgence et coloré en conséquence |
📑 Propositions numérotées (refonte 2026-05-06)
Un dossier de chiffrage peut donner lieu à plusieurs propositions successives (négociations, ajustements). La fiche pipeline les liste sous l'onglet Propositions avec une seule ligne par proposition, numérotée propal-001, propal-002, … — alignée avec le naming SharePoint.
Génération d'une proposition
Chaque clic sur Générer la proposition (modal de génération au step 10) :
- Incrémente le compteur
propal_numdu dossier (001 → 002 → 003…) - Crée un snapshot figé (immuable) des données de chiffrage à ce moment précis
- Génère le Word et le PDF correspondants, déposés dans SharePoint avec le nom
{dossier_number}-{propal_num}.docx/pdf - Dépose également un PDF du rapport de chiffrage avec le suffixe
-rapport.pdfdans le même dossier SharePoint - Ajoute une nouvelle ligne dans l'onglet Propositions de la fiche pipeline
Un bandeau bleu dans le modal de génération annonce le numéro de propal qui va être créé (ex. « Cette génération produira propal-002 »).
Events métier rattachés à la proposition
Les events envoi au client, acceptation et refus sont rattachés à la ligne de la proposition concernée (UPDATE de la ligne generation) — pas de doublon de ligne. Chaque ligne porte les badges des events qui se sont produits :
| Badge | Event | Métadonnées capturées |
|---|---|---|
| 🟢 Envoyée | Email send-offer envoyé au client | sent_at, email destinataire |
| 🟣 Acceptée | Acceptation manuelle CA ou en ligne par le client | accepted_at, signatory_name, qualité, canal |
| 🔴 Refusée | Drop sur colonne Refusé (motif obligatoire) | refused_at, refused_reason |
generation de la proposition active — l'historique reste lisible (1 ligne = 1 proposition + ses badges).Repartir d'une proposition antérieure
Bouton Repartir de cette version sur chaque ligne de l'historique. Au clic, un modal de confirmation rouge affiche l'avertissement « Les saisies actuelles seront remplacées par celles de la version ». Utile pour revenir en arrière après une négociation infructueuse.
Bandeau dépliant si historique long
Si plus de 3 propositions ont été générées, la fiche n'affiche que les 3 plus récentes par défaut. Bouton « Afficher les N précédentes » pour déplier l'historique complet.
📤 Envoi de l'offre au client
Quand une proposition a été générée (step 10), un bouton 📤 Envoyer l'offre au client apparaît dans la fiche. Il ouvre un modal :
- Email destinataire (obligatoire) + nom
- Message libre ajouté au corps du mail
- À l'envoi : email envoyé via Resend avec le PDF de la proposition en pièce jointe. Le Word reste interne au CA — pas de lien anonyme transitant en clair (choix Option 2, mai 2026).
- Un bouton ✅ Accepter l'offre en ligne est automatiquement ajouté à l'email
- Le CA reçoit une copie de l'email
- L'event envoyée est rattaché à la ligne de la proposition active dans l'onglet Propositions (badge 🟢 Envoyée ajouté à la ligne — voir Propositions numérotées)
- Le statut bascule en Proposition envoyée si on partait de brouillon/en_cours
Validation manuelle par le CA
Deux entrées possibles :
- Drop sur la colonne Accepté depuis Chiffrage en cours, Proposition envoyée ou En négociation
- Bouton ✅ Valider l'acceptation dans la fiche pipeline
Le modal demande :
- Canal d'acceptation (manuelle CA ou confirmation email client)
- Date d'acceptation (défaut : aujourd'hui)
- Nom du signataire et sa qualité
- Workflow audit-platform cible (chargé depuis
workflow_schemaspartagé avec audit-platform) - Note (contexte, conditions particulières…)
À la validation :
- Statut bascule en Accepté, les colonnes
accepted_at,accepted_by,acceptance_channel, etc. sont remplies - L'event acceptée est rattaché à la ligne de la proposition active dans l'onglet Propositions (badge 🟣 Acceptée ajouté — voir Propositions numérotées)
- Une action CRM est ajoutée à la timeline de l'opportunité
- Un bloc vert ✅ Offre acceptée le … s'affiche dans la fiche
Acceptation en ligne par le client
Depuis l'email de proposition commerciale (qui contient le PDF en pièce jointe), le client peut cliquer ✅ Accepter l'offre en ligne. Il arrive sur la page publique /accepter-offre?token=… :
- Récapitulatif de la proposition (raison sociale, référentiels, cycle prévu, montant)
- Formulaire : nom et prénom du signataire, qualité, commentaire
- Case à cocher d'acceptation explicite au nom de l'organisme
- Bouton Valider l'acceptation
À la validation :
- Statut bascule en Accepté avec canal
client_web - L'event acceptée est rattaché à la ligne de la proposition active (badge 🟣 Acceptée, avec nom du signataire et qualité)
- Email automatique au CA assigné +
contact@aes-certification.fr - Si le client revient sur le lien : page Offre déjà acceptée le … (idempotence)
Transfert vers audit-platform
Quand l'opportunité est en statut Accepté, le bouton 🚀 Transférer vers audit apparaît dans la fiche. Il ouvre le modal Créer le contrat dans audit-platform :
| Champ | Source / défaut |
|---|---|
| Workflow cible (obligatoire) | Pré-rempli depuis le workflow choisi à la validation. Liste depuis workflow_schemas. |
| Date de signature (obligatoire) | Pré-rempli depuis accepted_at. |
| Contact facturation (nom + email) | Pré-rempli depuis le contact principal de l'organisme. |
À la soumission :
- Création d'une ligne
contratscôté chiffrage (si pas déjà faite) - Insertion dans la table partagée
contrats_recusavec tous les détails (items chiffrage, sites, auditeurs, complexités, accréditation, workflow cible, contact facturation, traçabilité acceptation) - Webhook JWT vers audit-platform → email + notification in-app à la direction
- Statut bascule en Transféré
- Idempotence : si déjà transféré, bouton bloqué et erreur explicite
Côté audit-platform, la direction ouvre la liste des contrats reçus, valide ou rejette. La validation crée le client (ou rattache à un existant via SIRET), crée le contrat audit_contrats, le cycle d'audit et les missions selon les phases du workflow cible.
⚖️ La décision de l'acheteur — gagnée comme perdue
Quand l'acheteur rend sa décision, déposez son courrier dans le chat de l'assistant, comme n'importe quelle pièce. Il connaît déjà le dossier de consultation — acheteur, objet, critères et pondérations — et remplit le bloc « Décision » de la fiche : attributaire, montant retenu et sa nature, notre montant, classement, tableau des notes, motifs, et une analyse.
Le statut suit tout seul
| Issue | Ce qui arrive au dossier |
|---|---|
| Non retenu | passe en Refusé, avec le motif construit depuis la décision |
| Sans suite | passe en Abandonné — l'acheteur annule sa consultation, personne ne gagne : ce n'est pas une perte face à un concurrent, et ça ne doit pas fausser le taux de réussite |
| Retenu | rien d'automatique. Passer en « Accepté » ouvre un flux contractuel — canal, signataire, workflow cible — que vous seul pouvez renseigner. L'outil le propose, il ne le fait pas à votre place |
Pourquoi saisir aussi les marchés GAGNÉS
Une lettre d'attribution apprend autant qu'une lettre de rejet, et sur ce qu'on connaît le plus mal : à quel prix on gagne. Une base qui ne contient que des pertes ne dit pas où est la limite, seulement qu'on l'a dépassée.
L'analyse, et à quoi elle sert
Elle ne résume pas le courrier — vous l'avez sous les yeux. Elle dit si l'écart était rattrapable : ce qui a bien marché, toutes les causes de perte, et le prix qu'il aurait fallu proposer quand la notation est proportionnelle.
⚠ Le processus métier de cette diffusion n'est pas encore arrêté (qui doit lire, ce que devient un accusé quand l'analyse est modifiée) — point
A-3, en attente d'arbitrage.Quand la prochaine consultation sortira
Le bloc « Calendrier du marché » porte cinq dates — début de prestation, durée ferme, reconductions, cycle de certification, fin du certificat en cours. Elles arment l'alerte « marchés à revenir » de l'accueil : 9 mois avant l'échéance (ressortir le dossier), 6 mois avant (l'avis peut paraître, vérifier les pièces officielles), et 3 mois avant chaque reconduction — une reconduction non exercée fait sortir une consultation par anticipation.
🏛️ Répondre à une consultation publique
Quand un dossier vient d'un acheteur public, l'opportunité ne se limite plus à un chiffrage : il faut produire un dossier de réponse complet, dans les formes et dans les délais.
La détection
L'assistant IA reconnaît une consultation publique aux pièces qu'on lui donne — règlement de consultation, CCTP, CCAP, DCE, BPU, DPGF, avis d'appel public, DC1 à DC4, acte d'engagement, mémoire technique — ou au vocabulaire employé (pouvoir adjudicateur, MAPA, code de la commande publique).
Ce qu'il en extrait alimente la fiche de consultation de l'opportunité : acheteur, objet, référence, type de procédure, date limite de remise (qui devient l'échéance), durée du marché et reconductions, critères de jugement et leur pondération, exigences sur les auditeurs, références demandées, délais et pénalités.
Les pièces de l'acheteur
Les documents reçus se déposent sur le dossier (par le chat de l'assistant ou depuis la fiche)
et sont rangés dans SharePoint, dossier Consultation/. Ils restent consultables
pendant toute la vie de l'opportunité.
📋 Candidature et 💼 Offre — les pièces à produire
La fiche de l'opportunité sépare le dossier de réponse en deux blocs, parce que l'acheteur les juge séparément.
| Bloc | Ce qu'il prouve | Exemples |
|---|---|---|
| 📋 Candidature | Le droit et la capacité à répondre | DC1, DC2, attestation sur l'honneur, K-bis, attestation d'accréditation COFRAC, attestations fiscale et URSSAF, assurance RC, références |
| 💼 Offre | La proposition elle-même | Acte d'engagement, BPU / DPGF, mémoire technique, CV des auditeurs, planning |
Trois façons d'obtenir une pièce
| Type | Comment |
|---|---|
| À générer | AES la produit depuis un gabarit, avec les données
de l'acheteur injectées : DC1, DC2, attestation sur l'honneur. Un clic, et
le Word et le PDF arrivent dans Réponse/ |
| À pré-remplir | Le cadre est imposé par l'acheteur — acte d'engagement, bordereau de prix — et se complète avec les données du dossier |
| À fournir | Une pièce officielle d'AES, jointe telle quelle : K-bis, accréditation COFRAC, attestations, assurance, RIB. Elle vient de la bibliothèque (voir l'administration) |
📄 Mémoire technique
Le document qui explique comment AES réalisera la prestation — et qui pèse souvent le plus lourd dans la note technique. Il se génère depuis le calculateur, à côté du bouton de la proposition, et n'apparaît que si une consultation publique a été détectée.
Ce qu'il contient
- Qui sommes-nous — une présentation choisie selon le domaine métier de l'organisme (voir l'administration). Si l'organisme en couvre plusieurs, l'IA fusionne les variantes validées en un chapitre cohérent, sans rien inventer.
- Compréhension du besoin — rédigée par l'IA à partir des pièces de l'acheteur.
- Nos valeurs, notre méthode, la prestation, les temps d'audit — repris de la proposition commerciale.
- Références — la table des références clients, filtrée sur les domaines de l'organisme.
- Adéquation — en quoi l'offre répond aux critères annoncés.
Réponse/, en Word et en PDF.Fiches Prospects & Clients
Accessible via le bouton 👥 Clients dans le header. La page liste les organismes avec des KPIs :
- Nombre de dossiers total / gagnés / perdus / actifs
- Date de dernière activité
- Tags et notes
La fiche d'un organisme est à onglets :
| Onglet | Contenu |
|---|---|
| Vue d'ensemble | KPIs principaux, résumé |
| Propositions | Tous les dossiers chiffrage liés, avec statuts et montants |
| Timeline | Historique consolidé (actions CRM + propositions) |
| Contacts | Interlocuteurs (CRUD, contact principal) |
| Sites | Sites permanents (adresse, NRE, type) |
| Notes | Bloc libre au niveau organisme |
👥 Gestion des utilisateurs (admin)
Accessible via Admin > Utilisateurs. Réservé aux rôles admin et super_admin. Permet de provisionner les comptes AES (CA, DT, RA, auditeurs) avant qu'ils ne se connectent.
Rôles disponibles
| Rôle | Accès | Particularités |
|---|---|---|
admin | Chiffrage complet + administration (utilisateurs, tables IAF, tarifs, organismes, corbeille) | Peut modifier tous les comptes sauf super_admin |
super_admin | Idem admin | Protégé : ne peut pas être modifié ni supprimé depuis l'UI (protections SQL CANNOT_MODIFY_SUPERADMIN / CANNOT_DELETE_SUPERADMIN) |
dt | Idem admin (Directeur Technique) | — |
responsable | Chiffrage + pipeline (sans admin) | Voit ses dossiers + ceux non assignés (filtrage par assigned_to à venir) |
ra / auditeur | Lecture seule sur les dossiers et clients | Pas de pipeline, pas de modifications |
Provisionnement d'un nouveau compte
- Admin > Utilisateurs > + Inviter un utilisateur
- Saisir l'email (idéalement l'email AES M365 pour bénéficier de l'OAuth Microsoft) + nom + rôle
- L'utilisateur est créé en DB. Au premier login Microsoft, le lien OAuth se fait automatiquement (auto-link).
- Pour un compte email/password : envoyer manuellement le mot de passe via canal sécurisé ou utiliser le flux Supabase « invitation ».
Modifications et suppression
- Changer un rôle : sélecteur dans la ligne. Effet immédiat à la prochaine session de l'utilisateur.
- Supprimer un compte : bouton 🗑️. Bloque si le compte cible est
super_admin. - Désactiver temporairement : retirer le rôle (passer en
auditeurpar exemple) plutôt que supprimer, pour conserver l'historiqueassigned_tosur les dossiers.
super_admin sont implémentées côté SQL (RPC update_user_role + delete_user). Tester en ré-exécutant les migrations sql/013 et sql/014 dans leur version 78bed93 si vous constatez qu'un admin peut encore modifier un super_admin.📁 Références clients et domaines métier
Références clients
La liste des audits réalisés, qui alimente le chapitre « Références » du mémoire technique. Deux sources :
- Automatique — chaque dossier gagné y entre avec son client, ses référentiels, son secteur, ses jours, son montant et son contact principal ;
- Manuelle — pour l'historique antérieur à l'outil, qui remonte à plus de dix ans et ne doit pas être perdu.
Export CSV disponible depuis l'onglet.
Domaines métier
Un vocabulaire contrôlé mais extensible — « eau et assainissement », « collectivités », « agroalimentaire »… — qu'on gère ici et qu'on attribue à l'organisme, dans sa fiche, par un éditeur d'étiquettes. Un organisme peut en porter plusieurs ; ses dossiers en héritent.
Ce n'est volontairement pas déduit du code NAF ni du code EA : le découpage commercial ne suit pas le découpage statistique. Le tableau de bord signale les organismes sans domaine — un clic mène à la fiche.
⚖️ Marchés publics — ce qui se pilote en administration
Trois choses que les documents de candidature vont chercher ici.
Chiffre d'affaires annuel
Les trois derniers exercices, par entité. Le DC2 les réclame systématiquement (cadre F1) : les saisir une fois évite de les rechercher à chaque consultation.
Gabarits de documents
Les modèles DC1, DC2 et attestation sur l'honneur, stockés tels quels. La génération y remplace les balises par les données de l'acheteur et du dossier.
Bibliothèque des pièces officielles
K-bis, attestation d'accréditation COFRAC, attestations fiscale et URSSAF, assurance RC, RIB. Chaque pièce porte sa date de validité et un voyant : 🟢 valide, 🟠 bientôt périmée, 🔴 périmée.
- Dépôt, remplacement et suppression depuis l'onglet ;
- stockage privé — aucun lien public, chaque accès passe par le serveur ;
- rattachement automatique aux pièces demandées par une consultation.
🗑️ Suppression et corbeille (Sprint 3 — mai 2026)
La suppression d'une proposition n'est plus une opération destructive immédiate. Le mécanisme est un soft-delete avec corbeille admin.
Suppression d'un dossier (CA)
- Bouton 🗑️ Supprimer le dossier dans la fiche pipeline
- Restreint au statut
brouillonuniquement. Un dossier envoye, en_negociation, accepte, refuse ou transfere ne peut pas être supprimé — l'historique commercial doit être préservé. - La suppression marque la ligne
deleted_at = NOW(). Le dossier disparaît de la pipeline, de la home, des fiches clients et de la liste des dossiers.
Corbeille admin
Accessible via Admin > Corbeille. Réservé aux rôles admin / super_admin.
- Liste de tous les dossiers
deleted_at IS NOT NULL - Bouton ♻️ Restaurer : remet
deleted_at = NULL, le dossier réapparaît dans la pipeline avec son statut d'origine - Bouton 🗑️ Purger définitivement : double confirmation (incluant la saisie du
dossier_number) avant DELETE dur en base. À utiliser avec parcimonie.