- Bovine.breedCode (string) remplacé par bovineType (FK BovineType)
- Migration : ajout des races manquantes (Aubrac, Croisé, Blonde d'aquitaine), backfill, drop breed_code
- Sync EDNOTIF : auto-création d'un BovineType placeholder pour code inconnu
- Bovine.building (FK Building, nullable) en plus de buildingCase
- Getter effectiveBuilding (case prime sinon building direct)
- Feed XLSX : colonne E optionnelle (code bâtiment), set uniquement si pas de buildingCase
- Front : DTO + colonnes en variant inventory/case via composable, race et bâtiment ajustés
- Excel export utilise bovineType.label
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Colonne display_order ajoutée à Building avec migration
- Seed des valeurs par code : B3 -> 1, B2 -> 2, B1 -> 3, ZT -> 4
- ApiResource trie par displayOrder ASC puis id (NULLs en fin de liste)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Reception et Shipment utilisent createQuery au lieu de executeStatement
- Bypass toujours l'unit of work, même comportement, mais via Doctrine
- Mise à jour de la règle CLAUDE.md : repository custom autorisé, SQL brut interdit
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Repository BovineRepository avec getInventoryStats en DQL
- Sécurité ApiProperty ROLE_ADMIN sur pricePerKg et finalPrice
- Endpoint inventory-export passe en ROLE_ADMIN
- Composable useBovineColumns mutualisé entre inventory et case (admin/user séparés)
- Stats par tranche d'âge filtrables par buildingCaseId
- Légende avec cartes colorées pleines + texte blanc
- Coloration de la cellule Age (badge) au lieu de toute la ligne
- Décalage couleurs : red ≥ 24, orange 22-24, yellow 20-22
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- app:feed-bovine-prices <file> [--dry-run]
- Met à jour receivedWeight, pricePerKg et supplier sur les bovins existants (pas de création)
- Strip défensif du préfixe FR
- Supplier introuvable -> bovin updaté avec supplier=null + warning
- Préload des suppliers pour lookup O(1)
- Documentation ajoutée au README
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Champ pricePerKg persisté sur Bovine + migration
- Getter calculé finalPrice = receivedWeight * pricePerKg
- Colonnes Prix/kg et Prix total sur inventory et case
- Ajustements de largeurs pour rentrer dans le layout
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>