Skip to content

feature/synt_aap#4237

Merged
rfc3092 merged 25 commits into
masterfrom
feature/synt_aap
May 29, 2026
Merged

feature/synt_aap#4237
rfc3092 merged 25 commits into
masterfrom
feature/synt_aap

Conversation

@rfc3092

@rfc3092 rfc3092 commented May 21, 2026

Copy link
Copy Markdown
Contributor

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:

  • Added the initial Spring Boot application in SyntAapApplication.java, including configuration properties for model bucket and model list.
  • Implemented a global exception handler (AapExceptionHandler.java) for standardized error responses in the API.

Build and Development Setup:

  • Added Gradle build configuration (build.gradle, settings.gradle), including dependencies for ONNX runtime, Spring Boot, security, and test containers. Integrated plugins and build scan configuration. [1] [2]
  • Included Gradle wrapper scripts and properties for consistent build tooling (gradlew, gradlew.bat, gradle-wrapper.properties, gradlewUpdate.sh). [1] [2] [3] [4]
  • Added a .gitignore to exclude build artifacts, IDE files, and model files from version control.

Deployment and CI/CD:

  • Added a Dockerfile for containerizing the service, exposing port 8080 and setting up the entrypoint.
  • Provided a config.yml for NAIS deployment, specifying resources, probes, access policies, and GCP bucket configuration.
  • Introduced a GitHub Actions workflow for CI/CD, reusing a common backend workflow and specifying trigger paths.

Documentation:

  • Added a README.md describing the purpose of the service and providing links to local development documentation.

@rfc3092 rfc3092 marked this pull request as ready for review May 27, 2026 15:48
@rfc3092 rfc3092 requested a review from a team as a code owner May 27, 2026 15:48
Copilot AI review requested due to automatic review settings May 27, 2026 15:48

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-aap application skeleton (controllers, ONNX generator, DTOs, security, OpenAPI config) plus tests/resources.
  • Added NAIS + Docker + GitHub Actions workflow for building/deploying synt-aap.
  • Refactored synt-dagpenger ONNX services to use LocalModels/BucketModels utilities.

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 (BucketUtilsBucketModels).
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.

Comment thread synt/synt-aap/config.yml Outdated
Comment thread synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/onnx/AapHistoryFilter.java Outdated
Comment thread synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/api/AapVedtakController.java Outdated
Comment thread synt/synt-aap/src/main/java/no/nav/dolly/synt/aap/api/AapVedtakController.java Outdated

@stigus stigus left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Supert 🤩

@rfc3092 rfc3092 merged commit 39e7f18 into master May 29, 2026
19 checks passed
@rfc3092 rfc3092 deleted the feature/synt_aap branch May 29, 2026 11:53
@rfc3092

rfc3092 commented May 29, 2026

Copy link
Copy Markdown
Contributor Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants