[ERP-67] Documenter toutes les colonnes BDD via COMMENT ON COLUMN + garde-fou #24

Merged
malio merged 3 commits from feature/ERP-67-sql-column-comments into develop 2026-05-29 09:41:30 +00:00

3 Commits

Author SHA1 Message Date
malio feb21e7fab Merge branch 'develop' into feature/ERP-67-sql-column-comments
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 2m3s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m0s
2026-05-29 09:41:23 +00:00
Matthieu a62380e2d2 fix(ci) : recree l'index partiel uq_category_name_type_active apres schema:update (ERP-67)
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 1m28s
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m5s
Le workflow CI lancait `doctrine:schema:update --force` (ajoute par ERP-67
pour aligner sur le mapping ORM avant `app:apply-column-comments`) sans
recreer ensuite l'index partiel `uq_category_name_type_active`. Doctrine
ORM 3 ne sait pas exprimer un index fonctionnel + partiel (LOWER(name)
WHERE deleted_at IS NULL), le considere donc comme orphelin et le DROP
silencieusement. Resultat en CI : les tests RG-1.07 (CategoryUniqueTest)
attendent 409 sur un doublon (name, type) mais recoivent 201 car la
contrainte SQL n'existe plus.

La cible `make test-db-setup` (ligne 222 du makefile) recreait deja l'index
via `dbal:run-sql` ; on aligne le workflow CI sur le meme pas, et on ajoute
un commentaire pointant vers la cause-racine pour eviter le drift au
prochain refactor du workflow.
2026-05-28 17:20:51 +02:00
Matthieu 2ecfe226af feat(db) : documenter toutes les colonnes BDD via COMMENT ON COLUMN + garde-fou (ERP-67)
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 1m13s
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Failing after 1m35s
- Migration retrofit Version20260528120000 : pose COMMENT ON TABLE/COLUMN sur
  les 11 tables metier existantes (53 colonnes) via le catalogue partage
  ColumnCommentsCatalog (Shared/Infrastructure/Database).
- Commande app:apply-column-comments : rejoue le catalogue apres
  doctrine:schema:update --force (sinon l'ORM drop les commentaires absents
  du mapping PHP). Branchee dans makefile test-db-setup et workflow CI Gitea.
- Test architecture tests/Architecture/ColumnsHaveSqlCommentTest : echoue si
  une colonne public n'a pas de col_description (hors doctrine_migration_versions
  et fake_site_aware_entity). Whitelist metier vide.
- Convention documentee dans CLAUDE.md (regle ABSOLUE n°12) et
  .claude/rules/backend.md (section Migrations Doctrine) avec exemples et
  helper standardise pour les colonnes Timestampable/Blamable.
2026-05-28 16:44:18 +02:00