docs : amend M0/M1 specs for category taxonomy refonte (ERP-78)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 28m47s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Has been cancelled

Spec M1 § 3.3 (type unique CLIENT + Category.code), RG-1.03 (filtre par code),
RG-1.29 (interdiction par code), spec-front (selects par code) et note
d'evolution dans la spec M0.
This commit is contained in:
Matthieu
2026-06-02 09:20:58 +02:00
parent dad5e33006
commit 5b16fd9928
3 changed files with 27 additions and 19 deletions
+2
View File
@@ -118,6 +118,8 @@ Aucun pattern soft delete existant dans Starseed (vérifié, aucune entité ne p
Index unique partiel sur `(LOWER(name), category_type_id) WHERE deleted_at IS NULL`. Permet de recréer une catégorie avec le même `(name, type)` après suppression logique. Postgres supporte nativement (`CREATE UNIQUE INDEX ... WHERE`). Pattern propre, pas besoin de validator applicatif maison côté unicité — la contrainte SQL fait le job.
> **🔗 Évolution ERP-78 (refonte taxonomie M1)** : `Category` porte désormais une colonne **`code`** (`VARCHAR(50)`, NOT NULL), slug MAJUSCULE auto-généré du nom (figé à la création, lecture seule via l'API), avec un **second index unique partiel** `uq_category_code (code) WHERE deleted_at IS NULL`. Ce code est la clé métier stable utilisée par le M1 Commercial (RG-1.03 / RG-1.29). Détail : `docs/specs/M1-clients/spec-back.md` § 3.3.
### 2.5 Audit & traces temporelles — deux niveaux complémentaires
Deux mécanismes **indépendants** cohabitent :