6.9 KiB
module, nom, ecran, owner_spec, backup_spec, version, date_redaction, maquette_figma, regles_metier, roles, lien_spec_back, client_validation_1, lesstime_taskgroup_id, lesstime_project_id, statut_global
| module | nom | ecran | owner_spec | backup_spec | version | date_redaction | maquette_figma | regles_metier | roles | lien_spec_back | client_validation_1 | lesstime_taskgroup_id | lesstime_project_id | statut_global | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| M0 | Gestion des catégories | gestion-categories | Matthieu | Tristan | V0 | 2026-05-22 | null |
|
|
./spec-back.md |
|
22 | 6 | en_dev |
Module 0 — Gestion des catégories (V0 front)
Origine : spec front V0 livrée le 22/05/2026 (
c4ebb6b4-M0categories.docx+f665acfb-M0categoriesV0.pdf). Restitution Markdown fidèle pour intégration au workflow MALIO. Le contenu original n'est pas modifié — toute reformulation et précision (en particulier côté back) vit dansspec-back.md.
But
Permettre à un administrateur Starseed de gérer un référentiel de catégories depuis l'interface admin du logiciel. Ces catégories seront utilisées plus tard pour classifier les tiers (clients, fournisseurs, prestataires).
Accès
- Depuis : menu principal → Administration → entrée « Gestion des catégories »
- Rôles autorisés : Admin uniquement (Bureau / Compta / Commerciale / Usine n'ont aucun accès, ni lecture ni écriture).
Navigation
L'écran est la page d'entrée du Module Administration. Titre de la page : « Gestion des catégories ».
- Affichage principal : un datatable listant toutes les catégories existantes.
- Clic sur une ligne → ouverture d'un drawer latéral en mode consultation / modification (cf. § Action « Consulter »).
- Bouton « + Ajouter » (en haut à droite du datatable) → ouverture d'un drawer en mode création (cf. § Action « Ajouter »).
- Pas d'onglet, pas de pagination explicite (volumétrie cible faible).
Actions
| Action | Déclencheur | Comportement |
|---|---|---|
| Ajouter | Clic sur le bouton « + Ajouter » | Ouvre le drawer en mode création, formulaire vide. Validation → POST → la catégorie apparaît dans le datatable. |
| Consulter | Clic sur une ligne du datatable | Ouvre le drawer avec les champs pré-remplis en lecture (et passage en édition si l'utilisateur modifie un champ). |
| Modifier | Modification d'un champ dans le drawer ouvert en consultation | Validation → PATCH → la ligne du datatable se met à jour. |
Note V0 : la suppression n'était pas mentionnée dans la V0 client. Côté workflow MALIO, suite à la revue back (cf.
spec-back.md§ Q3), un soft delete est ajouté (corbeille logique). L'UI peut intégrer ce point lors d'une V1 — au M0 le bouton « Supprimer » n'est pas obligatoire, mais doit être facilement ajoutable.
Formulaire — Champs
Le formulaire (drawer) contient 2 champs, tous deux obligatoires :
| Champ | Type | Obligatoire | Contenu / valeur par défaut | Règle |
|---|---|---|---|---|
| Nom | Texte libre | Oui | vide à la création | Pas de règle métier détaillée en V0. Détails côté back : RG-1.02 / RG-1.03 / RG-1.04 (obligatoire, trim, longueur 2–120). |
| Type de catégorie | Select | Oui | vide à la création | Le contenu du Select n'était pas précisé en V0. Décision back : entité de référence CategoryType séparée (RG-1.05 / RG-1.06). Le référentiel sera alimenté plus tard (cf. HP-1 dans spec-back.md). |
Note V0 : la V0 ne précisait ni si le
Type de catégorieest un enum hardcodé ni si c'est une autre entité. Décision tranchée côté back avant découpe en tickets : entité de référence (category_types), table créée vide au M0.
Permissions par rôle
| Rôle | Vue (GET) |
Création (POST) |
Édition (PATCH) |
Suppression (DELETE) |
|---|---|---|---|---|
| Admin | ✅ | ✅ | ✅ | ✅ (soft delete — ajout post-V0) |
| Bureau | ❌ | ❌ | ❌ | ❌ |
| Compta | ❌ | ❌ | ❌ | ❌ |
| Commerciale | ❌ | ❌ | ❌ | ❌ |
| Usine | ❌ | ❌ | ❌ | ❌ |
→ Les rôles non-Admin ne voient pas l'entrée de menu et reçoivent 403 sur toute requête vers les endpoints /api/categories/* (cf. RG-1.01 dans spec-back.md).
Composants UI à utiliser (Starseed / @malio/layer-ui)
- Datatable :
<MalioDataTable>(avec colonnesNom+Type+ actions, tri par défaut sur Nom). - Drawer : drawer latéral standard
@malio/layer-ui(à confirmer côté front avec le composant exact). - Input texte :
<MalioInputText>pour le champ Nom. - Select :
<MalioSelect>pour le champ Type de catégorie, alimenté parGET /api/category_types. - Bouton :
<MalioButton>(« + Ajouter », « Enregistrer », « Annuler »). - Toasts succès / erreur : standards via
useApi().
Points laissés ouverts par la V0 (résolus côté back)
| # | Zone d'ombre V0 | Résolution (cf. spec-back.md) |
|---|---|---|
| 1 | Suppression non mentionnée | Soft delete ajouté (RG-1.12 + RG-1.13). UI peut ajouter le bouton plus tard. |
| 2 | Unicité du nom non précisée | Unicité sur (name, type) case-insensitive, parmi non-soft-deleted (RG-1.07). |
| 3 | Nature du Type de catégorie (enum vs entité) |
Entité de référence CategoryType (table vide au M0, créée par migration). |
| 4 | Volumétrie & pagination | 300 max → pagination front (<MalioDataTable>), pas de pagination serveur. Tri serveur name ASC par défaut. |
| 5 | Audit / traçabilité | Pattern #[Auditable] Starseed standard. Trace dans la table audit_log (qui / quoi / quand / diff). Pas de colonnes created_by / updated_by sur l'entité (cohérent avec User / Role dans Starseed). Historique consultable via /api/audit-log?entityType=Category&entityId={id}. |
| 6 | Référencement par d'autres entités | Aucune FK entrante au M0. Les modules Tiers (M-Clients / M-Fournisseurs / M-Prestas) ajouteront leur propre category_id plus tard. |
📦 Tickets Lesstime générés
TaskGroup Lesstime : #22 — M0 — Gestion des catégories (projet ERP / Starseed, projectId=6)
Détail complet, table des tickets et action manuelle dans Lesstime → voir
spec-back.md § Tickets Lesstime générés.