Aller au contenu

Modules — CRM & ventes

Ces modules portent le parcours métier central : capter des leads, les distribuer à des closers, et faire progresser chaque opportunité dans un pipeline.

Module app/ · domain/ · web/ Rôle
forms forms/ Formulaires de capture de leads, champs typés, soumission, génération par IA.
leads leads/ Leads bruts issus des soumissions, import CSV, listing par workspace.
projects projects/ Projets/campagnes de vente, affectation aux closers.
project-leads project-leads/ Leads distribués à un closer dans un projet : cycle de vie, historique d'affectation, notes, analyse IA.
workflows workflows/ Définitions de statuts et transitions du pipeline ; pipeline de vente par défaut.
scoring scoring/ (app/) Règles de score de qualité d'un lead.

forms

Formulaires partageables de capture. Les champs sont typés (texte, email, téléphone, select…). La soumission crée un lead. Le module supporte une génération assistée par IA (POST /forms/generate, via OpenRouter ; sans clé, un stub est utilisé) et des règles de scoring.

leads

Un lead est une soumission brute rattachée au workspace. Source possible : soumission de formulaire ou import CSV. Le listing est paginé (voir Conventions). Un lead devient exploitable une fois distribué dans un projet, sous forme de project-lead.

projects

Un projet (campagne) regroupe un effort de vente et l'affecte à des closers. Il définit le contexte dans lequel les leads sont travaillés.

project-leads

C'est le cœur du pipeline. Un project-lead est un lead distribué à un closer au sein d'un projet. Il porte :

  • un statut dans le cycle de vie (ex. nouveau → qualifié → en négociation → gagné/perdu) régi par les workflows ;
  • un historique d'affectation (assignment history) ;
  • des notes, et une analyse / insights par IA (ai-analysis.service.ts) ;
  • un snapshot de commission : salesManagerId est figé au moment de l'affectation et n'est pas re-synchronisé si le manager de l'adhésion change ensuite — ainsi les commissions des leads clôturés restent attribuées au manager qui supervisait à l'affectation.

Historique d'affectation

On n'écrit jamais de ligne d'historique from → to toutes deux nulles : une telle ligne ne porte aucune information. Le snapshot de l'état courant vit sur ProjectLead.assignmentReason.

La couche HTTP « CRM » (web/crm/) expose ces opérations et délègue la logique à project-leads.

workflows

Définit les statuts du pipeline et les transitions autorisées, dont un pipeline de vente par défaut. Une transition illégale est rejetée par une erreur de validation (400), éventuellement rangée sous une clé de champ ad hoc (ex. target) — voir Erreurs API.

scoring

Applique des règles de score de qualité aux leads (par ex. à partir des réponses du formulaire), pour prioriser le travail des closers.

Liens transverses

  • Les paiements et commissions générés par une vente : voir Finance.
  • Les notifications d'affectation et de changement de statut : voir Transverses.