yavsc/doc/Architecture.md

66 lines
2.7 KiB
Markdown
Raw Normal View History

2026-06-12 12:34:02 +01:00
# Architecture de Yavsc
## Vision générale
Yavsc est une plateforme de mise en relation client/fournisseur,
spécialisable par domaine d'activité, avec une origine musicale.
Elle gère des **devis** (pas de facturation directe), et s'intègre
dans des workflows collaboratifs pouvant aboutir à des livrables
sous licence libre.
doc: split Architecture.md into per-topic pages doc/Architecture.md was 436 lines and growing; this commit extracts each non-trivial subject into its own page under doc/architecture/ and reduces the root document to a table of contents + transversal sections (vision, stack, admin rights). New pages (under doc/architecture/): - workflow-multi-parties.md : client / fournisseur / coordinateur roles, sous-traitance, project states, B2B/B2C, domaine musical production flow. - domaine-musical.md : titres collaboratifs (formats, flux de production, contraintes de licence). - licences.md : LicenceModele, CC/ODbL seed, badge projet, cycle de vie. - domaines-activite.md : arbre des activites, Droit a la racine, DomaineActivite model. - dictionnaires-metier.md : regle d'heritage, DictionnaireMetier + TermeMetier, cycle de vie d'un terme. Absorbs the previous doc/Dictionnaire.md draft. - offres-frontmatter.md : ClasseFormulaire / ClasseDevis, OffreFournisseur, Demande, parsing YamlDotNet (introduit dans 4034c399 Front matters). Absorbs the previous doc/Formulaires-devis.md and doc/Demande.md fragments. - postit-oidc.md : documentation du client desktop PostIt, custom URI scheme (RFC 8252 §7.1), composants partages, plateformes, UX observable, persistance et reprise au boot, garanties testees. Architecture.md (436 -> 66 lines) keeps the vision, the stack overview, the admin rights section, and a TOC table pointing at each detail page. The "A documenter ensuite" backlog is kept at the end. Cross-links are relative: from Architecture.md the links go architecture/<page>.md; from inside doc/architecture/ they go ../Architecture.md or <sibling>.md.
2026-06-27 13:45:31 +01:00
## Pages de détail
2026-06-12 12:34:02 +01:00
doc: split Architecture.md into per-topic pages doc/Architecture.md was 436 lines and growing; this commit extracts each non-trivial subject into its own page under doc/architecture/ and reduces the root document to a table of contents + transversal sections (vision, stack, admin rights). New pages (under doc/architecture/): - workflow-multi-parties.md : client / fournisseur / coordinateur roles, sous-traitance, project states, B2B/B2C, domaine musical production flow. - domaine-musical.md : titres collaboratifs (formats, flux de production, contraintes de licence). - licences.md : LicenceModele, CC/ODbL seed, badge projet, cycle de vie. - domaines-activite.md : arbre des activites, Droit a la racine, DomaineActivite model. - dictionnaires-metier.md : regle d'heritage, DictionnaireMetier + TermeMetier, cycle de vie d'un terme. Absorbs the previous doc/Dictionnaire.md draft. - offres-frontmatter.md : ClasseFormulaire / ClasseDevis, OffreFournisseur, Demande, parsing YamlDotNet (introduit dans 4034c399 Front matters). Absorbs the previous doc/Formulaires-devis.md and doc/Demande.md fragments. - postit-oidc.md : documentation du client desktop PostIt, custom URI scheme (RFC 8252 §7.1), composants partages, plateformes, UX observable, persistance et reprise au boot, garanties testees. Architecture.md (436 -> 66 lines) keeps the vision, the stack overview, the admin rights section, and a TOC table pointing at each detail page. The "A documenter ensuite" backlog is kept at the end. Cross-links are relative: from Architecture.md the links go architecture/<page>.md; from inside doc/architecture/ they go ../Architecture.md or <sibling>.md.
2026-06-27 13:45:31 +01:00
Chaque sujet est détaillé dans sa propre page (sous
`doc/architecture/`) ; cette racine tient lieu de sommaire.
2026-06-12 12:34:02 +01:00
doc: split Architecture.md into per-topic pages doc/Architecture.md was 436 lines and growing; this commit extracts each non-trivial subject into its own page under doc/architecture/ and reduces the root document to a table of contents + transversal sections (vision, stack, admin rights). New pages (under doc/architecture/): - workflow-multi-parties.md : client / fournisseur / coordinateur roles, sous-traitance, project states, B2B/B2C, domaine musical production flow. - domaine-musical.md : titres collaboratifs (formats, flux de production, contraintes de licence). - licences.md : LicenceModele, CC/ODbL seed, badge projet, cycle de vie. - domaines-activite.md : arbre des activites, Droit a la racine, DomaineActivite model. - dictionnaires-metier.md : regle d'heritage, DictionnaireMetier + TermeMetier, cycle de vie d'un terme. Absorbs the previous doc/Dictionnaire.md draft. - offres-frontmatter.md : ClasseFormulaire / ClasseDevis, OffreFournisseur, Demande, parsing YamlDotNet (introduit dans 4034c399 Front matters). Absorbs the previous doc/Formulaires-devis.md and doc/Demande.md fragments. - postit-oidc.md : documentation du client desktop PostIt, custom URI scheme (RFC 8252 §7.1), composants partages, plateformes, UX observable, persistance et reprise au boot, garanties testees. Architecture.md (436 -> 66 lines) keeps the vision, the stack overview, the admin rights section, and a TOC table pointing at each detail page. The "A documenter ensuite" backlog is kept at the end. Cross-links are relative: from Architecture.md the links go architecture/<page>.md; from inside doc/architecture/ they go ../Architecture.md or <sibling>.md.
2026-06-27 13:45:31 +01:00
| Sujet | Page |
|------------------------------------------------|-------------------------------------------------------------------|
| Workflow multi-parties (client / fournisseur / coordinateur, sous-traitance, états) | [workflow-multi-parties.md](architecture/workflow-multi-parties.md) |
| Domaine musical (titres collaboratifs) | [domaine-musical.md](architecture/domaine-musical.md) |
| Licences (`LicenceModele`, seed CC/ODbL, badge)| [licences.md](architecture/licences.md) |
| Domaines d'activité (arbre, `DomaineActivite`) | [domaines-activite.md](architecture/domaines-activite.md) |
| Dictionnaires métier (héritage en arbre) | [dictionnaires-metier.md](architecture/dictionnaires-metier.md) |
| Offre fournisseur + frontmatter (`ClasseFormulaire`, `ClasseDevis`, parsing) | [offres-frontmatter.md](architecture/offres-frontmatter.md) |
| PostIt / OIDC (client desktop, custom URI scheme, silent refresh) | [postit-oidc.md](architecture/postit-oidc.md) |
2026-06-12 12:34:02 +01:00
## Stack technique
- **Backend** : ASP.NET Core, C#
- **ORM** : Entity Framework Core (migrations générées)
- **Base de données** : PostgreSQL (provider Npgsql)
- **Frontend** : Razor views
2026-06-27 13:30:28 +01:00
- **Parsing frontmatter** : YamlDotNet
doc: split Architecture.md into per-topic pages doc/Architecture.md was 436 lines and growing; this commit extracts each non-trivial subject into its own page under doc/architecture/ and reduces the root document to a table of contents + transversal sections (vision, stack, admin rights). New pages (under doc/architecture/): - workflow-multi-parties.md : client / fournisseur / coordinateur roles, sous-traitance, project states, B2B/B2C, domaine musical production flow. - domaine-musical.md : titres collaboratifs (formats, flux de production, contraintes de licence). - licences.md : LicenceModele, CC/ODbL seed, badge projet, cycle de vie. - domaines-activite.md : arbre des activites, Droit a la racine, DomaineActivite model. - dictionnaires-metier.md : regle d'heritage, DictionnaireMetier + TermeMetier, cycle de vie d'un terme. Absorbs the previous doc/Dictionnaire.md draft. - offres-frontmatter.md : ClasseFormulaire / ClasseDevis, OffreFournisseur, Demande, parsing YamlDotNet (introduit dans 4034c399 Front matters). Absorbs the previous doc/Formulaires-devis.md and doc/Demande.md fragments. - postit-oidc.md : documentation du client desktop PostIt, custom URI scheme (RFC 8252 §7.1), composants partages, plateformes, UX observable, persistance et reprise au boot, garanties testees. Architecture.md (436 -> 66 lines) keeps the vision, the stack overview, the admin rights section, and a TOC table pointing at each detail page. The "A documenter ensuite" backlog is kept at the end. Cross-links are relative: from Architecture.md the links go architecture/<page>.md; from inside doc/architecture/ they go ../Architecture.md or <sibling>.md.
2026-06-27 13:45:31 +01:00
- **Client desktop** : Avalonia 12 (PostIt — détails dans
[postit-oidc.md](architecture/postit-oidc.md))
2026-06-14 18:26:40 +01:00
2026-06-27 13:30:28 +01:00
## Droits de Yavsc
2026-06-14 18:26:40 +01:00
2026-06-27 13:30:28 +01:00
### Administration
2026-06-14 18:26:40 +01:00
2026-06-27 13:30:28 +01:00
Le groupe des administrateurs prend la charge de :
doc: split Architecture.md into per-topic pages doc/Architecture.md was 436 lines and growing; this commit extracts each non-trivial subject into its own page under doc/architecture/ and reduces the root document to a table of contents + transversal sections (vision, stack, admin rights). New pages (under doc/architecture/): - workflow-multi-parties.md : client / fournisseur / coordinateur roles, sous-traitance, project states, B2B/B2C, domaine musical production flow. - domaine-musical.md : titres collaboratifs (formats, flux de production, contraintes de licence). - licences.md : LicenceModele, CC/ODbL seed, badge projet, cycle de vie. - domaines-activite.md : arbre des activites, Droit a la racine, DomaineActivite model. - dictionnaires-metier.md : regle d'heritage, DictionnaireMetier + TermeMetier, cycle de vie d'un terme. Absorbs the previous doc/Dictionnaire.md draft. - offres-frontmatter.md : ClasseFormulaire / ClasseDevis, OffreFournisseur, Demande, parsing YamlDotNet (introduit dans 4034c399 Front matters). Absorbs the previous doc/Formulaires-devis.md and doc/Demande.md fragments. - postit-oidc.md : documentation du client desktop PostIt, custom URI scheme (RFC 8252 §7.1), composants partages, plateformes, UX observable, persistance et reprise au boot, garanties testees. Architecture.md (436 -> 66 lines) keeps the vision, the stack overview, the admin rights section, and a TOC table pointing at each detail page. The "A documenter ensuite" backlog is kept at the end. Cross-links are relative: from Architecture.md the links go architecture/<page>.md; from inside doc/architecture/ they go ../Architecture.md or <sibling>.md.
2026-06-27 13:45:31 +01:00
2026-06-14 18:26:40 +01:00
- la Gestion des licences
- la Gestion des groupes d'utilisateurs (les modérateurs, en particulier)
- la Gestion des projets
- la Gestion des utilisateurs
### Gestion des utilisateurs et des groupes
doc: split Architecture.md into per-topic pages doc/Architecture.md was 436 lines and growing; this commit extracts each non-trivial subject into its own page under doc/architecture/ and reduces the root document to a table of contents + transversal sections (vision, stack, admin rights). New pages (under doc/architecture/): - workflow-multi-parties.md : client / fournisseur / coordinateur roles, sous-traitance, project states, B2B/B2C, domaine musical production flow. - domaine-musical.md : titres collaboratifs (formats, flux de production, contraintes de licence). - licences.md : LicenceModele, CC/ODbL seed, badge projet, cycle de vie. - domaines-activite.md : arbre des activites, Droit a la racine, DomaineActivite model. - dictionnaires-metier.md : regle d'heritage, DictionnaireMetier + TermeMetier, cycle de vie d'un terme. Absorbs the previous doc/Dictionnaire.md draft. - offres-frontmatter.md : ClasseFormulaire / ClasseDevis, OffreFournisseur, Demande, parsing YamlDotNet (introduit dans 4034c399 Front matters). Absorbs the previous doc/Formulaires-devis.md and doc/Demande.md fragments. - postit-oidc.md : documentation du client desktop PostIt, custom URI scheme (RFC 8252 §7.1), composants partages, plateformes, UX observable, persistance et reprise au boot, garanties testees. Architecture.md (436 -> 66 lines) keeps the vision, the stack overview, the admin rights section, and a TOC table pointing at each detail page. The "A documenter ensuite" backlog is kept at the end. Cross-links are relative: from Architecture.md the links go architecture/<page>.md; from inside doc/architecture/ they go ../Architecture.md or <sibling>.md.
2026-06-27 13:45:31 +01:00
En supposant que les certificats de letsencrypt sont au groupe
`www-data`, on peut créer l'utilisateur `yavsc` avec les droits
suivants :
2026-06-14 18:26:40 +01:00
2026-06-27 13:30:28 +01:00
```bash
2026-06-14 18:26:40 +01:00
sudo addgroup yavsc --system
sudo adduser --ingroup yavsc --add-extra-groups www-data \
--disabled-password --system yavsc
2026-06-27 13:30:28 +01:00
```
2026-06-12 12:34:02 +01:00
## À documenter ensuite
- Modèle `ProjetMusical`
- Gestion des fichiers (audio, partition, MIDI)
- Workflow de validation de licence par l'administration
2026-06-27 13:30:28 +01:00
- Workflow de modération des termes métier
- Workflow complet de parsing et validation du frontmatter à la sauvegarde