From c491728764be89e3ffd1942de257100cc50a1c3d Mon Sep 17 00:00:00 2001 From: Fred <98240+farnoux@users.noreply.github.com> Date: Mon, 25 Nov 2024 15:38:48 +0100 Subject: [PATCH] =?UTF-8?q?Pr=C3=A9cise=20les=20conventions=20de=20dossier?= =?UTF-8?q?s=20et=20fichiers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/adr/0003-conventions-de-code.md | 73 +++++++++++++++++++++++------ 1 file changed, 59 insertions(+), 14 deletions(-) diff --git a/doc/adr/0003-conventions-de-code.md b/doc/adr/0003-conventions-de-code.md index af7b88f1bc8..c5c12f816a3 100644 --- a/doc/adr/0003-conventions-de-code.md +++ b/doc/adr/0003-conventions-de-code.md @@ -27,45 +27,90 @@ Les conventions de nommage et d'architecture choisies suivent les standards par - **`kebab-case` pour les noms de fichiers et dossiers** - Exemple : `src/app/plan-actions/plan-actions.tsx` - -- **Organisation des dossiers d'abord par domaine → puis scope → puis layer technique** - - Exemple : `src/indicateurs/models/indicateur.schema.ts` - - Exemple : `src/plan-actions/shared/models/fiche-action.schema.ts` - - Exemple : `src/app/plan-actions/fiche-actions/views/fiche-action.card.tsx` + Exemple : `src/app/plans/plan-actions.tsx` + +- **Organisation des dossiers d'abord par domaine → puis scope [→ puis feature] [→ puis layer technique]** + + Exemple côté backend : + + ``` + src + └ plans + └ fiches + · └ count-by-statut + · · └ count-by-statut.request.ts + · · └ count-by-statut.response.ts + · · └ count-by-statut.router.ts + · · └ count-by-statut.router.e2e-test.ts + · · └ count-by-statut.service.ts + · └ update + · · └ update.controller.ts + · · └ update.request.ts + · · └ update.service.ts + · └ shared + · └ fiche-action.table.ts + · └ fiche-action-referent.table.ts + └ shared + └ models + └ thematique.table.ts + └ structure-tag.table.ts + ``` + + Exemple côté frontend : + + ``` + src + └ plans + └ toutes-les-fiches + · └ views + · └ fiche-action.list.tsx + · └ fiche-action.list-item.tsx + · └ fiche-action.card.tsx + · └ fiche-action.card.stories.tsx + └ shared + └ hooks + └ use-create-fiche-action.ts + └ use-export-fiche-action.ts + ``` - **Suffix des fichiers avec son "type"** - Exemple type UI : `fiche-action.card.tsx`, `fiche-action.list.tsx`, `fiche-action.list-item.tsx` + Exemple type UI : + + - `fiche-action.card.tsx` + - `fiche-action.list.tsx` + - `fiche-action.list-item.tsx` - **`index.ts` au niveau des sous-scopes**, si besoin, pour rassembler tous les exports associés et simplifier les imports. - Exemple : `src/plan-actions/fiche-actions/index.ts` + Exemple : `src/plans/fiches/index.ts` - → résultat à l'import : `import { FicheAction } from '@tet/api/fiche-actions'` + → résultat à l'import : `import { FicheAction } from '@tet/api/plans/fiches'` ### Les domaines métiers Territoires en Transitions Les domaines correspondent aux principaux contextes métiers de la plateforme Territoires en Transitions. -Voici les domaines définis actuellement : +Voici les domaines et sous-scopes définis actuellement : 1. `utilisateurs` 2. `collectivites` + - `membres` 3. `referentiels` + - `scores` - `audits` - `labelisations` - `personnalisations` 4. `indicateurs` + - `trajectoires` 5. `plans` + - `plans` - `fiches` - `paniers` + - `action-impacts` 6. `shared` -Les domaines définis doivent rester restreints et (quasi) figés. +Les domaines et scopes définis doivent rester restreints et (quasi) figés. L'ajout exceptionnel d'un nouveau domaine ne peut se faire qu'après validation auprès de l'ensemble de l'équipe.