⚙️ Diagrammes d’activité CV-builder
|
Note
|
📺 Diagrammes SVG de ce document
Documents liés : Cas d’utilisation · Diagrammes d’états · Architecture backend |
Track Fonctionnel 2TUP — Phase 2 : Modèle dynamique
Les diagrammes d’activité décrivent l’enchaînement des actions au sein des cas d’utilisation.
Notation UML : début (●), fin (◉), activités en rectangles arrondis, décisions en losanges
avec gardes [ condition ] / else.
Les participants correspondent aux responsabilités identifiées dans l’architecture : Candidat (acteur), Frontend Vue 3 (SPA), Backend WebFlux, IA Gemini/Groq (système externe). Il n’existe ni worker PDF ni scheduler : l’export est réalisé par le navigateur et la sauvegarde automatique est pilotée par un debounce frontend.
Création et édition d’un CV
Lecture du flux :
-
Trois chemins de création réels, au choix du candidat :
-
Wizard Clara (UC01) — 3 étapes secteur / niveau d’expérience / ton, puis
POST /api/v1/ai/generate-cv(CvGenerationService→ Gemini/Groq, 8192 tokens) qui renvoie un JSON de CV complet
-
-
* Import PDF (UC02) — sélection d’un PDF (60 Mo max), upload MinIO (
resumes/{userId}/…), puisPOST /cv-documents/import-pdf: extraction texte PDFBox et structuration par IA (generateJson, 120k tokens, normalisation des données importées) -
* Import du profil ClaraJob (UC03) —
POST /cv-documents/import-profile: identité, résumé et compétences construits depuisUser/UserSkill, avec merge du PDF du profil si présent -
Les trois chemins convergent : le CV est persisté (
cvDocuments) et chargé dans le store (cvData,currentCvId) -
Boucle d’édition : 8 sections + sections personnalisées (UC06–UC07, réordonnancement sortablejs, masquage
hiddenSections), assistée par leRichTextEditorTipTap avec IA Reformuler / Générer (UC17, cooldown 5 s, le contenu n’est jamais écrasé en cas d’échec) -
L’aperçu live se met à jour (
watchDebounced300 ms) et la sauvegarde automatique tourne en tâche de fond (UC19) ; tant que le candidat continue, la boucle reprend, sinon le flux se termine
Export PDF et partage
Lecture du flux :
-
Le candidat ouvre l’aperçu paginé A4 (UC10,
CvPagedPreview595×842, zoom desktop/mobile) -
Export (UC11) : préparation du rendu (
nextTick+requestAnimationFrame,CvPrintDocumenten@media print), puiswindow.print()— décision du navigateur : l’utilisateur enregistre le PDF vectoriel (événement Plausiblecv_exported) ou annule et revient à l’aperçu -
Partage (UC12) : activation par
PUT /cv-documents/{id}/share; slug optionnel validé par regex (409 CONFLICTsi déjà pris → correction et nouvel essai) -
L’URL publique
/cv/:token(et/shared/s/{slug}si slug) est copiable ; le visiteur consulte le CV public viaCvPublicView(UC13)
Sauvegarde automatique (UC19)
Lecture du flux :
-
Toute modification de
cvDatadéclenche le deep watch (watchDebounced(() ⇒ store.cvData, …, { debounce: 2000, deep: true })dansCvWorkspaceView) ; chaque nouvelle frappe réarme le délai de 2 s -
Les actions IA validées dans le chat Clara (UC16) court-circuitent le délai :
autoSave()est appelé immédiatement après application au store -
Décision
currentCvId défini ?: si[ non ],POST /cv-documentscrée le document (premier enregistrement,shareTokenUUID généré, id mémorisé) ; si[ oui ],PUT /cv-documents/{id}réalise un upsert complet (nom, template, couleurs,data) -
lastSavedAtest mis à jour et l’indicateur « Enregistré à HH:MM » s’affiche ; le cycle reprend tant que l’éditeur est ouvert
Il n’y a pas de timer 30 s, pas d’IndexedDB, pas de retry automatique : en cas d’échec réseau,
la prochaine modification relance simplement le cycle. Le watch n’observe ni accentColor ni
selectedTemplate (sauvegardés lors du prochain autoSave() déclenché par cvData).
Sync Gate — Cohérence avec les autres modèles
-
Chaque participant est un composant du modèle technique : Frontend Vue 3 (store
useCvBuilderStore, services axios), Backend WebFlux (CvDocumentService,CvImportService,CvGenerationService), IA Gemini/Groq (GeminiClient) -
Les décisions
[ 409 ],[ annule ],[ non ]reprennent les flux d’exception des fiches de cas d’utilisation -
Les activités de sauvegarde, d’export et de partage déclenchent les transitions des diagrammes d’états (Édité → Enregistré, Prêt → Boîte d’impression, Partage désactivé ⇄ activé)
Verdict : les flux d’activité couvrent les scénarios nominaux et d’exception des UC principaux — validé.