[ERP-44] Créer les entités Category et CategoryType #15

Merged
malio merged 3 commits from feature/ERP-44-creer-entites-category into develop 2026-05-28 09:44:19 +00:00
Owner

Objectif

Couche Domain DDD du module Catalog (ticket M0 · position 0.2). Crée les entités Category et CategoryType, leurs repositories, et branche le pattern Timestampable + Blamable Shared.

Mode stacked PR : cible feature/ERP-43-migrer-tables-category. Quand la MR ERP-43 sera mergée sur develop, Matthieu repointera la cible de cette MR vers develop.

Contenu

  • Category : #[ApiResource] (GetCollection, Get, Post, Patch, Delete), #[Auditable], TimestampableBlamableTrait + interfaces, asserts (NotBlank/Length sur name, NotNull sur categoryType), soft delete via deletedAt. Provider/Processor branchés au ticket 0.3 (ERP-45).
  • CategoryType : référentiel statique en lecture seule (GetCollection + Get), embarqué dans Category via le groupe category:read. Pas de Trait — whitelisté dans EntitiesAreTimestampableBlamableTest::EXCLUDED (RG-1.17).
  • Repositories : interfaces Domain + implémentations Doctrine.
  • config/packages/doctrine.yaml : mapping ORM Catalog inconditionnel (miroir de Sites) — nécessaire pour que l'ORM reconnaisse les entités. La déclaration du module (config/modules.php) reste pour le ticket 0.5 (ERP-47).
  • Groupes : category:read / category:write + default:read (expose les 4 colonnes du Trait).

Notes techniques

  • Index nommés déclarés sur les entités pour matcher la migration (cf. Role/Permission/Site).
  • L'index unique partiel uq_category_name_type_active (LOWER(name), category_type_id WHERE deleted_at IS NULL) reste possédé par la seule migration : Doctrine ORM ne sait pas exprimer un index fonctionnel + partiel. Seul diff résiduel de doctrine:schema:validate.

Tests

  • make php-cs-fixer-allow-risky
  • make test ✓ (248 tests, 0 échec)
  • make db-reset
  • debug:router ✓ (7 routes exposées)
  • doctrine:schema:validate : mapping correct
## Objectif Couche Domain DDD du module Catalog (ticket M0 · position 0.2). Crée les entités `Category` et `CategoryType`, leurs repositories, et branche le pattern Timestampable + Blamable Shared. > **Mode stacked PR** : cible `feature/ERP-43-migrer-tables-category`. Quand la MR ERP-43 sera mergée sur develop, Matthieu repointera la cible de cette MR vers develop. ## Contenu - **`Category`** : `#[ApiResource]` (GetCollection, Get, Post, Patch, Delete), `#[Auditable]`, `TimestampableBlamableTrait` + interfaces, asserts (`NotBlank`/`Length` sur `name`, `NotNull` sur `categoryType`), soft delete via `deletedAt`. Provider/Processor branchés au ticket 0.3 (ERP-45). - **`CategoryType`** : référentiel statique en lecture seule (GetCollection + Get), embarqué dans `Category` via le groupe `category:read`. Pas de Trait — whitelisté dans `EntitiesAreTimestampableBlamableTest::EXCLUDED` (RG-1.17). - **Repositories** : interfaces Domain + implémentations Doctrine. - **`config/packages/doctrine.yaml`** : mapping ORM `Catalog` inconditionnel (miroir de `Sites`) — nécessaire pour que l'ORM reconnaisse les entités. La déclaration du module (`config/modules.php`) reste pour le ticket 0.5 (ERP-47). - Groupes : `category:read` / `category:write` + `default:read` (expose les 4 colonnes du Trait). ## Notes techniques - Index nommés déclarés sur les entités pour matcher la migration (cf. Role/Permission/Site). - L'index unique partiel `uq_category_name_type_active` (`LOWER(name), category_type_id WHERE deleted_at IS NULL`) reste possédé par la seule migration : Doctrine ORM ne sait pas exprimer un index fonctionnel + partiel. Seul diff résiduel de `doctrine:schema:validate`. ## Tests - `make php-cs-fixer-allow-risky` ✓ - `make test` ✓ (248 tests, 0 échec) - `make db-reset` ✓ - `debug:router` ✓ (7 routes exposées) - `doctrine:schema:validate` : mapping correct
tristan approved these changes 2026-05-28 07:37:47 +00:00
malio changed target branch from feature/ERP-43-migrer-tables-category to develop 2026-05-28 09:40:04 +00:00
matthieu added 3 commits 2026-05-28 09:43:54 +00:00
- remplace build:dist (nuxt generate + prerender inutile en SPA) par nuxt build
- cache node_modules sur hash du lockfile, npm ci uniquement en cache miss
- regenere les types Nuxt (postinstall) en cache hit
- cache des artefacts .nuxt / Vite avec restore-keys pour eviter le build a froid
Les logs montrent que chaque operation actions/cache attend ~4m30 avant
ETIMEDOUT sur le serveur de cache du runner Gitea (51.91.78.99:39531) :
- cache: npm de setup-node = tout le 'Setup Node 22' (271s)
- cache node_modules et cache .nuxt : timeouts additionnels
- cache Composer cote backend : meme risque

Node 22 est deja dans le tool-cache (install instantane), npm ci a froid
~30s, build ~20s : le caching n'apportait rien ici. A re-activer si le
serveur de cache du runner est repare.
feat(catalog) : add Category and CategoryType entities with Timestampable+Blamable pattern
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 29m53s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m6s
cc0f0ea411
- Category : ApiResource (5 ops), #[Auditable], TimestampableBlamableTrait +
  interfaces, asserts (NotBlank/Length sur name, NotNull sur categoryType),
  soft delete via deletedAt, groupes category:read/category:write + default:read
- CategoryType : referentiel statique en lecture seule (GetCollection + Get),
  embarque dans Category via le groupe category:read
- Repositories : interfaces Domain + impl Doctrine pour les deux entites
- doctrine.yaml : mapping ORM Catalog inconditionnel (miroir Sites) pour que
  l'ORM reconnaisse les entites ; declaration du module = ticket 0.5
- EntitiesAreTimestampableBlamableTest : CategoryType ajoute a EXCLUDED (RG-1.17)
- Index nommes declares sur les entites (match migration) ; index unique partiel
  uq_category_name_type_active possede par la migration seule
matthieu force-pushed feature/ERP-44-creer-entites-category from e5fa6cb3c8 to cc0f0ea411 2026-05-28 09:43:54 +00:00 Compare
malio merged commit ff6086bc4d into develop 2026-05-28 09:44:19 +00:00
malio deleted branch feature/ERP-44-creer-entites-category 2026-05-28 09:44:20 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MALIO-DEV/Starseed#15