- **Backend**: Added `EUTaxationApiWrapperService` to validate HS codes during pre-calculation. Updated `PreCalculationCheckService` to run asynchronously and return `CompletableFuture`.
- **Frontend**: Refined toast messages in `CalculationSingleEdit.vue` to handle and display server errors more clearly.
- **Database**: Marked distance matrix entries as stale during node updates.
- **Other**: Added `customLookupExecutor` for asynchronous processing in `AsyncConfig`. Updated related services and repositories to utilize async improvements.
- Introduced `UserAuthorityCacheService` with support for caching user authorities using Caffeine.
- Added `CacheConfig` with Caffeine configuration for authority caching.
- Implemented `AuthorityRefreshFilter` to dynamically refresh user roles in the security context.
- Refactored filter package structure by moving existing filters to `config.filter`.
- Updated `SecurityConfig` to integrate the new `AuthorityRefreshFilter`.
- Modified `UserService` to invalidate user authority cache upon user updates.
- Introduced new properties to differentiate identification by `email` or `workdayId`.
- Updated `SecurityConfig` to handle claims dynamically based on `application.properties` configuration.
- **Controller**: Introduced `updateMaterial` method in `MaterialController` for batch material updates.
- **Service**: Implemented update logic in `MaterialService` to handle both updates and deprecations based on the new `MaterialUpdateDTO`.
- **Transformer**: Updated `MaterialUpdateDTOTransformer` to map deprecation status and remove unused fields.
- **Repository**: Added `updateByPartNumber` and `deleteByIds` methods in `MaterialRepository` for efficient updates and deprecations.
- **Frontend**: Properly adjusted `tariff_rate` validation and formatting in `BulkEditRow.vue`. Improved logic in `CalculationMassEdit.vue` by resetting `doLookup` state post mapping.
- **Store**: Fixed `tariffRates` mapping to ensure correct data application during premise updates.
- **Backend**: Introduced `getTariffRateImmediate` method for immediate tariff rate retrieval, replacing `CustomApiService` in relevant services. Updated constructor dependencies across services.
- **Frontend**: Added tariff measure sorting by code for improved data presentation in customs store.
- **Backend**: Introduced `EUTaxationApiService` for TARIC data retrieval and integrated tariff rate lookup functionality. Added supporting DTOs and updated services to handle custom measures and updated logic for material and supplier changes.
- **Frontend**: Enhanced mass and single edit calculation components to include tariff rate lookup functionality and warnings. Introduced `useCustomsStore` for state management of customs data.
- **Database**: Added `nomenclature` table for storing HS code-related information.
- **Other**: Configured SOAP client for TARIC API and added logging for debugging.
- **Backend**: Adjusted `getDistance` implementation to retrieve distances via `DistanceApiService`, with fallback to `fast` algorithm. Updated `DistanceService` to utilize API responses for more accurate calculations. Enhanced `ExcelReportingService` handling for main run containers and mixed premises logic.
- **Frontend**: Improved `Report.vue` structure for better readability and modularity. Added logic to conditionally display container details based on the main run's existence.
- Allowed public access to `/actuator/health`.
- Enforced authentication for other `/actuator/**` endpoints in production.
- Allowed all `/actuator/**` endpoints in development.
- **Backend**: Added separate CORS settings for `/oauth2/token` endpoint with enhanced origin handling based on new `lcc.allowed_oauth_token_cors` property.
- **Frontend**: Updated `Config.vue` to conditionally display `nodesTab` and `bulkOperationsTab` based on user roles.
- **Backend**:
- Check ownership before execution in DestinationService and PremisesService
- Added Valid period check in pre flight check
- Fixed allowed headers in cors config
- added user groups to migration
- Modified V4 migration to calculate `AIR_SHARE` as `0.03` for countries with `SAFETY_STOCK` value of 55, otherwise `0`.
- Refactored SQL to use `CASE` expression and JOIN for safety stock lookup within property set constraints.
- Improved OAuth2 Tester UI/UX: added support for multiple HTTP methods, query parameters, request body validation, collapsible result sections, and dynamic input handling.
- Enhanced `UserController` with validation annotations for `UserDTO` in API requests.
- Updated `UserDTO` to include stricter validation constraints (`@NotNull`, `@NotBlank`, `@Email`).
- Adjusted CORS configuration to allow all origins for OAuth endpoints.
- Introduced `OAuth2 API Tester` (HTML+JS) in `/tools`.
- Updated security configuration:
- Added comprehensive CORS configurations for OAuth endpoints.
- Enhanced CSRF handling to exclude `/oauth2/token`.
- Adjusted role handling to ensure case-insensitivity.
- Fixed `RIGHT-MANAGEMENT` role in `UserController`.
- Replaced logo asset in frontend.
# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
- Added Vue components (`AppListItem`, `AddApp`, `Apps`) for app management.
- Implemented Vuex stores for apps and groups.
- Enhanced backend:
- CRUD operations for apps and group mappings.
- Introduced a new service for app-related logic.
- Updated database schema and DTO structure.
- Adjusted security and CORS configurations.
- Updated docker-compose to align service dependencies.
- Changed `server.forward-headers-strategy` to `native` in `application.properties`.
- Added exclusion for `/login/oauth2/code/**` in CSRF configuration.
- Refactored `validateApp` in `AppsService` to return `Optional<App>` instead of `null`.
- Updated `JwtTokenService` to handle `expiration` parameter and use `App` object for token creation.
- Improved `TokenController` to work with the updated service layer.
- Fixed typo in `Report.vue` ("Airfreight" to "Air freight").
- Updated application properties to use `SPRING_PROFILES_ACTIVE`.
- Added `.dockerignore`, `dockerfile`, and `docker-compose.yml`, enabling Docker support.
- Removed unused Maven plugins and updated `vite.config.js` build directory.
- Introduced Gitea CI workflows for building and pushing Docker images.