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
54a199d4e0
refactor(string): extract transliterate to Shared\Helpers\StringHelper
2026-08-28 18:10:15 +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
34b76cb397
test(feature): align feature and openapi tests with replicated Oracle tables
...
- Update tests to use factory static helpers and avoid hardcoded table/connection names
- Align test data columns with real replicated Oracle schema
- Remove obsolete duplicate IncoSheetsShowTest
2026-08-26 17:29:18 +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
361cf230e3
refactor: replicate and reproduce arcadia tables
2026-08-26 15:22:00 +02:00
06deb17236
chore: pint pass
2026-08-26 10:14:36 +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
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
e7f49ccf84
feat(tests): add DummyEntityIdA and DummyEntityIdB classes
...
These classes extend EntityId for testing purposes.
2026-08-21 17:10:21 +02:00
4421d34a43
feat(health): implement strictly-typed health check subsystem with DB, cache, and SMTP checks
2026-08-21 16:47:14 +02:00
891b21ba61
test(security): add unit tests for audit entities, presenter, and ClientConsoleResolver
2026-08-21 16:16:26 +02:00
5c49b2cc4f
feat(infra): attach HasUuidV7CreatedAt trait to Brand, ApiClient, and ClientAuditLog models
2026-08-21 16:12:01 +02:00
6d63e68908
feat(infra): add HasUuidV7CreatedAt trait to derive created_at from UUIDv7
2026-08-21 16:11:56 +02:00
37bd6cdbdd
feat(shared): implement PSR-20 Clock contract, Utc facade, and RFC3339 normalization
2026-08-21 15:45:32 +02:00
1df3a27c98
feat(config): introduce typed configuration objects, dedicated value objects and enforce global class referencing
2026-08-21 15:01:36 +02:00
0063727790
refactor(tests): fix IncoSheets directory casing
2026-08-21 14:31:14 +02:00
a82a1558bd
feat(security): add arcadia:security:audit-logs CLI command with CSV export and typed audit details
2026-08-21 14:30:20 +02:00
61073f4fcd
feat(security): add database audit logging and asynchronous markdown email alerts for api client actions
2026-08-21 12:07:13 +02:00
709568f1ed
feat(brand): handle on-demand brand renaming with BrandRenamed event and historical preservation
2026-08-21 11:36:37 +02:00
cc368c7102
feat(brand): add dedicated BrandCache service, event invalidation, and persist brand name locally
2026-08-21 11:27:32 +02:00
dc83df4105
feat(security): add audit log listeners and tests for client secret and status events
2026-08-21 11:09:25 +02:00
20ae9a2307
feat(event): implement TransactionalDomainEventDispatcher with post-commit release
2026-08-21 10:28:36 +02:00
95f10be9d4
style(tests): fix namespace casing in IncoSheetTestBuilder and IncoSheetMother
2026-08-21 10:23:54 +02:00
5e4e2f5faf
fix(security): lock HMAC dev bypass strictly to false in production
2026-08-21 10:14:55 +02:00
62289d2222
refactor(domain): introduce Domain Builders for IncoComposition and IncoSheet
2026-08-21 10:13:43 +02:00
abe60df95f
feat(event): implement BrandCreated event and listeners
...
- Added BrandCreated event to encapsulate brand creation details.
- Created LogBrandCreated listener to log brand creation events.
- Updated BrandResolver to dispatch BrandCreated event upon new brand creation.
- Introduced EventServiceProvider to register event listeners.
- Added unit tests for BrandCreated event and LogBrandCreated listener.
2026-08-21 09:45:06 +02:00
9c2c109d51
feat(usecase): add Transactional interface and update use cases
...
- Implemented Transactional interface for use cases requiring database transactions.
- Updated CreateClient, RegenerateClientSecret, and SetClientStatus to implement Transactional.
- Modified LaravelExecutor to handle transactional use cases appropriately.
- Enhanced tests for LaravelExecutor to cover transactional behavior.
2026-08-21 09:38:29 +02:00
aca627ff78
test(presentation): add missing unit tests for API and Console presenters
2026-08-20 18:22:20 +02:00