Commit graph

159 commits

Author SHA1 Message Date
62c221f6b6
feat(health): add oracle probe and normalize health checks
Refactor health check DTOs around a common CheckResult contract and remove the\nlegacy HealthChecks aggregate object.\n\nAdd a dedicated /api/v1/health/oracle endpoint with response mapping, OpenAPI\nschema updates, and Bruno request coverage.\n\nAlign feature, unit, integration, architecture and OpenAPI tests with the new\nset-based checks representation and make Oracle health tests deterministic in CI.\n\nUpdate command documentation to the uwil:* command namespace.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-06 14:51:46 +02:00
71f6f64f7f
fix(brands): align FindBrand usecase output phpdoc type
Use the specific Arcadia find output interface in FindBrand generic annotations so static analysis resolves presenter/usecase template types correctly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-06 11:57:36 +02:00
dc6f8658e6
refactor(presenters): align show presenters on output interface assertions
Replicate EmployeeShowPresenter handling across brand, inco composition and inco sheet presenters by asserting the usecase Output interface and using explicit result matching for found/not-found variants.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-06 11:55:46 +02:00
5308320bcb
chore(commands): update command signatures to include 'uwil' prefix 2026-10-06 11:54:52 +02:00
18fb5f8ac2
refactor(find): use polymorphic outputs for not found cases
Replace not-found exceptions in Arcadia find/show flows with typed outputs (Found*/NotFoundOutput) and map not-found results in presenters/responses while preserving HTTP 404 problem details.

