Aller au contenu

Vue d'ensemble du projet Serpe

Document de synthèse : le contexte complet du projet, ce qui a été réalisé, l'architecture, et l'état d'avancement. Pour le détail de chaque sujet, suivre les liens vers la documentation d'analyse.

1. Contexte métier

Serpe est une entreprise de paysage / BTP (élagage, entretien d'espaces verts, débroussaillage, génie écologique, sylviculture), organisée en 12 agences (Shared Drives AFFAIRES-16, -44, -79, -MULTI…). Elle répond à des appels d'offres publics.

Chaque réponse comporte un mémoire technique : un document long (11 000 mots en médiane), noté par l'acheteur sur la « valeur technique », et largement répétitif d'une consultation à l'autre. Aujourd'hui il est rédigé à la main, en repartant du mémoire le plus similaire — un travail chronophage.

Le Google Drive est la source de vérité documentaire (Zoho ne fait que pointer dessus). Il contient ~275 000 fichiers sur 718 Go.

2. Objectif de la web application

Produire automatiquement une première version du mémoire, que le chargé d'études ajuste plutôt que de repartir d'une page blanche. La plateforme se structure en deux modules + un socle :

  • Module A — Analyse (lecture seule) : entrer dans un appel d'offres passé et voir sa qualification, des synthèses IA, des statistiques. Démontre la valeur rapidement.
  • Module B — Rédaction (workflow) : un éditeur piloté par le cadre client (les rubriques imposées + le barème en points) qui assemble le mémoire section par section, à partir d'une bibliothèque de blocs et de Gemini, puis exporte en .docx.
  • Module C — Bibliothèque & référentiels : la source de vérité (blocs réutilisables, références, parc matériel, moyens humains).
  • Module D — Observabilité du fonds : restitution read-only de l'audit + suggestions d'amélioration (nomenclature…).

🔒 Règle d'or, non négociable : tout est en lecture seule sur le Drive. Aucune écriture, aucun « rangement » automatique. On signale, Serpe agit.

Détail : refonte de la web app.

3. Le principe de génération (l'architecture clé)

L'analyse a montré que la trame Serpe est morte depuis 2022 : ce sont désormais les cadres clients qui imposent le plan, et le barème (points par rubrique) doit piloter l'effort (une rubrique à 45 pts mérite 3 pages, une à 5 pts un paragraphe). Ce qui reste stable, ce sont les thèmes de fond.

DCE reçu
  ├─► cadre de mémoire ──► rubriques + barème (points) ──► thème
  └─► RC / CCTP ─────────► contexte (client, lieu, contraintes)
  bibliothèque de blocs ─► sélection par thème ─► budget de mots ∝ points
  (corpus + canonique)                            │
                                    fusion LLM (Gemini) → prose adaptée
                                            export .docx

Détail : intégration de l'audit.

4. Architecture technique

Couche Choix Notes
Front / SSR Nuxt 4 + @nuxt/ui v4 (template dashboard) pages sous app/pages/
Auth Supabase Auth — SSO Google restreint au domaine trigger SQL enforce_email_domain (la vraie barrière, pas le hd client)
Base de données Supabase (Postgres + pgvector) 5 migrations 0001-0005, RLS cloisonnée par agence
Bibliothèque de blocs table blocs (corpus RAG + canonique) 1 776 blocs corpus + 6 canoniques ingérés
Génération IA Vertex AI (Gemini) via google-auth-library provider swappable (server/utils/generation/) ; endpoint /api/generation/rubrique
Export lib docx .docx aux standards Serpe (intégration des visuels visée)
Déploiement Cloudflare Pages / Workers (preset Nitro cloudflare-pages) pas de filesystem → credentials Google en JSON inline sur Workers
Outillage scripts tsx dans scripts/ audit Drive, ingestion, assemblage — lecture seule sur le Drive

Détail : schéma de données, plan d'implémentation.

5. État d'avancement

Le socle est mergé dans main ; les chantiers suivants sont en Pull Request.

Chantier État
Socle (Nuxt, auth SSO, schéma Supabase, provider Gemini, CI, Cloudflare) ✅ mergé main PR #1
Analyse métier & refonte (10 docs) 🔵 en PR PR #2
Vertical slice (1 section : cadre → blocs → Gemini → .docx) 🔵 en PR PR #3
Machinerie de génération (table blocs, ingestion 1 776, endpoint, bibliothèque canonique, assembleur de mémoire complet) 🔵 en PR PR #5
Mockup de la refonte (éditeur cadre-piloté, observabilité, analyse, bibliothèque) 🔵 en PR PR #4
Câblage live (éditeur → endpoint → vraie génération → .docx) ⏳ Jalon 3 après Vertex
Données réelles déployées (Supabase prod, blocs) 🟠 partiel migrations + ingestion faites

Base de données (réel, appliqué) : extensions vector/pg_trgm, tables métier + RLS testée (cloisonnement par agence, rejet de domaine, provisioning), 1 776 blocs corpus + 6 canoniques ingérés.

Roadmap détaillée : plan d'implémentation.

Jalons

  1. Débloquer Vertex (facturation + API Vertex AI sur le projet GCP).
  2. Conforme : généraliser aux 12 thèmes → mémoire complet pour un vrai AO.
  3. Brancher Modules A & D sur les vraies données + bibliothèque canonique.
  4. Rebrancher l'éditeur (mockup) sur le pipeline réel + export .docx.
  5. Compétitif : références/visuels + apprentissage des mémoires gagnants.

6. L'audit du fonds documentaire

Un audit read-only des 12 Drives a cartographié le fonds. Chiffres clés : 275 134 fichiers · 718 Go · 2 952 mémoires techniques · 634 cadres · 46 % de fichiers hors-sujet (normal). Sept faits contraignent la conception — notamment : nomenclature à dérive orthographique, code affaire [Lettre][AA][NNNN] comme seule clé fiable, et on ne sait pas quels mémoires ont gagné (1 382 perdus identifiés contre 8 gagnés — les agences classent les pertes, pas les gains). Détail : intégration de l'audit.

7. Angles morts & questions en suspens

Tracés en issues GitHub : 1. Facturation Vertex AI (bloquant) — à activer sur le projet GCP. 2. Donnée win/loss — quelles affaires gagnées/perdues (export commercial ou proxy « hors dossier Perdu = gagné » à confirmer). 3. Vrais RC/cadres récents — valider les pondérations et le mapping rubrique → thème. 4. Formats legacy sur Workers (.doc/.odt) — extraction alternative. 5. 43 % des rubriques de cadre non rattachées à un thème — étendre la grille. 6. Variables d'environnement PROD Cloudflare à poser. 7. Convergence des branches dans main.

8. Où trouver quoi

  • Code app : app/ (pages, composables, layouts) et server/ (API, génération).
  • Migrations : supabase/migrations/.
  • Outillage : scripts/ (audit, ingestion, assemblage).
  • Documentation : docs/ (ce dossier). Sommaire : docs/README.md.