feature/synt_aap#4237
Merged
Merged
Conversation
…ation and data enrichment.
* Moved model handling code from OnnxLocalService into new LocalModels, to keep pattern.
Set execute bit on gradlew scripts that were missing it: - synt/synt-aap/gradlew - libs/texas/gradlew - libs/vault/gradlew This fixes Permission denied errors on GitHub Actions runners when running Gradle builds from these directories.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces a new Spring Boot/WebFlux service (synt-aap) that wraps a converted ONNX model for generating synthetic AAP vedtak, along with deployment/CI resources and tests. It also refactors synt-dagpenger model-loading to use dedicated local/bucket model utilities.
Changes:
- Added
synt-aapapplication skeleton (controllers, ONNX generator, DTOs, security, OpenAPI config) plus tests/resources. - Added NAIS + Docker + GitHub Actions workflow for building/deploying
synt-aap. - Refactored
synt-dagpengerONNX services to useLocalModels/BucketModelsutilities.
Reviewed changes
Copilot reviewed 54 out of 58 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| synt/synt-dagpenger/src/main/java/no/nav/dolly/synt/dagpenger/onnx/OnnxLocalService.java | Switch to initializing generator via LocalModels in @PostConstruct. |
| synt/synt-dagpenger/src/main/java/no/nav/dolly/synt/dagpenger/onnx/OnnxBucketService.java | Switch bucket model download to BucketModels. |
| synt/synt-dagpenger/src/main/java/no/nav/dolly/synt/dagpenger/models/LocalModels.java | New utility for extracting local ONNX models from classpath. |
| synt/synt-dagpenger/src/main/java/no/nav/dolly/synt/dagpenger/models/BucketModels.java | Renamed/moved bucket download utility (BucketUtils → BucketModels). |
| synt/synt-dagpenger/.gitignore | Adjust ignore rule to only ignore *.onnx model files. |
| synt/synt-aap/src/test/resources/requests/tildato-false-request.json | Test request fixture. |
| synt/synt-aap/src/test/resources/requests/filtered-es-chain-request.json | Test request fixture for history filtering. |
| synt/synt-aap/src/test/resources/requests/default-request.json | Default test request fixture. |
| synt/synt-aap/src/test/resources/old-api/openapi.json | Legacy OpenAPI snapshot used for parity testing. |
| synt/synt-aap/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker | Mockito configuration for tests. |
| synt/synt-aap/src/test/resources/logback-test.xml | Test logging configuration. |
| synt/synt-aap/src/test/java/no/nav/dolly/synt/aap/onnx/OpenApiParityTest.java | Verifies OpenAPI parity with legacy spec. |
| synt/synt-aap/src/test/java/no/nav/dolly/synt/aap/onnx/OnnxTestService.java | Test-profile OnnxService implementation. |
| synt/synt-aap/src/test/java/no/nav/dolly/synt/aap/onnx/AapVedtakGeneratorTest.java | Smoke tests for generator behavior (incl. tilDato handling). |
| synt/synt-aap/src/test/java/no/nav/dolly/synt/aap/onnx/AapHistoryFilterTest.java | Unit tests for request filtering/date postprocessing. |
| synt/synt-aap/src/test/java/no/nav/dolly/synt/aap/api/AapVedtakControllerTest.java | Controller tests using mocked OnnxService. |
| synt/synt-aap/src/main/resources/models/.gitkeep | Keeps models directory present in repo. |
| synt/synt-aap/src/main/resources/META-INF/additional-spring-configuration-metadata.json | Adds Spring config metadata for AAD resource server props. |
| synt/synt-aap/src/main/resources/logback-spring.xml | Prod/local logging profile wiring. |
| synt/synt-aap/src/main/resources/application.yml | Base app config (imports dolly-application.yml, springdoc, logging). |
| synt/synt-aap/src/main/resources/application-prod.yml | Prod profile config incl. bucket + models list + AAD settings. |
| synt/synt-aap/src/main/resources/application-local.yml | Local profile config placeholder (sm:// import). |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/SyntAapApplication.java | New Spring Boot application entrypoint + config properties. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/onnx/OnnxService.java | Service interface for generating various vedtak types. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/onnx/OnnxLocalService.java | Local-profile ONNX service using classpath-extracted models. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/onnx/OnnxBucketService.java | Prod-profile ONNX service downloading models from GCS bucket. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/onnx/AapVedtakMapper.java | Maps generator output maps into DTOs (legacy-like JSON shape). |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/onnx/AapVedtakGenerator.java | Core ONNX inference + enrichment logic. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/onnx/AapModelType.java | Enum of supported model types. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/onnx/AapHistoryFilter.java | Implements request filtering + postprocessing for history use. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/dto/YtelseDto.java | DTO for key/value “ytelse” items. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/dto/VilkaarDto.java | DTO for vilkår entries. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/dto/VedtakRequestDto.java | Request DTO for incoming vedtak requests. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/dto/Vedtak115Dto.java | DTO for 11.5 vedtak. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/dto/OpplysningDto.java | DTO for opplysning entries. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/dto/MedisinskOpplysningDto.java | DTO for medisinsk opplysning entries. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/dto/AatforAaunguforFriMkVedtakDto.java | DTO for aatfor/aaungufor/fri_mk vedtak. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/dto/AapVedtakDto.java | DTO for AAP vedtak payload. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/config/SecurityConfig.java | WebFlux security config (permit-all non-prod, opaque token in prod). |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/config/OpenApiConfig.java | OpenAPI annotations + path normalization + /swagger redirect filter. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/bucket/LocalModels.java | Extracts ONNX models from classpath to temp dir for local runs. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/bucket/BucketModels.java | Downloads ONNX models from GCS bucket to temp dir for prod runs. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/api/AapVedtakController.java | REST API endpoints mirroring legacy paths/operationIds. |
| synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/api/AapExceptionHandler.java | Global exception handler for standardized error responses. |
| synt/synt-aap/settings.gradle | Gradle settings (develocity + included builds). |
| synt/synt-aap/README.md | Service README with links to local development docs. |
| synt/synt-aap/gradlewUpdate.sh | Helper script for updating gradle wrapper. |
| synt/synt-aap/gradlew.bat | Windows Gradle wrapper script. |
| synt/synt-aap/gradlew | POSIX Gradle wrapper script. |
| synt/synt-aap/gradle/wrapper/gradle-wrapper.properties | Gradle wrapper version/config. |
| synt/synt-aap/Dockerfile | Container build for synt-aap. |
| synt/synt-aap/config.yml | NAIS deployment manifest for synt-aap. |
| synt/synt-aap/build.gradle | Gradle build (dependencies, sonar props). |
| synt/synt-aap/.gitignore | Ignore build/IDE artifacts and local model files. |
| libs/vault/gradlew | Added Gradle wrapper script for libs/vault. |
| libs/texas/gradlew | Added Gradle wrapper script for libs/texas. |
| .github/workflows/synt.synt-aap.yml | CI workflow for synt-aap module. |
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
tl;dr - synt-aap i Java med ONNX.
This pull request introduces a new Spring Boot-based service called
synt-aap, which acts as a wrapper around a converted ONNX model. The changes include the initial setup for the application, build configuration, deployment resources, and documentation. The most important changes are grouped below:Application Implementation:
SyntAapApplication.java, including configuration properties for model bucket and model list.AapExceptionHandler.java) for standardized error responses in the API.Build and Development Setup:
build.gradle,settings.gradle), including dependencies for ONNX runtime, Spring Boot, security, and test containers. Integrated plugins and build scan configuration. [1] [2]gradlew,gradlew.bat,gradle-wrapper.properties,gradlewUpdate.sh). [1] [2] [3] [4].gitignoreto exclude build artifacts, IDE files, and model files from version control.Deployment and CI/CD:
config.ymlfor NAIS deployment, specifying resources, probes, access policies, and GCP bucket configuration.Documentation:
README.mddescribing the purpose of the service and providing links to local development documentation.