🔌 Diagramme de Composants — CV-Builder ClaraJob
Phase 2 (Analysis) — Two-Track Unified Process (2TUP)
|
Note
|
📺 Diagrammes de ce document
|
Vue d’ensemble
Le diagramme de composants du CV-Builder reflète le code réel des deux modules clarajob-front-gui (SPA Vue 3) et clarajob-front-api (Spring Boot WebFlux) :
Frontend (Vue 3 / Pinia) : 1 vue orchestratrice (CvWorkspaceView, route /cv-builder) + 1 vue publique (CvPublicView, route /cv/:token), 16 écrans, 1 store Pinia (cvBuilderStore), 7 services API, 4 composables, 1 gestionnaire de snapshots local.
Backend (Spring Boot WebFlux) : 4 controllers, 11 services applicatifs, 6 ports de domaine rĂ©alisĂ©s par 7 adapters d’infrastructure (Spring Data MongoDB, R2DBC/PostgreSQL, Redis, WebClient IA, MinIO S3).
Systèmes externes : Keycloak (JWT), MinIO (S3), Redis, API IA Gemini ou Groq, PostgreSQL, MongoDB.
Interface : REST API spec-first (OpenAPI) — contrats /api/v1/cv-documents/*, /api/cv/{cvId}/design, /api/v1/ai/, /api/v1/cv/match.
📊 Diagramme UML Complet
Lecture du diagramme :
-
Gauche (Frontend) : SPA Vue 3 — vue orchestratrice, écrans, store, services API
-
Milieu (Backend) : Controllers WebFlux → services applicatifs → ports/adapters
-
Droite (Données & externes) : MongoDB, PostgreSQL, Redis, MinIO, Keycloak, API IA
-
Flèches : dĂ©pendances et flux d’appel rĂ©els
đź“‹ Catalogue des Composants
Backend Components (clarajob-front-api)
Controllers (Présentation) — 4
| Composant | Responsabilité & Interfaces |
|---|---|
|
ImplĂ©mente l’interface gĂ©nĂ©rĂ©e |
|
RĂ©glages de design d’un CV (layout, thème, couleur d’accent, direction) |
|
Implémente |
|
Implémente |
Services (Application) — 11
| Composant | Responsabilité & Dépendances |
|---|---|
|
CRUD des documents CV (création, liste |
|
Historique de versions : création, liste, restauration, suppression ; plafond configurable ( |
|
Variantes d’un CV maĂ®tre ciblĂ©es par offre (JobOfferReference) |
|
Partage public : activation, token, slug personnalisé, lecture publique |
|
Import de CV : depuis le profil (resume MinIO), depuis un PDF ( |
|
Lecture/écriture des réglages de design |
|
Reformulation de texte, détection de compétences |
|
Génération IA : CV complet ( |
|
Chat Clara : conversation contextualisée par les données du CV |
|
Résolution des quotas IA par tier utilisateur |
|
Matching CV ↔ offre par extraction de mots-clés (normalisation, stop-words) — sans appel IA |
Ports & Adapters (Domaine / Infrastructure)
| Port (domaine) | Adapter (infrastructure) & Store |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
— (Spring Data direct) |
|
— (service partagé) |
|
Frontend Components (clarajob-front-gui)
Vues & Écrans
| Composant | Responsabilité & Navigation |
|---|---|
|
Vue orchestratrice de la route |
|
Route publique |
16 écrans ( |
|
Store & Composables
| Composant | Responsabilité |
|---|---|
|
État global : |
|
Persistance des CV : backend ( |
|
Catalogue des templates/layouts de CV (composants |
|
Score de complétude/qualité du CV, calculé côté client |
|
Export PDF côté navigateur : |
|
Undo local : jusqu’Ă 20 snapshots de |
API Service Components (Client HTTP) — 7
| Composant | Responsabilité & Endpoints Appelés |
|---|---|
|
CRUD documents : |
|
Versions : |
|
Partage : |
|
Variantes : |
|
Génération IA : |
|
Reformulation |
|
Référentiel de compétences : recherche et création (autocomplete du formulaire compétences) |
Tous ces services passent par le client HTTP partagé httpClient (JWT Keycloak injecté par intercepteur).
đź”— Interfaces & Contrats
REST API réelle (OpenAPI spec-first)
| Endpoint | Méthode | Usage |
|---|---|---|
|
POST |
Créer un document CV |
|
GET |
Lister mes CV |
|
GET / PUT / DELETE |
Lire, sauvegarder (auto-save), supprimer |
|
POST |
Importer depuis le CV du profil (MinIO + IA) |
|
POST |
Importer depuis un PDF uploadé (extraction + IA) |
|
POST |
Importer depuis un texte brut (IA) |
|
GET / POST |
Lister / créer une version |
|
POST |
Restaurer une version |
|
DELETE |
Supprimer une version |
|
PUT |
Activer/configurer le partage (token, slug) |
|
GET |
Statut de partage |
|
GET |
Public — CV partagé par token |
|
GET |
Public — CV partagé par slug |
|
GET / POST |
Variantes par offre |
|
GET / PUT |
Config admin (max versions) |
|
GET / PUT / DELETE |
Réglages de design (PostgreSQL) |
|
POST |
Reformulation IA |
|
POST |
Génération de CV complet |
|
POST |
GĂ©nĂ©ration d’une section |
|
POST |
Chat Clara |
|
POST |
Détection de compétences |
|
POST |
Score de matching CV ↔ offre (mots-clés) |
Les endpoints GET /api/v1/cv-documents/shared/** sont en permitAll dans SecurityConfig ; tous les autres exigent un JWT Keycloak.
Component Interface Ports
Backend Ports
Provided Interfaces (ce qu’offre le backend) :
- CvsApi (générée OpenAPI) : documents, versions, variantes, partage, imports, config admin
- AiApi : reformulate, generate-cv, generate-section, chat, detect-skills
- CvMatchingApi : match CV ↔ offre
- API design : /api/cv/{cvId}/design
Required Interfaces (ce que consomme le backend) :
- Spring Data MongoDB : collections cvDocuments, cvDocumentVersions, cvVariants, appConfig
- R2DBC : table PostgreSQL cv_design_settings (le référentiel users/resumes reste en PostgreSQL)
- FileStorage : MinIO (S3), bucket clarajob — lecture des CV uploadĂ©s pour l’import
- AiClient : API Gemini ou Groq (HTTPS, provider selon AI_PROVIDER)
- CacheProvider : Redis — quotas IA
- Keycloak : validation JWT (JWKS)
Frontend Ports
Provided Interfaces (ce qu’offre le frontend) :
- /cv-builder : atelier complet (édition, design, IA, versions, variantes, partage, export)
- /cv/:token : consultation publique d’un CV partagĂ©
Required Interfaces (ce que consomme le frontend) :
- BackendRESTAPI : endpoints listés ci-dessus via httpClient (JWT)
- LocalStorage : repli hors connexion (clarajob_cvs) + snapshots undo en mémoire
- BrowserAPIs : html2canvas-pro/jsPDF et window.print() pour l’export PDF cĂ´tĂ© navigateur
✅ SYNC GATE 2 : Traçabilité des flux réels
| Fonctionnalité | Chemin Backend | Chemin Frontend |
|---|---|---|
Créer / lister / éditer un CV |
CvDocumentController → CvDocumentService → MongoDB |
CvInitScreen2 / CvListScreen / CvWorkspaceScreen → cvDocumentService |
Auto-save |
|
CvWorkspaceView : watch debounce 2 s → cvBuilderStore.autoSave() → useCvPersistence |
Import profil / PDF / texte |
CvDocumentController → CvImportService → MinIO + PdfTextExtractor + AiClient |
CvInitScreen2 → cvDocumentService |
Versions & restauration |
CvDocumentController → CvVersionService → MongoDB |
CvVersionsScreen / VersionHistoryPanel → cvVersionService |
Variantes par offre |
CvDocumentController → CvVariantService → MongoDB |
CvAdaptScreen / VariantsTab → variantService |
Partage public |
CvDocumentController → CvShareService (token/slug) |
SharePanel → cvShareService ; CvPublicView ( |
Design |
CvDesignController → CvDesignApplicationService → PostgreSQL |
CvDesignRefactoredScreen / CvDesignCustomizePanel |
IA (reformuler, générer, chat) |
AiController → AiService / CvGenerationService / CvChatService → GeminiClient (Gemini/Groq) |
EditorAiPanel, ScratchWizardModal, CvAiCoachScreen → aiService / cvAiService / chatService |
Matching CV ↔ offre |
CvMatcherController → CvMatcherService (mots-clés, sans IA) |
CvAtsScreen / CvAdaptScreen → cvAiService |
Export PDF |
— (aucun composant serveur) |
useCvVectorExport : html2canvas-pro + jsPDF / window.print() |
Verdict Sync Gate 2 : âś… APPROUVÉ — chaque flux a un chemin complet et vĂ©rifiĂ© dans le code ; l’export PDF et la validation/scoring sont assumĂ©s cĂ´tĂ© client ; aucun scheduler backend n’intervient dans le CV-Builder.
📊 Résumé Statistique
| Catégorie | Nombre & Composition |
|---|---|
Backend |
22 composants principaux Controllers : 4 (CvDocument, CvDesign, Ai, CvMatcher) Services : 11 (6 cvbuilder + 4 IA + 1 matching) Ports/Adapters : 7 (Mongo ×3, R2DBC ×1, IA ×1, Redis ×1, MinIO partagé) |
Frontend |
30 composants principaux Vues : 2 (CvWorkspaceView, CvPublicView) Écrans : 16 Store : 1 (cvBuilderStore) Services API : 7 Composables : 4 + CvSnapshotManager |
Interfaces REST |
22 endpoints réels Documents, imports, versions, variantes, partage (dont 2 publics), design, IA (5), matching |
Données & externes |
MongoDB (4 collections), PostgreSQL ( |
Phase 2 Analysis (2TUP) — catalogue aligné sur le code réel (clarajob-front-api, clarajob-front-gui)