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