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)
186 lines
7.6 KiB
Markdown
186 lines
7.6 KiB
Markdown
# MOT — Modele Organisationnel de Traitements
|
|
|
|
> Vue organisationnelle des operations : QUI fait QUOI, QUAND, COMMENT, AVEC QUEL OUTIL.
|
|
> Methodologie : Merise. Le MOT prend les operations du MCT et les "concretise" cote organisation.
|
|
|
|
## 1. Conventions
|
|
|
|
- **Type** :
|
|
- `M` = Manuel (saisie utilisateur)
|
|
- `A` = Automatique (declenche par evenement)
|
|
- `B` = Batch (planifie)
|
|
- `S` = Semi-auto (validation manuelle d'un calcul auto)
|
|
- **Temps** :
|
|
- `TR` = Temps reel (synchrone)
|
|
- `D` = Differe (asynchrone, < 1min)
|
|
- `B` = Batch (planifie cron)
|
|
- **Outil** : composant qui execute (Baserow UI, Bridge, Cron, Docmost, Email, etc.)
|
|
|
|
## 2. Tableau MOT consolide
|
|
|
|
| Code | Operation (MCT) | Acteur | Type | Temps | Outil | Notes |
|
|
|------|-----------------|--------|------|-------|-------|-------|
|
|
| OP-01 | Creer formation | Admin | M | TR | Baserow UI | Formulaire avec validation |
|
|
| OP-02 | Decomposer en blocs/modules | Admin | M | TR | Baserow UI | Vue hierarchique |
|
|
| OP-03 | Attribuer module | Admin | M | TR | Baserow UI ou bridge form | Vue kanban "a attribuer" |
|
|
| OP-04 | Saisir heures realisees | Formateur | M | TR | Bridge UI mobile-friendly | A faire en fin de session ideal |
|
|
| OP-05 | Annuler attribution | Admin | M | TR | Baserow UI | Avec champ justification obligatoire |
|
|
| OP-06 | Cloturer module | System + Admin | S | TR | Baserow auto + bouton admin | Auto si toutes attributions realisees |
|
|
| OP-07 | Cloturer formation | System | A | D | Cron horaire + bridge webhook | Auto si EV-13 + date_fin |
|
|
| OP-08 | Recalculer rollups | System | A | TR | Baserow rollup natif | Re-calc transparent |
|
|
| OP-09 | Notifier depassement | System | A | TR | Bridge → SMTP / Slack webhook | Email + canal interne |
|
|
| OP-10 | Archiver formation | Admin | M | TR | Baserow UI | Action sensible, confirmation requise |
|
|
| OP-11 | Rapport formation (PDF) | Admin | M | TR | Bridge endpoint /reports/formation/:id | Export PDF |
|
|
| OP-12 | Rapport formateur (PDF) | Admin | M | TR | Bridge endpoint /reports/formateur/:id | Export PDF |
|
|
| OP-13 | Inviter client par lien | Admin | M | TR | Docmost share dialog | Lien expirable |
|
|
| OP-14 | Backup quotidien | System | B | B (03:00) | Cron + Makefile target | pg_dump + tar |
|
|
|
|
## 3. Vue par acteur
|
|
|
|
### Admin
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
A([Admin]) --> OP01[Creer formation]
|
|
A --> OP02[Decomposer]
|
|
A --> OP03[Attribuer]
|
|
A --> OP05[Annuler attribution]
|
|
A --> OP06b[Cloturer module manuel]
|
|
A --> OP10[Archiver]
|
|
A --> OP11[Rapport formation]
|
|
A --> OP12[Rapport formateur]
|
|
A --> OP13[Inviter client]
|
|
```
|
|
|
|
Charge typique : ~1-2h / semaine de saisie + lectures rapports a la demande.
|
|
|
|
### Formateur
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
F([Formateur]) --> OP04[Saisir heures realisees]
|
|
F --> OP14b[Consulter ses attributions]
|
|
F --> OP15[Editer pages wiki autorisees]
|
|
```
|
|
|
|
Charge typique : 5-10 min en fin de chaque session de formation pour saisir les heures.
|
|
|
|
### System (auto)
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
S([System]) --> OP06a[Cloturer module auto]
|
|
S --> OP07[Cloturer formation auto]
|
|
S --> OP08[Recalculer rollups]
|
|
S --> OP09[Notifier depassement]
|
|
S --> OP14[Backup quotidien]
|
|
```
|
|
|
|
Charge : transparent. Cron daily backup, webhooks rollups TR.
|
|
|
|
## 4. Repartition Outils
|
|
|
|
```mermaid
|
|
flowchart TB
|
|
subgraph "Baserow"
|
|
OP01[OP-01 Creer formation]
|
|
OP02[OP-02 Decomposer]
|
|
OP03[OP-03 Attribuer]
|
|
OP05[OP-05 Annuler]
|
|
OP08[OP-08 Recalc rollups<br/>natif]
|
|
end
|
|
subgraph "Bridge service"
|
|
OP04[OP-04 Saisie heures<br/>UI mobile]
|
|
OP07[OP-07 Cloturer formation<br/>cron]
|
|
OP09[OP-09 Notifier depassement<br/>webhook + SMTP]
|
|
OP11[OP-11 Rapport formation<br/>PDF]
|
|
OP12[OP-12 Rapport formateur<br/>PDF]
|
|
end
|
|
subgraph "Docmost"
|
|
OP13[OP-13 Inviter client<br/>share link]
|
|
OP15[OP-15 Editer wiki]
|
|
end
|
|
subgraph "Cron host"
|
|
OP14[OP-14 Backup quotidien]
|
|
end
|
|
```
|
|
|
|
## 5. Postes de travail / Devices
|
|
|
|
| Acteur | Device principal | Browser | Mobile-friendly attendu ? |
|
|
|--------|------------------|---------|---------------------------|
|
|
| Admin | Desktop | Firefox / Chrome | Non prioritaire |
|
|
| Formateur | Mobile + Desktop | Chrome mobile / Firefox | **OUI** — saisie heures rapide en fin de session |
|
|
| Etudiant | Mobile + Desktop | Tous | **OUI** |
|
|
| Client | Mobile + Desktop | Tous | OUI |
|
|
|
|
**Implication** : le bridge UI pour OP-04 (saisie heures) doit etre **mobile-first**. Baserow's default UI est desktop-oriented — donc soit on fait un formulaire Baserow public, soit on construit un mini-form dans le bridge.
|
|
|
|
## 6. Planning des operations automatiques
|
|
|
|
| Operation | Frequence | Heure | Owner |
|
|
|-----------|-----------|-------|-------|
|
|
| OP-08 Recalcul rollups | Sur evenement TR | — | Baserow natif |
|
|
| OP-07 Cloturer formation | Toutes les heures | xx:00 | Cron bridge |
|
|
| OP-09 Notifier depassement | Sur evenement TR | — | Bridge webhook |
|
|
| OP-14 Backup quotidien | Quotidien | 03:00 | Cron host |
|
|
| Audit log retention | Mensuel | 1er du mois 04:00 | Cron host |
|
|
|
|
## 7. SLA / Contraintes operationnelles
|
|
|
|
| Aspect | SLA cible | Justification |
|
|
|--------|-----------|---------------|
|
|
| Recalcul rollups | < 5s | UX : eviter latence visible apres saisie |
|
|
| Backup recovery (RPO) | 24h max | Backup quotidien |
|
|
| Backup recovery (RTO) | 4h max | Restauration manuelle assistee |
|
|
| Disponibilite stack | 99% (= 3.65j down/an acceptable) | Pas SI critique, c'est de l'interne |
|
|
| Latence saisie heures | < 2s | Frustration formateur sinon |
|
|
|
|
## 8. Operations Agence (extension scope B)
|
|
|
|
| Code | Operation (MCT) | Acteur | Type | Temps | Outil |
|
|
|------|-----------------|--------|------|-------|-------|
|
|
| OPA-01 | Creer client | Admin | M | TR | Baserow UI |
|
|
| OPA-02 | Creer projet | Admin | M | TR | Baserow UI |
|
|
| OPA-03 | Decomposer en taches | Admin | M | TR | Baserow UI (vue kanban) |
|
|
| OPA-04 | Attribuer tache a dev | Admin | M | TR | Baserow UI |
|
|
| OPA-05 | Saisir intervention | Developpeur | M | TR | Bridge UI mobile-friendly |
|
|
| OPA-06 | Marquer tache done | Dev / Admin | M | TR | Baserow UI ou bridge |
|
|
| OPA-07 | Cloturer projet | Admin | M | TR | Baserow UI (action sensible) |
|
|
| OPA-08 | Recalculer rollups Agence | System | A | TR | Baserow rollup natif |
|
|
| OPA-09 | Lier projet a formation pedago | Admin | M | TR | Baserow UI |
|
|
| OPA-10 | Recalculer capacite Personne unifiee | System | A | TR | Baserow + bridge si formules complexes |
|
|
|
|
### Vue par acteur — Developpeur (nouveau)
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
D([Developpeur]) --> OPA05[Saisir intervention]
|
|
D --> OPA08b[Consulter ses taches]
|
|
D --> OPA06[Marquer tache done]
|
|
D --> OPA15[Editer docs technique wiki]
|
|
```
|
|
|
|
Charge typique : 5-10 min par jour de travail pour saisir les heures par tache.
|
|
|
|
### SLA Agence
|
|
|
|
| Aspect | SLA cible | Justification |
|
|
|--------|-----------|---------------|
|
|
| Latence saisie intervention | < 2s | Frustration dev sinon |
|
|
| Recalcul rollups capacite Personne | < 5s | UX dashboards admin |
|
|
| Backup Baserow Agence | 24h max | RPO acceptable |
|
|
|
|
### Postes de travail Developpeur
|
|
|
|
| Acteur | Device principal | Mobile-friendly |
|
|
|--------|------------------|-----------------|
|
|
| Developpeur | Desktop (IDE) + Mobile (saisie heures rapide) | OUI |
|
|
|
|
## 9. Questions ouvertes pour validation
|
|
|
|
- [ ] OP-04 saisie heures : formulaire web bridge OU formulaire public Baserow OU app mobile dediee ?
|
|
- [ ] OP-09 notification : email ? Slack ? Webhooks vers outil interne ?
|
|
- [ ] OP-14 backup : sur le meme host ou push S3 distant (Backblaze, OVH Object Storage) ?
|
|
- [ ] Audit log : duree de retention ? Format (json append-only / table dediee) ?
|
|
- [ ] Multi-langue UI : aujourd'hui FR seul, mais Baserow et Docmost supportent EN nativement
|