Conception complete (Phase 0) pour formation-hub Acadenice : - 19 docs Merise Agile + UML + GitOps + plans (tests/deploy/ops/api) cf docs/00-readme.md pour l'index complet - Stack Docker compose (Docmost + Baserow + Postgres + Redis + MinIO local FS) compose.yml + compose.staging.yml + compose.prod.yml - CI/CD GitHub Actions skeleton (ci, deploy-staging, deploy-prod) - Bridge service skeleton (Hono + TS + Biome + Vitest + zod + pino) - Templates GitHub : PR + 3 issue types + CODEOWNERS + dependabot.yml - Scripts ops : healthcheck, backup quotidien, smoke-test post-deploy - LICENSE AGPL-3.0 + SECURITY.md + CONTRIBUTING.md + CHANGELOG.md - Diagramme drawIO archi infra (XML importable dans diagrams.net) Decisions structurelles enregistrees : - Scope CFA + Agence avec entite PERSONNE pivot multi-roles (ADR-001) - Stack composite Docmost AGPL + Baserow MIT + bridge custom (ADR-001) - Path B : UX quasi-unified via Tiptap node-views custom (ADR-002) - Monorepo trunk-based development (ADR-003) - Postgres separe Docmost/Baserow (ADR-004) - Bridge stack Node 22 + Hono (ADR-005) - Repo neuf prefere a fork Docmost - Prod-like des le jour 1 (pas MVP)
192 lines
7.4 KiB
Markdown
192 lines
7.4 KiB
Markdown
# UML — Activity Diagrams
|
|
|
|
> Vue dynamique des **workflows complets** (parcours utilisateur de bout en bout).
|
|
> Complement aux state diagrams (cycle de vie d'une entite) et au MCT (operations isolees).
|
|
> Chaque diagramme = un parcours metier qui traverse plusieurs entites et acteurs.
|
|
|
|
## 1. AD-01 — Attribuer un module a un formateur
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Start([Admin demande attribution]) --> A1[Selectionner module a attribuer]
|
|
A1 --> A2{Module existe<br/>statut != annule?}
|
|
A2 -->|Non| Err1([Erreur: module invalide])
|
|
A2 -->|Oui| A3[Lister formateurs avec capacite >= heures requises]
|
|
A3 --> A4{Au moins 1<br/>formateur dispo?}
|
|
A4 -->|Non| Err2([Pas de formateur dispo - ajouter capacite ou reduire heures])
|
|
A4 -->|Oui| A5[Admin choisit formateur]
|
|
A5 --> A6[Saisir heures + dates]
|
|
A6 --> A7{Heures attribution +<br/>existantes <= heures module?}
|
|
A7 -->|Non| Err3([RG-01 KO: depassement heures module])
|
|
A7 -->|Oui| A8{Heures + capacite<br/>existante > capacite annuelle?}
|
|
A8 -->|Oui| Warn[Warning: depassement capacite formateur]
|
|
A8 -->|Non| A9
|
|
Warn --> A9[Confirmer attribution]
|
|
A9 --> A10[INSERT attribution statut=planifie]
|
|
A10 --> A11[Recalculer rollups en cascade]
|
|
A11 --> A12[Notifier formateur par email]
|
|
A12 --> End([Attribution confirmee])
|
|
```
|
|
|
|
## 2. AD-02 — Saisir heures realisees (parcours formateur)
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Start([Formateur fin de cours]) --> B1[Ouvre app sur mobile]
|
|
B1 --> B2{Authentifie?}
|
|
B2 -->|Non| B3[Login SSO ou email/password]
|
|
B3 --> B4
|
|
B2 -->|Oui| B4[Affiche liste de mes attributions actives]
|
|
B4 --> B5[Selectionne l'attribution du jour]
|
|
B5 --> B6[Saisit heures realisees]
|
|
B6 --> B7{heures_realisees<br/><= heures_attribuees + tolerance?}
|
|
B7 -->|Non| B8[Saisit raison du depassement]
|
|
B8 --> B9
|
|
B7 -->|Oui| B9[Confirme]
|
|
B9 --> B10[UPDATE attribution.heures_realisees]
|
|
B10 --> B11{heures_realisees<br/>== heures_attribuees?}
|
|
B11 -->|Oui| B12[attribution.statut = realise]
|
|
B11 -->|Non| B13[attribution.statut reste en_cours]
|
|
B12 --> B14[Recalculer rollups]
|
|
B13 --> B14
|
|
B14 --> End([Saisie confirmee])
|
|
```
|
|
|
|
## 3. AD-03 — Cycle complet d'une formation (vue globale)
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Start([Direction valide nouvelle formation]) --> C1[Admin cree FORMATION statut=draft]
|
|
C1 --> C2[Admin cree BLOC RNCP-1, BLOC RNCP-2, ...]
|
|
C2 --> C3[Admin cree MODULES dans chaque bloc]
|
|
C3 --> C4{Tous modules<br/>prets a attribuer?}
|
|
C4 -->|Non| C3
|
|
C4 -->|Oui| C5[Admin active formation: statut=actif]
|
|
C5 --> C6{Pour chaque module}
|
|
C6 --> C7[AD-01: Attribuer formateur]
|
|
C7 --> C6
|
|
C6 -->|Tous attribues| C8[Date debut atteinte]
|
|
C8 --> C9[Modules passent en_cours auto]
|
|
C9 --> C10{Pour chaque session}
|
|
C10 --> C11[AD-02: Formateur saisit heures]
|
|
C11 --> C10
|
|
C10 -->|Toutes sessions terminees| C12[Modules passent realise auto]
|
|
C12 --> C13{Tous modules realises<br/>+ date_fin atteinte?}
|
|
C13 -->|Non| C10
|
|
C13 -->|Oui| C14[Formation statut=termine]
|
|
C14 --> C15[Generer rapport final + archivage]
|
|
C15 --> End([Formation terminee])
|
|
```
|
|
|
|
## 4. AD-04 — Parcours projet client (Agence)
|
|
|
|
> Note : couvre la branche **Agence dev** d'Acadenice. Necessite l'extension du modele decrite dans `02-scope-etendu-cfa-agence.md`.
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Start([Client signe devis]) --> D1[Admin cree CLIENT si nouveau]
|
|
D1 --> D2[Admin cree PROJET lie au client]
|
|
D2 --> D3[Decouper en LIVRABLES ou TACHES]
|
|
D3 --> D4[Estimer charge en heures]
|
|
D4 --> D5[Identifier devs disponibles<br/>capacite agence restante]
|
|
D5 --> D6[INTERVENTION: lier dev a tache, heures]
|
|
D6 --> D7{Dev = formateur aussi?}
|
|
D7 -->|Oui| D8[Verifier capacite totale<br/>= capacite_agence + capacite_formation]
|
|
D7 -->|Non| D9
|
|
D8 --> D9[Confirmer intervention]
|
|
D9 --> D10{Pour chaque session de travail}
|
|
D10 --> D11[Dev saisit heures realisees]
|
|
D11 --> D10
|
|
D10 -->|Tache terminee| D12[Tache statut=livre]
|
|
D12 --> D13{Tous livrables<br/>livres?}
|
|
D13 -->|Non| D10
|
|
D13 -->|Oui| D14[PROJET statut=cloture]
|
|
D14 --> D15[Facturation client]
|
|
D15 --> End([Projet cloture])
|
|
```
|
|
|
|
## 5. AD-05 — Allocation capacite Formateur-Developpeur (cas mixte)
|
|
|
|
> Cas specifique Acadenice : un formateur peut aussi etre dev sur projet client. Sa capacite totale annuelle est splittee entre formation et agence.
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Start([Personne avec role formateur + developpeur]) --> E1[Capacite totale annuelle = X heures]
|
|
E1 --> E2[Repartition par defaut:<br/>50 pct formation, 50 pct agence<br/>configurable par personne]
|
|
E2 --> E3{Allocation cours<br/>ou projet?}
|
|
|
|
E3 -->|Cours formation| E4[heures_cours_attribuees<br/>+= nouvelles heures]
|
|
E4 --> E5{capacite_formation_restante >= 0?}
|
|
E5 -->|Non| Err1[Bloquer ou warning]
|
|
E5 -->|Oui| E6[OK]
|
|
|
|
E3 -->|Projet client| E7[heures_projet_attribuees<br/>+= nouvelles heures]
|
|
E7 --> E8{capacite_agence_restante >= 0?}
|
|
E8 -->|Non| Err2[Bloquer ou warning]
|
|
E8 -->|Oui| E9[OK]
|
|
|
|
E6 --> Final[Recalculer:<br/>capacite_totale_restante = X - cours_attribuees - projet_attribuees]
|
|
E9 --> Final
|
|
Final --> End([Affichage tableau de bord<br/>Personne])
|
|
```
|
|
|
|
## 6. AD-06 — Inscription etudiant a une formation
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Start([Prospect candidate]) --> F1[Admin cree ETUDIANT prospect]
|
|
F1 --> F2[Phase selection: tests, entretiens]
|
|
F2 --> F3{Selectionne?}
|
|
F3 -->|Non| F4[Statut = refuse, lettre]
|
|
F4 --> EndKo([Fin])
|
|
F3 -->|Oui| F5[Etudiant statut = admis]
|
|
F5 --> F6[INSCRIPTION: lier ETUDIANT a FORMATION]
|
|
F6 --> F7[Creer space personnel Docmost]
|
|
F7 --> F8[Envoyer onboarding info]
|
|
F8 --> F9{Date debut formation?}
|
|
F9 -->|Non encore| F8
|
|
F9 -->|Oui| F10[Etudiant.statut = en_cours]
|
|
F10 --> F11[Formation classique]
|
|
F11 --> F12{Reussi?}
|
|
F12 -->|Oui| F13[Etudiant.statut = diplome]
|
|
F12 -->|Non| F14[Etudiant.statut = abandonne ou redouble]
|
|
F13 --> EndOk([Diplome remis])
|
|
F14 --> EndKo
|
|
```
|
|
|
|
## 7. AD-07 — Validation et publication d'une page wiki
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
Start([Auteur ouvre page Docmost]) --> G1[Edite contenu]
|
|
G1 --> G2[Sauvegarde brouillon auto]
|
|
G2 --> G3{Pret a publier?}
|
|
G3 -->|Non| G1
|
|
G3 -->|Oui| G4[Demande review optionnelle]
|
|
G4 --> G5{Reviewer assigne?}
|
|
G5 -->|Non| G7
|
|
G5 -->|Oui| G6[Reviewer commente]
|
|
G6 --> G7[Auteur applique changements]
|
|
G7 --> G8[Publie page]
|
|
G8 --> G9[Indexation search]
|
|
G9 --> G10{Page partagee externe?}
|
|
G10 -->|Oui| G11[Genere share link]
|
|
G11 --> G12[Envoie lien aux destinataires]
|
|
G10 -->|Non| End
|
|
G12 --> End([Page publiee])
|
|
```
|
|
|
|
## 8. Liste des activity diagrams a faire (post-validation scope)
|
|
|
|
| Code | Titre | Statut |
|
|
|------|-------|--------|
|
|
| AD-01 | Attribuer module a formateur | Fait |
|
|
| AD-02 | Saisir heures realisees | Fait |
|
|
| AD-03 | Cycle complet d'une formation | Fait |
|
|
| AD-04 | Parcours projet client (Agence) | Brouillon, depend de scope etendu |
|
|
| AD-05 | Allocation Formateur-Dev (capacite mixte) | Brouillon, depend de scope etendu |
|
|
| AD-06 | Inscription etudiant | Fait |
|
|
| AD-07 | Validation page wiki | Fait |
|
|
| AD-08 | Onboarding nouveau salarie / formateur | A faire |
|
|
| AD-09 | Maintenance site web client (recurring) | A faire si scope etendu |
|
|
| AD-10 | Backup + restauration disaster recovery | A faire (ops) |
|