Commit Graph

707 Commits

Author SHA1 Message Date
Matthieu 8cfcb41a39 feat(conversion) : commande CLI pour convertir la catégorie Moteur de PIECE vers COMPONENT
Auto Tag Develop / tag (push) Has been cancelled
Migre les 18 pièces en composants, transfère documents, custom fields,
slots et skeleton requirements dans une transaction. Supporte --dry-run.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 16:57:46 +02:00
gitea-actions 980a7c310e chore : bump version to v1.9.27
Auto Tag Develop / tag (push) Successful in 9s
Build & Push Docker Image / build (push) Successful in 2m32s
v1.9.27
2026-04-09 12:34:46 +00:00
Matthieu 00f18d1c7d feat(infra) : add monolog logging and persist logs in prod
Auto Tag Develop / tag (push) Has been cancelled
Install symfony/monolog-bundle with rotating_file handlers.
Add named volume inventory_logs for prod log persistence.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 14:33:42 +02:00
gitea-actions 6e2c5179a9 chore : bump version to v1.9.26
Auto Tag Develop / tag (push) Successful in 7s
Build & Push Docker Image / build (push) Successful in 34s
v1.9.26
2026-04-06 18:46:40 +00:00
matthieu 3cd18a721a feat(ui) : refonte cartes dépliantes structure machine + DataTable parc machines + fix activity-log
Auto Tag Develop / tag (push) Has been cancelled
- Parc Machines transformé en DataTable avec filtres (site, date création, recherche)
- Vue d'ensemble : ajout filtre par plage de dates de création
- Activity-log : correction des liens entités (routes singulier sans /edit, ajout machine/document/model_type)
- ComponentItem & PieceItem : refonte complète des cartes dépliantes (design industriel raffiné)
  - Header compact avec tags colorés contrastés (référence, réf. auto, prix, produit, champs machine)
  - Panneau déplié structuré en sections avec mini-headers
  - Bordure gauche primary pour hiérarchie visuelle
- Ajout referenceAuto dans header et infos pour composants et pièces
- Suppression double encadrement ComponentHierarchy

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 20:46:25 +02:00
gitea-actions 191e071957 chore : bump version to v1.9.25
Auto Tag Develop / tag (push) Successful in 8s
Build & Push Docker Image / build (push) Successful in 35s
v1.9.25
2026-04-06 16:54:32 +00:00
matthieu f964df76b9 feat(custom-fields) : messages warning champs obligatoires + commandes make frontend
Auto Tag Develop / tag (push) Successful in 10s
Ajoute des messages visuels (warning + error) quand des champs perso
obligatoires ne sont pas renseignés sur les pages composant (création
et édition). Ajoute make test-front et make test-front-watch au Makefile.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 18:54:22 +02:00
gitea-actions 6744542f84 chore : bump version to v1.9.24
Auto Tag Develop / tag (push) Successful in 8s
Build & Push Docker Image / build (push) Successful in 37s
v1.9.24
2026-04-06 15:23:07 +00:00
matthieu 3e0e9d5270 feat(categories) : aligner design catégories sur catalogues
Auto Tag Develop / tag (push) Has been cancelled
- Ajoute colonne createdAt triable dans la datatable des catégories
- Retire le bouton « Créer » de la vue catégorie (ManagementView)
- Retire l'action « Convertir » de toutes les catégories
- Le bouton « Ajouter » des pages catalogue switch selon l'onglet
  actif : crée un item (catalogue) ou une catégorie (catégories)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:22:57 +02:00
gitea-actions 4e0efc11ba chore : bump version to v1.9.23
Auto Tag Develop / tag (push) Successful in 9s
Build & Push Docker Image / build (push) Successful in 38s
v1.9.23
2026-04-06 15:18:20 +00:00
matthieu 9fc88df3ff fix(piece) : rendre les slots produit optionnels en création et édition
Auto Tag Develop / tag (push) Has been cancelled
Les sélections de produits liés ne bloquent plus la soumission du
formulaire de création ou d'édition de pièce. Les slots vides restent
visibles et peuvent être remplis ultérieurement.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:18:10 +02:00
gitea-actions 041a04f0e9 chore : bump version to v1.9.22
Auto Tag Develop / tag (push) Successful in 8s
Build & Push Docker Image / build (push) Successful in 36s
v1.9.22
2026-04-06 15:15:37 +00:00
matthieu d089cd4873 fix(model-type) : masquer uniquement les produits, garder les champs perso
Auto Tag Develop / tag (push) Has been cancelled
Ajoute une prop hideProducts au PieceModelStructureEditor pour masquer
la section « Produits inclus par défaut » sans retirer les champs
personnalisés. Utilisé pour les catégories PRODUCT.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:15:26 +02:00
gitea-actions b304cf6684 chore : bump version to v1.9.21
Auto Tag Develop / tag (push) Successful in 8s
Build & Push Docker Image / build (push) Successful in 36s
v1.9.21
2026-04-06 15:12:40 +00:00
matthieu 0fe7f3131e fix(model-type) : retirer l'éditeur de structure produit inutilisé
Auto Tag Develop / tag (push) Has been cancelled
Le PieceModelStructureEditor affiché pour les catégories PRODUCT ne
fonctionnait plus et n'est plus utilisé.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:12:29 +02:00
matthieu a6bbcaf6d1 fix(custom-fields) : masquer les champs machineContextOnly hors vue machine
Ajoute context: 'standalone' aux appels useCustomFieldInputs dans les
vues composant, pièce et produit (création et édition) pour filtrer
les champs perso réservés au contexte machine.

