Files
Starseed/docs/specs/M4-transporteurs/prompts/WT8-prix.md
T
Matthieu dc75945f3e feat(transport) : schéma + entités Carrier + contrat lecture (ERP-155/157)
Schéma BDD du répertoire transporteurs (M4) + entités + contrat de lecture
(liste + détail), socle du front.

- Migration Version20260615150000 : tables carrier / carrier_address /
  carrier_contact / carrier_price (FK cross-module, CHECK enum, index partiel
  uq_carrier_name_active, COMMENT ON COLUMN). uploaded_document et
  qualimat_carrier réutilisées (non recréées).
- Entités Carrier* (#[Auditable], Timestampable/Blamable) + ApiResource
  LECTURE seule (GetCollection + Get via CarrierProvider, anti-N+1, exclusion
  archivés + ?includeArchived). Écriture (POST/PATCH + Processor) reportée WT4+.
- QualimatCarrier : mapping ORM lecture seule sur la table référentielle
  existante (sortie du schema_filter, mapping aligné DDL ERP-39, schema:update
  no-op) + endpoint de recherche read-only (§ 4.7).
- Relations cross-module des prix (Client/Supplier/adresses) via contrats
  Shared (ClientInterface, SupplierInterface, ClientAddressInterface,
  SupplierAddressInterface) + resolve_target_entities — sans import inter-module
  (règle n°1). Ajout du groupe supplier_address:read aux champs de
  SupplierAddress pour l'embed.
- Garde-fous : ColumnCommentsCatalog (carrier* + qualimat_carrier), makefile
  test-db-setup (index partiel carrier), i18n audit (transport_carrier*),
  EntitiesAreTimestampableBlamableTest (QualimatCarrier whitelisté).
- CarrierSerializationContractTest : contrat JSON liste + détail vérifié
  (embeds objet, booléens, enveloppe Hydra) ; JSON réel capturé dans
  spec-back § 4.0.bis.

make db-reset OK, make test vert (731), make nuxt-test vert (480),
php-cs-fixer OK.
2026-06-16 15:13:10 +02:00

2.1 KiB

WT8 — Sous-ressource Prix + RG branches (ticket 1.9 / ERP-161)

git fetch origin
git worktree add ../sb-erp161-prix -b feat/erp-161-carrier-prices origin/develop
cd ../sb-erp161-prix && claude

Base : origin/develop après merge de WT3. Parallèle à WT5/WT6/WT7/WT9.


Prompt à coller

Projet Starseed (Symfony 8 / API Platform 4, DDD). Lis CLAUDE.md, .claude/rules/backend.md. Charge le skill backend-entity-conventions.

Mission : opérations d'écriture sur les prix transporteur, avec branches Client / Fournisseur.

Spec : spec-back.md § 4.5 / 7 + RG-4.09→4.11.

À livrer :

  • POST /api/carriers/{id}/prices, PATCH/DELETE /api/carrier_prices/{id} (security manage) — resource/processor dédiés à CarrierPrice.
  • RG-4.10 (CLIENT) : client, clientDeliveryAddress, departureSite requis ; clientDeliveryAddress doit appartenir au client → sinon 422.
  • RG-4.11 (FOURNISSEUR) : supplier, supplierSupplyAddress, deliverySite requis ; supplierSupplyAddress appartient au supplier → sinon 422.
  • Communs obligatoires : containerType, pricingUnit, price, priceState. CHECK branches respectés.

Rappels FK : « Adresse départ/livraison 86/17/82 » = Site (FK). Livraison client = ClientAddress, appro = SupplierAddress (relations ORM partagées — pas de M2M).

Tests à écrire : branche CLIENT/FOURNISSEUR incomplète → 422 ; adresse étrangère au client/supplier → 422 ; prix valide → 201.

Scope STRICT : uniquement CarrierPrice. NE TOUCHE PAS CarrierFixtures (WT10), Carrier, les autres sous-ressources. Messages FR.

Fini quand : make test vert + make php-cs-fixer-allow-risky. Commit (--no-verify si vert), puis ouvre la PR :

git push -u origin feat/erp-161-carrier-prices
tea pr create --base develop --head feat/erp-161-carrier-prices \
  --title "feat(transport) : sous-ressource prix transporteur (ERP-161)" \
  --description "POST/PATCH/DELETE carrier_price + RG-4.09→4.11 (branches client/fournisseur). Ticket ERP-161."

Puis labellise via l'API Gitea. Cible develop. Aucune mention IA.