Matthieu
eccbc1bd56
chore(frontend) : update submodule — fix quantity save on composant edit
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 15:02:55 +01:00
Matthieu
2a0809a065
chore(frontend) : update submodule — quantity on composant edit page
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 14:41:12 +01:00
Matthieu
f2061abce8
chore(frontend) : update submodule — piece quantity display
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 14:33:04 +01:00
Matthieu
42c7072bcd
chore(frontend) : update submodule — piece quantity feature
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 12:14:09 +01:00
Matthieu
1f90f809ac
test(piece) : add quantity tests for MachinePieceLink
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 12:06:23 +01:00
Matthieu
a940f53f8a
feat(piece) : add quantity to structure normalization, PATCH and clone
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 12:04:03 +01:00
Matthieu
c74bdedf9b
feat(piece) : add quantity field to MachinePieceLink entity + migration
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 12:01:42 +01:00
Matthieu
233ee3faf3
docs : add piece quantity implementation plan
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 11:56:24 +01:00
Matthieu
b8edf1ea95
docs : update piece quantity spec after review
...
Address review findings: drop Groups attribute, add clone logic,
specify PATCH payload format, list frontend functions to update,
add validation and test cases.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 11:48:01 +01:00
Matthieu
7a7af58074
docs : add piece quantity design spec
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-12 11:44:34 +01:00
Matthieu
03e6c2432b
fix(machine) : add addConstructeur/removeConstructeur methods + fix fournisseur display
...
API Platform silently ignored the constructeurs field on PATCH because
Machine was missing the add/remove methods (unlike Composant, Piece, Product).
Also fixes the read-only fournisseur display overflow in MachineInfoCard.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 18:00:09 +01:00
Matthieu
31408ded7f
chore : bump version to 1.9.0
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
v1.9.0
2026-03-09 15:52:21 +01:00
Matthieu
4054fb24e6
feat(site) : add color field to sites + frontend submodule update
...
- Add color VARCHAR(7) column to sites entity
- Migration with IF NOT EXISTS for idempotence
- Update reference config
- Frontend: site color picker, dark mode, card styling improvements
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 15:51:55 +01:00
Matthieu
32ba4928df
chore(frontend) : update submodule — site edit + card buttons alignment
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 15:11:55 +01:00
edf7d0fa9e
chore(frontend) : update submodule — changelog v1.9.0
2026-03-09 13:04:54 +01:00
233927df19
chore : sync frontend submodule and update reference config
...
Update frontend submodule pointer to latest UI refactor.
Update config/reference.php with Symfony auto-generated changes.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-09 00:14:49 +01:00
dcb5f15769
docs : update CLAUDE.md with custom controllers, fields architecture and factories
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 18:43:19 +01:00
d3cd3fc3ce
feat(machine) : add custom field management on machine detail page
...
- Fix: return customFieldValues in structure endpoint (was hardcoded null)
- Frontend: add editor to create/edit/delete custom field definitions
- Tests: add integration tests for structure values + definition CRUD
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 18:36:14 +01:00
33fc80cbc2
fix(security) : disable session migration on API firewall
...
Symfony's default session_fixation_strategy (migrate) regenerated the
session ID on every authenticated request, breaking concurrent API calls
from the SPA — only the first request succeeded, all others got 401.
The login controller already calls $session->migrate(true) explicitly,
so disabling automatic migration is safe.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 14:30:38 +01:00
33e3f25850
docs : update project documentation and frontend submodule pointer
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 13:47:46 +01:00
efc6ec5691
test(api) : add comprehensive API test suite (161 tests)
...
- Add AbstractApiTestCase with auth helpers and entity factories
- Add tests for all entities: Machine, Piece, Composant, Product, Site,
ModelType, Constructeur, CustomField, CustomFieldValue, Document,
MachineComponentLink, MachinePieceLink, MachineProductLink, Profile
- Add controller tests: CommentController, EntityHistory
- Add HealthCheck, Filter, Pagination, Validation, Session tests
- Test auth (401), authorization (403), CRUD, and edge cases
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 13:42:56 +01:00
b342d0e50a
fix(security) : harden auth, session, document access and health endpoint
...
- Remove orphaned PUBLIC_ACCESS rule for deleted /api/test route
- Remove JWT login firewall (app is session-based only)
- Set APP_SECRET placeholder (real value must be in .env.local)
- Remove JWT env vars from .env
- Add session regeneration on login (prevent session fixation)
- Remove Document.path from API serialization groups (prevent path leak)
- Restrict health check details to ROLE_ADMIN (anonymes get status only)
- Add path traversal guard in DocumentStorageService
- Convert CreateProfileCommand password to interactive hidden prompt
- Restrict Profile Get endpoint to ROLE_ADMIN
- Change api firewall to stateless: false (matches session-based auth)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 13:42:09 +01:00
0709d01240
chore(config) : add DAMA test bundle, update API Platform config, improve makefile
...
- Register DAMADoctrineTestBundle for test env (transaction rollback)
- Update API Platform title/description, add pagination defaults
- Configure services for new controllers and commands
- Update makefile targets
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 13:39:44 +01:00
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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