feat(logistique) : migration schéma M5 tickets de pesée (ERP-182) #132

Merged
matthieu merged 1 commits from feat/erp-182-migration-m5 into develop 2026-06-18 12:47:03 +00:00
Owner

Stacké sur #131 (ERP-181 scaffolding). Base = feat/erp-181-logistique-module.

Objet

Crée le schéma BDD du module Logistique (M5 — tickets de pesée), migration au namespace racine DoctrineMigrations (FK cross-module user/client/supplier/site — règle ABSOLUE n°11).

Contenu

  • site.code VARCHAR(8) — préfixe de numérotation {siteCode}-TP-{NNNN} (RG-5.02) + backfill depuis le code postal + index unique uq_site_code.
    • ⚠️ NULLABLE à ce ticket : l'entité Site ne mappe pas encore code, donc un NOT NULL casserait fixtures/tests (INSERT ORM sans code). Le mapping ORM Site::code + peuplement (86/17/82) + SET NOT NULL sont portés par le ticket entité (ERP-183, via une 2ᵉ migration). L'index unique est déjà posé (Postgres tolère plusieurs NULL).
  • weighing_ticket_counter / weighbridge_dsd_counter — compteurs par site (numéro RG-5.02 / DSD pont RG-5.04), gérés en DBAL brut FOR UPDATE, jamais mappés en ORM → exclus du schema_filter (sinon schema:update les droppe en test, cf. précédent audit_log/idtf) + catalogués dans ColumnCommentsCatalog.
  • weighing_ticket — table principale : contrepartie CLIENT/FOURNISSEUR/AUTRE (CHECK 3 branches RG-5.03), immatriculation partagée + plate_free_format, pesées vide/plein en colonnes plates, net_weight dérivé (RG-5.05), deleted_at soft-delete + 4 colonnes Timestampable/Blamable. Index unique (site_id, number) + index FK. ON DELETE : site/client/supplier = RESTRICT, created_by/updated_by = SET NULL.

Règle n°12

COMMENT ON COLUMN (FR) sur chaque colonne créée — vérifié sur la BDD dev : weighing_ticket 25/25, compteurs 2/2, site.code ✓.

Vérifications

  • make db-reset + migration-migrate (BDD fraîche) → OK
  • make test : 6/6 garde-fous Architecture verts (dont ColumnsHaveSqlCommentTest), 798 tests verts
  • make php-cs-fixer-allow-risky : 0 fichier modifié

Note périmètre

La table weighing_ticket et la colonne site.code sont droppées par schema:update --force sur la base de TEST uniquement d'ici le ticket entité (sans impact : aucun test ne les référence ; dev/prod ne lancent jamais schema:update).

Stacké sur #131 (ERP-181 scaffolding). Base = `feat/erp-181-logistique-module`. ## Objet Crée le schéma BDD du module **Logistique** (M5 — tickets de pesée), migration au namespace racine `DoctrineMigrations` (FK cross-module user/client/supplier/site — règle ABSOLUE n°11). ## Contenu - **`site.code`** VARCHAR(8) — préfixe de numérotation `{siteCode}-TP-{NNNN}` (RG-5.02) + backfill depuis le code postal + index unique `uq_site_code`. - ⚠️ **NULLABLE à ce ticket** : l'entité `Site` ne mappe pas encore `code`, donc un `NOT NULL` casserait fixtures/tests (INSERT ORM sans `code`). Le **mapping ORM `Site::code` + peuplement (86/17/82) + `SET NOT NULL`** sont portés par le **ticket entité** (ERP-183, via une 2ᵉ migration). L'index unique est déjà posé (Postgres tolère plusieurs NULL). - **`weighing_ticket_counter`** / **`weighbridge_dsd_counter`** — compteurs par site (numéro RG-5.02 / DSD pont RG-5.04), gérés en **DBAL brut `FOR UPDATE`**, jamais mappés en ORM → **exclus du `schema_filter`** (sinon `schema:update` les droppe en test, cf. précédent `audit_log`/`idtf`) + catalogués dans `ColumnCommentsCatalog`. - **`weighing_ticket`** — table principale : contrepartie CLIENT/FOURNISSEUR/AUTRE (CHECK 3 branches RG-5.03), immatriculation partagée + `plate_free_format`, pesées vide/plein en colonnes plates, `net_weight` dérivé (RG-5.05), `deleted_at` soft-delete + 4 colonnes Timestampable/Blamable. Index unique `(site_id, number)` + index FK. `ON DELETE` : site/client/supplier = RESTRICT, created_by/updated_by = SET NULL. ## Règle n°12 `COMMENT ON COLUMN` (FR) sur **chaque** colonne créée — vérifié sur la BDD dev : `weighing_ticket` 25/25, compteurs 2/2, `site.code` ✓. ## Vérifications - `make db-reset` + `migration-migrate` (BDD fraîche) → OK - `make test` : **6/6 garde-fous Architecture verts** (dont `ColumnsHaveSqlCommentTest`), 798 tests verts - `make php-cs-fixer-allow-risky` : 0 fichier modifié ## Note périmètre La table `weighing_ticket` et la colonne `site.code` sont droppées par `schema:update --force` **sur la base de TEST uniquement** d'ici le ticket entité (sans impact : aucun test ne les référence ; dev/prod ne lancent jamais `schema:update`).
matthieu added the backdbM5-Ticket-peseetype/feat labels 2026-06-17 14:33:35 +00:00
matthieu changed target branch from feat/erp-181-logistique-module to develop 2026-06-18 12:46:59 +00:00
matthieu added 1 commit 2026-06-18 12:46:59 +00:00
Crée le schéma BDD du module Logistique (M5) au namespace racine
DoctrineMigrations (FK cross-module user/client/supplier/site, règle n°11) :

- site.code VARCHAR(8) (préfixe de numérotation {siteCode}-TP, RG-5.02) +
  backfill depuis le code postal + index unique uq_site_code. Colonne NULLABLE
  à ce ticket (l'entité Site ne mappe pas encore code) ; mapping ORM,
  peuplement et SET NOT NULL portés par le ticket entité.
- weighing_ticket_counter / weighbridge_dsd_counter : compteurs par site
  (numéro RG-5.02 / DSD pont RG-5.04), gérés en DBAL brut FOR UPDATE, hors ORM
  → exclus du schema_filter (sinon schema:update les droppe) + catalogués.
- weighing_ticket : table principale (contrepartie Client/Fournisseur/Autre
  avec CHECK 3 branches RG-5.03, immatriculation partagée, pesées vide/plein
  en colonnes plates, net_weight dérivé, soft-delete + Timestampable/Blamable).
  Index unique (site_id, number) + index FK. ON DELETE site/client/supplier =
  RESTRICT, created_by/updated_by = SET NULL.

COMMENT ON COLUMN sur chaque colonne créée (règle n°12). make test +
ColumnsHaveSqlCommentTest verts, db-reset OK.
matthieu merged commit 25466b18d8 into develop 2026-06-18 12:47:03 +00:00
matthieu deleted branch feat/erp-182-migration-m5 2026-06-18 12:47:03 +00:00
Sign in to join this conversation.