74f77a3ba8
refactor(backend) : extract CuidEntityTrait, abstract audit subscriber, merge history controllers
...
- Extract shared ID generation + timestamps into CuidEntityTrait used by all entities
- Create AbstractAuditSubscriber to deduplicate audit logic across 7 subscribers
- Merge per-entity history controllers into single EntityHistoryController
- Delete redundant ComposantHistory/MachineHistory/PieceHistory/ProductHistoryController
- Add OpenApiDecorator for API documentation customization
- Disable failOnDeprecation in PHPUnit (vendor API Platform deprecation)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 13:39:03 +01:00
165e0a6341
fix(ui) : prevent dropdown overflow clipping in DataTable
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 13:34:52 +01:00
de7be1b9d0
refactor(frontend) : extract shared components and reduce file sizes
...
- Extract CustomFieldInputGrid.vue from 6 duplicated template blocks (~70 lines each)
- Extract EntityHistorySection.vue from 3 identical history sections in edit pages
- Extract useDragReorder composable from 4 identical drag-and-drop implementations in StructureNodeEditor (~330 lines → ~30)
- Extract catalogDisplayUtils.ts (resolvePrimaryDocument, resolveSupplierNames, buildSuppliersDisplay)
- Remove redundant computed wrappers (historyEntries, loadingTypes, selectedFiles)
- Remove unused imports (fieldKey, historyActionLabel, formatHistoryDate, *HistoryEntry types)
- Move Intl.DateTimeFormat to module-level in date.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 02:28:26 +01:00
bab13e5c57
chore : clean project config — untrack .idea/, gitignore Zone.Identifier and frontend/, blank JWT secret
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 02:01:54 +01:00
7b3eb1c5fc
refactor(catalog) : extract shared delete impact logic and cleanup dead code
...
Extract duplicated resolveDeleteImpact/buildDeleteMessage into shared utility,
remove redundant computed wrappers, fix indentation, and remove dead code.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 01:35:21 +01:00
Matthieu
378026ebce
chore(frontend) : update submodule — add buttons repositioned
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 11:32:56 +01:00
Matthieu
592beb0fa7
fix(ui) : move add buttons below last element in structure editors
...
Place "Ajouter" buttons after the items list instead of in the section
header, so they always appear below the last added element.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 11:28:07 +01:00
Matthieu
ea2b813728
chore(frontend) : update submodule — product delete confirmation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 11:07:06 +01:00
Matthieu
e732585e63
fix(catalog) : add delete impact confirmation to product catalog
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 11:06:06 +01:00
Matthieu
20653b9046
docs(changelog) : add delete confirmation dialog entry
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 10:59:48 +01:00
Matthieu
f1cc21c31b
docs(changelog) : add delete confirmation dialog entry
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 10:59:43 +01:00
Matthieu
c6deef6028
chore(frontend) : update submodule — delete confirmation dialog
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 10:59:10 +01:00
Matthieu
6c2f84dd3a
fix(catalog) : replace blocking delete guard with confirmation dialog
...
Show cascade-delete impact (documents, machine links, custom fields)
in a confirmation modal instead of blocking deletion entirely.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-06 10:58:41 +01:00
Matthieu
e922b14419
feat(api) : add /api/health endpoint for monitoring
...
- Returns status, version, timestamp, PHP version, DB latency and memory usage
- Accessible without authentication (PUBLIC_ACCESS)
- Returns 200 when healthy, 503 when degraded (DB down)
2026-03-06 09:51:09 +01:00
Matthieu
d16b042739
chore(frontend) : update submodule — changelog v1.8.1
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 17:39:07 +01:00
Matthieu
032b3b33c9
docs(changelog) : add v1.8.1 release notes
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 17:39:01 +01:00
Matthieu
2b3c1fe08e
docs(changelog) : complete v1.8.1 changelog with all frontend changes
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 17:36:37 +01:00
Matthieu
51248b7854
chore(release) : v1.8.1
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v1.8.1
2026-03-05 17:27:29 +01:00
Matthieu
0e11f4ad2d
refactor(api) : remove TypeMachine skeleton system, fix ModelType serialization
...
- Remove TypeMachine, TypeMachineComponentRequirement, TypeMachinePieceRequirement,
TypeMachineProductRequirement entities and related repositories/state processor
- Replace MachineSkeletonController with MachineStructureController
- Link CustomField directly to Machine instead of TypeMachine
- Add migration to drop TypeMachine tables and migrate custom fields to machines
- Fix ModelType serialization: Annotation\Groups → Attribute\Groups (Symfony 8 compat)
and add product:read, composant:read, piece:read groups for embedded category display
- Fix Profile: same Annotation → Attribute import
- Fix SearchFilter: partial → ipartial on Comment and Document
- Update frontend submodule (remove skeleton pages/components, simplify machine creation)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 17:26:16 +01:00
Matthieu
32d03b480d
refactor(machines) : remove TypeMachine skeleton system, simplify machine creation
...
- Remove TypeEdit*, TypeInfoDisplay, MachineSkeletonSummary, MachineCreatePreview components
- Remove machine-skeleton pages and type pages
- Remove useMachineTypesApi, useMachineSkeletonEditor, useMachineCreateSelections composables
- Add AddEntityToMachineModal for direct entity linking
- Update machine detail/create pages for direct custom fields
- Fix SearchSelect, category display, and ipartial search filters
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-05 17:25:23 +01:00
Matthieu
f2539099bc
chore(frontend) : update submodule — DataTable global + filtres server-side
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 16:07:03 +01:00
Matthieu
e5dc60467e
feat(api) : ajout filtres SearchFilter ipartial sur noms de types et commentaires
...
- Piece : typePiece.name ipartial
- Composant : typeComposant.name ipartial
- Product : typeProduct.name ipartial + OrderFilter supplierPrice
- Comment : entityName partial + OrderFilter authorName, status
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 16:05:24 +01:00
Matthieu
6f1bac381d
refacto(tables) : composant DataTable global + migration de toutes les tables
...
- Nouveau composant DataTable réutilisable avec tri par en-têtes, pagination, filtres colonnes
- Nouveau composable useDataTable (sort/page/search/perPage/columnFilters + persistance URL)
- Migration des 9 tables : constructeurs, comments, admin, pieces-catalog, component-catalog, product-catalog, documents, activity-log, ManagementView (catégories)
- Filtres "Type de" server-side (ipartial) pour pièces, composants, produits
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 16:05:00 +01:00
Matthieu
fbc0372bd6
docs(readme) : comprehensive project documentation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:49:35 +01:00
Matthieu
1483b0075b
chore(frontend) : update submodule — README
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:45:53 +01:00
Matthieu
89dc2e93b8
docs(readme) : comprehensive project documentation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:45:32 +01:00
Matthieu
74e88923dc
chore(frontend) : update submodule — README
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:38:19 +01:00
Matthieu
8f5f25b3e7
docs(readme) : replace default Nuxt template with project documentation
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:37:59 +01:00
Matthieu
ef61d1a0d3
chore : remove obsolete docs and update submodule
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:10:40 +01:00
Matthieu
c06c852493
chore : remove obsolete migration and refactoring docs
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:08:32 +01:00
Matthieu
3f0fb0d5c2
chore : remove stale TODO.md and temp files
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:06:08 +01:00
Matthieu
dd1497beac
chore : bump v1.8.0, update changelog, gitignore and submodule
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:01:00 +01:00
Matthieu
41f5319b67
chore(changelog) : add v1.7.0 and v1.8.0 entries
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 10:00:18 +01:00
Matthieu
c7fd8328d6
fix(errors) : humanize backend error messages for end users
...
Add centralized error translation layer (humanizeError) that converts
raw Symfony/Doctrine/API Platform messages into user-friendly French.
Fix useApi to extract errors from all backend response formats
(violations, error, message, hydra:description, detail).
Add toast deduplication to prevent double display. Replace error toast
icon (X → CircleX) to distinguish from the dismiss button.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-04 09:48:51 +01:00
Matthieu
7cd8772617
chore(frontend) : update submodule — navbar reorder and icons
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 15:31:36 +01:00
Matthieu
55e2a4fafe
fix(navbar) : reorder nav groups and add lucide icons
...
- Reorder: Composants, Pieces, Produits (was Pieces, Produits, Composants)
- Add icons to all nav links and dropdown groups
- Dashboard, Factory, ClipboardList, Cpu, Puzzle, Package, Link
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 15:31:26 +01:00
Matthieu
d89c97f0a0
feat(documents) : filesystem storage, server-side pagination and PDF compression
...
- Add DocumentStorageService for file-based storage (replaces Base64 in DB)
- Add DocumentServeController with /file and /download endpoints
- Add DocumentUploadProcessor using FormData + filesystem storage
- Add DocumentNormalizer exposing fileUrl/downloadUrl on all responses
- Add DocumentFileCleanupListener for automatic file deletion
- Add MigrateDocumentsToFilesystemCommand (Base64 → files, memory-safe)
- Add ApiFilter (SearchFilter, ExistsFilter, OrderFilter) on Document entity
- Add PdfCompressorService + refactor CompressPdfCommand for batch processing
- Fix TypeMachine PUT: deserialize=false + validate=false to prevent
UniqueEntity false positive and writableLink collection interference
- Update CHANGELOG for v1.8.0
- Update frontend submodule
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v1.8.0
2026-03-03 15:18:55 +01:00
Matthieu
e88ed5b8f2
feat(documents): migrate storage to filesystem, add server-side pagination
...
- Replace Base64 data URIs with file-based storage served via dedicated endpoints
- Add DocumentPreviewModal navigation, DocumentThumbnail fileUrl support
- Refactor documents page with server-side pagination, search, sort and filters
- Update all components to use fileUrl/downloadUrl instead of raw path
- Add pagination composable support (total, page, itemsPerPage, attachmentFilter)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 15:17:59 +01:00
Matthieu
7a5dd0b555
feat(skeleton) : add custom PUT processor and edit guard for linked machines
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 10:13:45 +01:00
Matthieu
546cc37a09
feat(catalog): add description column with hover popover + skeleton edit guard
...
- Add description column to pieces and component catalog tables
- Show full text in a popover on hover for truncated descriptions
- Block skeleton editing when machines are linked (warning alert)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-03 10:13:06 +01:00
Matthieu
44d69db560
chore(frontend) : update submodule — description field on catalog forms
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 17:35:57 +01:00
Matthieu
efd0fbe407
feat(catalog) : add description textarea to piece and component forms
...
Add description field (textarea) between name and reference/fournisseur
on create and edit pages for both pieces and components.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 17:35:52 +01:00
Matthieu
453065c9f0
feat(entities) : add description field to Piece and Composant
...
Add nullable TEXT description column to both pieces and composants
tables with corresponding Doctrine entity mappings, getters/setters
and serialization groups.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 17:35:37 +01:00
Matthieu
eb85323116
chore(frontend) : update submodule — fix site edit modal
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 16:33:34 +01:00
Matthieu
607f84fc3d
fix(sites): remove toRefs shadowing causing [object Object] in site name field
2026-03-02 16:33:30 +01:00
Matthieu
2dfa501a65
fix(sites) : add PATCH operation and fix migration constraint drop
...
Add Patch operation to Site entity (was only Put, causing 405 errors).
Fix migration to use ALTER TABLE DROP CONSTRAINT instead of DROP INDEX
for the piece name unique constraint.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 16:33:22 +01:00
Matthieu
c22f9dbf2b
chore(release) : bump version to 1.7.0
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v1.7.0
2026-03-02 14:36:58 +01:00
Matthieu
27a1b09d62
chore(frontend) : update submodule — comments system and constructeur fixes
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 14:06:31 +01:00
Matthieu
7bbb693924
feat(comments) : add comment entity, controller and migration
...
Create Comment entity with API Platform annotations (GET, PATCH, DELETE).
Add CommentController with POST (create), PATCH (resolve) and GET
(unresolved count) endpoints. Add migration for comments table and
piece reference unique index.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 14:06:25 +01:00
Matthieu
9661fd5d91
fix(entities) : add unique constraints for constructeur name and piece reference
...
Add UniqueEntity validation on Constructeur.name and Piece.reference.
Move unique DB constraint from piece name to piece reference column.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-02 14:06:19 +01:00