Adjust architecture and unit tests to cover concrete output classes, and remove obsolete Arcadia not-found exception classes and their tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-05 15:50:01 +02:00
0adbe7175b
feat(employees): remove siteId parameter in favor of siteIds in request, OpenAPI spec and Bruno 2026-09-18 11:51:15 +02:00
3c4eeb3014
fix(employees): normalize scalar siteIds query parameter to array in prepareForValidation 2026-09-18 11:40:39 +02:00
6497b109a2
fix(inco): normalize scalar brands query parameter to array in prepareForValidation 2026-09-18 11:40:22 +02:00
d55178407f
refactor(employees): use array helper for siteIds in EmployeesIndexRequest 2026-09-18 10:35:18 +02:00
04c39e2573
refactor(api): use League URI for RFC query string normalization and nested bracket support 2026-09-18 10:32:52 +02:00
10674f3295
feat(inco): restrict inco sheets list and search to short projection and remove short query parameter 2026-09-18 10:07:04 +02:00
00aff9bf63
feat(api): add NormalizeQueryStringArrays middleware to support RFC and bracket query array formats 2026-09-17 18:15:52 +02:00
86584c5b94
fix(inco): resolve brand filter via REFP.ARTICLE_REF COD_MARQUE and align replicate tables 2026-09-17 18:10:19 +02:00
d63723a113
feat(inco): add description field to IncoShort projection and OpenAPI schema 2026-09-16 10:18:00 +02:00
16573cb30c
refactor(pagination): use PageNumber and PageSize value objects in http helpers and console commands 2026-09-15 12:48:55 +02:00
0c361c5ff7
feat(pagination): add PageNumber and PageSize value objects and update Pagination 2026-09-15 12:48:52 +02:00
e83a286e9b
test(arch): overhaul and complete architecture test suite across all layers 2026-09-14 19:13:41 +02:00
106d4467c4
feat(brands): add pagination caching, fast local resolution and resilient database fallback 2026-09-14 17:30:51 +02:00
f1c3100ef5
refactor(inco): simplify base query by using subquery for family label
Improves readability and maintainability of the query logic.
2026-09-01 09:30:32 +02:00
bc6a603913
feat(brands): remove internal uuid from brand responses and query only by brandCode 2026-08-31 17:35:32 +02:00
7312289811
feat(employees): rename ArcadiaEmployeeId to SiRhMatricule and expose matricule in api responses 2026-08-31 17:29:18 +02:00
2606ac882e
feat(inco): mask internal allergen ids in api presentation responses 2026-08-31 17:23:02 +02:00
4434eb5757
feat(inco): rename identifiers to incoId/incoCompoId and resolve sellFamilly label 2026-08-31 17:16:38 +02:00
00f38b7d41
fix(employees): filter out invalid matricules and comments from Arcadia database 2026-08-31 16:32:11 +02:00
71f97b16e3
refactor(string): centralize string encoding and normalization in StringEncoder & StringHelper, normalize BrandName to titleCase 2026-08-31 15:36:16 +02:00
742da323aa
perf(brands): paginate ArcadiaBrandDirectory and BrandRepository with SQL limit/offset and cache warming 2026-08-31 12:37:16 +02:00
97a73a5e05
fix(brand): filter out comment tuples and enforce positive integer validation for ArcadiaId 2026-08-31 11:45:35 +02:00
4302b89d88
fix(arcadiaId): update pattern to allow larger numeric IDs
Updated the regex pattern for ArcadiaId to accept larger numeric values.
2026-08-31 11:27:32 +02:00
55df66a1c8
fix(oracle): support multi-schema queries and SID connection configuration 2026-08-31 11:17:16 +02:00
54a199d4e0
refactor(string): extract transliterate to Shared\Helpers\StringHelper 2026-08-28 18:10:15 +02:00
0805017a70
fix(parser): use ICU transliterator for platform-independent ASCII slugification 2026-08-28 18:04:23 +02:00
b4f3c0bdb9
feat(health): dynamic schema conformity inspection from Migrator definitions and Oracle DUAL ping 2026-08-28 17:33:13 +02:00
46ab5e4325
feat(health): add Arcadia database conformity check with diff hashing and synchronous alerting 2026-08-28 14:12:33 +02:00
197aedbc5e
refactor(health): remove toArray from HealthCheckResult DTO and encapsulate serialization in HealthCheckResponse 2026-08-27 15:19:36 +02:00
403ea2c6c2
refactor: add health check feature within cli and job. 2026-08-27 14:39:59 +02:00
1842223ddc
refactor(database): improve replicated factories, seeders, and config injection
- AbstractTableFactory delegates connection resolution without hardcoded config keys
- Enforce mandatory connection parameter on Migrator without Infra dependencies
- Inject ArcadiaStorageConfig, AppConfig, and HmacAuthConfig into services, seeders, and health checkers
- Enhance factories and seeders with helper methods (truncate, count, query, new)
- Clean up covers annotations on database seeders integration tests
2026-08-26 17:29:13 +02:00
cec8d1ea66
refactor(infra): replace Eloquent directory adapters with direct QueryBuilder adapters and mappers
- Replace Eloquent models for replicated Oracle tables with direct QueryBuilder directory adapters
- Bind ArcadiaEmployeeDirectory, ArcadiaIncoSheetDirectory, ArcadiaIncoShortSheetDirectory, ArcadiaIncoCompositionDirectory, and ArcadiaMarqueBrandDirectory
- Remove obsolete Eloquent directory classes and models
2026-08-26 17:29:08 +02:00
cf918ccd30
feat(infra): add mappers and parsers for replicated Arcadia Oracle tables
- Add IncoStringParser, IncoIngredientParser, IncoParser, and IncoCompositionParser
- Add ArcadiaBrandMapper, EmployeeMapper, IncoCompositionMapper, IncoShortMapper, and IncoMapper
- Add complete unit test suites for all parsers and mappers
2026-08-26 17:29:05 +02:00
f88694110d
refactor: cleanup fake arcadia tables used for development 2026-08-26 16:25:47 +02:00
a492e9823a
fix(queue): add explicit tries and timeout to SendClientSecurityAlertMail (F-2026-0007) 2026-08-26 10:11:59 +02:00
bc5303eb0a
fix(security): make nonce validation and consumption atomic via CacheRepository add (F-2026-0008) 2026-08-26 10:11:32 +02:00
18b83b6e67
perf(directory): memoize arcadia brand lookups to eliminate N+1 queries during INCO sheet hydration (F-2026-0003) 2026-08-26 10:11:26 +02:00
861a1a8146
fix(cache): resolve all cached brands before deleting collection key in BrandCache reset (F-2026-0002) 2026-08-26 10:11:23 +02:00
dd5bcdd351
fix(security): sanitize rate limiter client IP resolution to prevent header spoofing (F-2026-0001) 2026-08-26 10:11:21 +02:00
daa8d1e0fa
refactor(cache): implement graceful degradation for BrandCache 2026-08-25 08:26:58 +02:00
0766e9dc8f
refactor(repository): make entity deletion idempotent 2026-08-25 08:26:55 +02:00
3582a3928c
refactor(pagination): clamp out-of-bounds pagination values silently 2026-08-25 08:26:50 +02:00
e31767cfd0
refactor(brand): make ArcadiaId strictly string value extending EntityId 2026-08-24 21:45:04 +02:00
55576a6971
refactor(security): unify ClientDirectory reading methods into ClientRepository 2026-08-24 21:44:56 +02:00
cb97e6f591
refactor(ddd): introduce AggregateRoot and ReadModel interfaces extending Entity 2026-08-24 21:44:51 +02:00