Files
Starseed/docs/specs/M0-categories/spec-front.md
T
Matthieu Tholot 3c9eaf5d69
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m18s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 10m11s
docs(catalog) : add M0 categories specs (back + front)
2026-05-26 15:07:45 +02:00

6.9 KiB
Raw Blame History

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
RG-1.01
RG-1.02
RG-1.03
RG-1.04
RG-1.05
RG-1.06
RG-1.07
RG-1.08
RG-1.09
RG-1.10
RG-1.11
RG-1.12
RG-1.13
Admin
Bureau
Compta
Commerciale
Usine
./spec-back.md
statut date canal valide_par resume trace_archivee
validee 2026-05-22 ecrit Matthieu (CP MALIO) — validation implicite, périmètre projet Module 0 — Gestion des catégories. Page admin (datatable + drawer). 2 champs (Nom + Type), 3 actions (Ajouter / Consulter / Modifier). Admin only. uploads/c4ebb6b4-M0categories.docx (V0 d'origine .docx) — restitué ci-dessous en Markdown.
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 dans spec-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 2120).
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égorie est 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 colonnes Nom + 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é par GET /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.