Exclut également ces champs de la formule de référence automatique
dans le ReferenceFormulaBuilder des catégories.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:12:29 +02:00
matthieu 9f2e1da6ec fix(composant) : rendre les slots de structure optionnels à la création
Les emplacements pièces, produits et sous-composants du squelette ne
bloquent plus la soumission du formulaire de création de composant.
Les slots vides restent visibles en consultation avec l'indicateur rouge
« manquant » et peuvent être remplis ultérieurement en édition.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 17:12:29 +02:00
gitea-actions 7962576eec chore : bump version to v1.9.20
Auto Tag Develop / tag (push) Successful in 8s
Build & Push Docker Image / build (push) Successful in 37s
v1.9.20
2026-04-06 14:54:20 +00:00
matthieu 7d98c1598c fix(deps) : update composer.lock with symfony/mime
Auto Tag Develop / tag (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:54:09 +02:00
gitea-actions 4772f057a3 chore : bump version to v1.9.19
Auto Tag Develop / tag (push) Successful in 8s
Build & Push Docker Image / build (push) Failing after 9s
v1.9.19
2026-04-06 14:52:56 +00:00
matthieu 6680423e64 fix(deps) : add symfony/mime as explicit dependency
Auto Tag Develop / tag (push) Has been cancelled
Was previously pulled as transitive dependency but disappeared after
composer update, causing 500 errors on document upload in production.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:52:42 +02:00
matthieu 2c2de8bc00 test(machine-detail) : add hierarchy loading and override data integrity tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:52:42 +02:00
matthieu 150aceac24 test(piece-edit,documents) : add productIds sync, error paths, and document CRUD tests 2026-04-06 16:52:42 +02:00
matthieu 972f30e772 test(component-create) : add structure, error path, and null handling tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:52:42 +02:00
matthieu 8af68c9628 test(component-edit) : add document, error path, and null handling tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:52:42 +02:00
matthieu eb68336723 test(machine-custom-fields) : add checkbox and data integrity tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:52:42 +02:00
matthieu eeba229574 test(piece-edit) : add edit flow and product slot data integrity tests 2026-04-06 16:52:41 +02:00
matthieu 4454bbea3d test(component-edit) : add edit flow and slot data integrity tests 2026-04-06 16:52:41 +02:00
matthieu 1e40334e11 test(component-create) : add creation flow data integrity tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:52:41 +02:00
matthieu 83c75ecf69 test(crud) : add CRUD cache data integrity tests for products, composants, pieces
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:52:41 +02:00
matthieu b54739f6de test(custom-fields) : add data integrity tests for all field types 2026-04-06 16:52:41 +02:00
matthieu 82cbeb91a5 test(constructeur-links) : add sync algorithm data integrity tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:52:41 +02:00
matthieu e70c66e215 test(fixtures) : add shared mock data for data integrity tests
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 16:52:41 +02:00
gitea-actions 1c07c96184 chore : bump version to v1.9.18
Auto Tag Develop / tag (push) Successful in 8s
Build & Push Docker Image / build (push) Successful in 37s
v1.9.18
2026-04-06 09:39:15 +00:00
matthieu 122170c3fd feat(ui) : add documentation page
Auto Tag Develop / tag (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 11:34:18 +02:00
gitea-actions 3f5e4b7f51 chore : bump version to v1.9.17
Auto Tag Develop / tag (push) Successful in 16s
Build & Push Docker Image / build (push) Successful in 38s
v1.9.17
2026-04-06 09:23:53 +00:00
matthieu 0832af86cc Merge branch 'feat/ux-quick-wins' into develop
Auto Tag Develop / tag (push) Has been cancelled
# Conflicts:
#	frontend/app/components/ComponentItem.vue
#	frontend/app/components/PieceItem.vue
#	frontend/app/components/machine/MachineInfoCard.vue
#	frontend/app/composables/usePieceEdit.ts
#	frontend/app/pages/component/[id]/index.vue
#	frontend/app/pages/piece/[id].vue
#	frontend/app/pages/product/[id]/edit.vue
#	frontend/app/pages/product/[id]/index.vue
#	frontend/app/pages/product/create.vue
#	frontend/app/shared/utils/customFields.ts
2026-04-06 11:23:21 +02:00
matthieu 44b6e0998c fix(custom-fields) : fix declaration order in useComponentEdit and useComponentCreate
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 11:20:08 +02:00
matthieu c4ed8c8edc refactor(custom-fields) : unify 3 parallel implementations into 1 module
Replace ~2900 lines across 9 files with ~400 lines in 2 files:
- shared/utils/customFields.ts (types + pure helpers)
- composables/useCustomFieldInputs.ts (reactive composable)

Migrated all consumers:
- Backend: add defaultValue to API Platform serialization groups
- Standalone pages: component edit/create, piece edit/create, product edit/create/detail
- Machine page: MachineCustomFieldsCard, MachineInfoCard, useMachineDetailCustomFields
- Hierarchy: ComponentItem, PieceItem
- Shared: CustomFieldDisplay, CustomFieldInputGrid
- Category editor: componentStructure.ts

Deleted:
- entityCustomFieldLogic.ts (335 lines)
- customFieldUtils.ts (440 lines)
- customFieldFormUtils.ts (404 lines)
- useEntityCustomFields.ts (181 lines)
- customFieldFormUtils.test.ts

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 11:20:08 +02:00
matthieu 6d3cbf9157 docs : fix task ordering — category editor before machine page
normalizeStructureForEditor is used by useMachineDetailCustomFields.
Must clean it (Task 6) before migrating the machine page (Task 7).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 11:20:08 +02:00
matthieu 464633a288 docs : update implementation plan with review fixes
Addresses 8 issues found by dual code review:
- Add readOnly + optionsText to CustomFieldInput type
- Replace computed with mutable ref + refresh() in composable
- Add metadata fallback for fields without customFieldId
- Add onValueCreated callback to keep parent reactive state in sync
- Merge Task 4+5 to avoid type mismatch in intermediate state
- Detail surgical refactoring of transformComponentCustomFields
- Define data contract for ComponentItem/PieceItem (pre-merged)
- Fix hasDisplayableValue to handle readOnly fields

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 11:20:08 +02:00
matthieu 52e6912a1a docs : add custom fields simplification implementation plan
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 11:20:08 +02:00
matthieu a9428f6bae docs : add custom fields simplification design spec
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 11:20:08 +02:00
matthieu 201485552a fix(ui) : remove legacy edit pages and history composables, unify create/edit forms
Consolidate create and edit pages into single create pages with edit mode support.
Remove obsolete catalog pages, history composables, and fix remaining code review issues.
Include migration to relink orphaned custom fields.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 11:19:50 +02:00
matthieu cfaf234419 fix(test) : disable rate limiter in test env — fixes 214 false auth failures
The login rate limiter (5 req/min) was triggering 429 on most tests
since each test creates its own authenticated client via POST /api/session/profile.
Set limit to 10000 in test env so the full suite can run unthrottled.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 18:38:29 +02:00
matthieu 244bfdc3e4 fix : code review — correct 15 issues across UX overhaul (phases 1-4)
Critical fixes:
- Make MigrateConstructeurLinks migration no-op (legacy tables already dropped)
- Add explicit ON CONFLICT (id) target in RestoreConstructeurLinks migration
- Replace N+1 queries with 4 bulk GROUP BY in ConstructeurStatsController
- Declare missing versionListRef template ref in machine detail page
- Add missing await on removeMachineDocument, cast activeTab as string

Important fixes:
- Add lang="ts" to ToastContainer and constructeurs page
- Type entityType as union in UsedInSection/useUsedIn
- Remove dead duration param from showError
- Update back-link props to new /catalogues/* URLs (3 pages)
- Replace raw error blocks with EmptyState in component/piece detail pages
- Type handleFillEntity params and machineInfoCardRef

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 18:26:05 +02:00
matthieu 8a841832b2 docs : add full session summary for UX overhaul (phases 1-4) 2026-04-05 17:48:43 +02:00
matthieu 6b8422fd03 fix(migration) : restore constructeur links from backup data — fallback for prod 2026-04-05 17:46:46 +02:00
matthieu 7c2ad165e4 fix(migration) : migrate constructeur links from legacy M2M tables to new link entities 2026-04-05 17:29:33 +02:00
matthieu eef4b01d74 fix(api) : add priority to constructeurs/stats route to avoid {id} conflict 2026-04-04 19:30:55 +02:00