diff --git a/.github/workflows/create-release.yaml b/.github/workflows/create-release.yaml
index 71193153..adda5a0d 100644
--- a/.github/workflows/create-release.yaml
+++ b/.github/workflows/create-release.yaml
@@ -69,6 +69,9 @@ jobs:
distribution: 'temurin'
java-version: '21'
+ - name: install model filiere
+ run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.1.0.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.1.0 -Dpackaging=jar -DgeneratePom=true
+
- name: Clone BPM
uses: actions/checkout@v6
with:
diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml
index 92fd0f93..0b3a6722 100644
--- a/.github/workflows/docker.yaml
+++ b/.github/workflows/docker.yaml
@@ -26,6 +26,9 @@ jobs:
distribution: "temurin"
java-version: "21"
+ - name: install model filiere
+ run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.1.0.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.1.0 -Dpackaging=jar -DgeneratePom=true
+
- name: Clone BPM
uses: actions/checkout@master
with:
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index aaa5a334..a9c97360 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -29,6 +29,9 @@ jobs:
distribution: 'temurin'
cache: maven
+ - name: install model filiere
+ run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.1.0.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.1.0 -Dpackaging=jar -DgeneratePom=true
+
- name: Clone BPM
uses: actions/checkout@master
with:
diff --git a/.github/workflows/scheduled-version-update.yaml b/.github/workflows/scheduled-version-update.yaml
index 941fe43a..fee02594 100644
--- a/.github/workflows/scheduled-version-update.yaml
+++ b/.github/workflows/scheduled-version-update.yaml
@@ -85,6 +85,9 @@ jobs:
fi
echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT
+ - name: install model filiere
+ run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.1.0.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.1.0 -Dpackaging=jar -DgeneratePom=true
+
- name: Clone BPM
uses: actions/checkout@master
with:
diff --git a/.runtests/Unit tests GENESIS.run.xml b/.runtests/Unit tests GENESIS.run.xml
new file mode 100644
index 00000000..9836f071
--- /dev/null
+++ b/.runtests/Unit tests GENESIS.run.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 25a29a73..cb7f4a32 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,8 @@
# Changelog
+## 2.0.0 [TODO]
+### Changed
+- Use filière model
+
## 1.13.0 [2025-12-04]
### Changed
- New raw data process endpoint
diff --git a/libs/modelefiliere-2.1.0.jar b/libs/modelefiliere-2.1.0.jar
new file mode 100644
index 00000000..cadda87e
Binary files /dev/null and b/libs/modelefiliere-2.1.0.jar differ
diff --git a/pom.xml b/pom.xml
index a7ac3cbd..5af4d45d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,7 +36,7 @@
1.22.0
1.2.3
2.19.0
- 1.0.21
+ 1.0.23
@@ -101,7 +101,7 @@
fr.insee
modelefiliere
- 2.0.0
+ 2.1.0
com.networknt
diff --git a/src/main/java/fr/insee/genesis/controller/dto/rawdata/CombinedRawDataDto.java b/src/main/java/fr/insee/genesis/controller/dto/rawdata/CombinedRawDataDto.java
new file mode 100644
index 00000000..d9a334ac
--- /dev/null
+++ b/src/main/java/fr/insee/genesis/controller/dto/rawdata/CombinedRawDataDto.java
@@ -0,0 +1,13 @@
+package fr.insee.genesis.controller.dto.rawdata;
+
+import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel;
+import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel;
+
+import java.util.List;
+
+public record CombinedRawDataDto(
+ List rawResponseModels,
+ List lunaticRawDataModels
+) {
+}
+
diff --git a/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java b/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java
new file mode 100644
index 00000000..a35397ab
--- /dev/null
+++ b/src/main/java/fr/insee/genesis/controller/rest/CombinedRawDataController.java
@@ -0,0 +1,40 @@
+package fr.insee.genesis.controller.rest;
+
+import fr.insee.genesis.controller.dto.rawdata.CombinedRawDataDto;
+import fr.insee.genesis.domain.service.rawdata.CombinedRawDataService;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+@Slf4j
+@Controller
+@RequestMapping(path = "/combined-raw-data" )
+@RequiredArgsConstructor
+public class CombinedRawDataController {
+
+ private static final String INTERROGATION_ID = "interrogationId";
+ private final CombinedRawDataService combinedRawDataService;
+
+
+ @Operation(summary = "Retrieve combined raw responses and Lunatic raw data for a given interrogationId")
+ @GetMapping
+ @PreAuthorize("hasAnyRole('ADMIN', 'USER_PLATINE')")
+ public ResponseEntity getCombinetRawData(
+ @RequestParam(INTERROGATION_ID) String interrogationId
+ ){
+ CombinedRawDataDto data = combinedRawDataService.getCombinedRawDataByInterrogationId(interrogationId);
+
+ if (data.rawResponseModels().isEmpty()) {
+ return ResponseEntity.notFound().build();
+ }
+
+ return ResponseEntity.ok(data);
+ }
+
+ }
diff --git a/src/main/java/fr/insee/genesis/controller/rest/responses/RawResponseController.java b/src/main/java/fr/insee/genesis/controller/rest/responses/RawResponseController.java
index b51aeb0e..846cd5aa 100644
--- a/src/main/java/fr/insee/genesis/controller/rest/responses/RawResponseController.java
+++ b/src/main/java/fr/insee/genesis/controller/rest/responses/RawResponseController.java
@@ -12,6 +12,7 @@
import fr.insee.genesis.domain.model.surveyunit.Mode;
import fr.insee.genesis.domain.model.surveyunit.rawdata.DataProcessResult;
import fr.insee.genesis.domain.model.surveyunit.rawdata.LunaticJsonRawDataModel;
+import fr.insee.genesis.domain.model.surveyunit.rawdata.RawResponseModel;
import fr.insee.genesis.domain.ports.api.LunaticJsonRawDataApiPort;
import fr.insee.genesis.domain.ports.api.RawResponseApiPort;
import fr.insee.genesis.exceptions.GenesisError;
@@ -46,6 +47,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
@Slf4j
@Controller
@@ -201,6 +203,14 @@ public ResponseEntity> getUnprocessedJson
return ResponseEntity.ok(lunaticJsonRawDataApiPort.getUnprocessedDataIds());
}
+ @Operation(summary = "Get campaign id and interrogationId from all unprocessed raw json data")
+ @GetMapping(path = "/responses/raw/lunatic-json/get/unprocessed/questionnaireIds")
+ @PreAuthorize("hasRole('SCHEDULER')")
+ public ResponseEntity> getUnprocessedJsonRawDataQuestionnairesIds() {
+ log.info("Try to get unprocessed raw JSON datas questionniares...");
+ return ResponseEntity.ok(lunaticJsonRawDataApiPort.getUnprocessedDataQuestionnaireIds());
+ }
+
@Hidden
@GetMapping(path = "/responses/raw/lunatic-json/get/by-interrogation-mode-and-campaign")
@PreAuthorize("hasRole('ADMIN')")
@@ -237,15 +247,15 @@ public ResponseEntity processJsonRawData(
}
}
- @Operation(summary = "Process raw data of a questionnaire")
- @PostMapping(path = "/responses/raw/lunatic-json/{collectionInstrumentId}/process")
+ @Operation(summary = "Process raw data of a questionnaire (old raw model)")
+ @PostMapping(path = "/responses/raw/lunatic-json/{questionnaireId}/process")
@PreAuthorize("hasRole('SCHEDULER')")
public ResponseEntity processJsonRawData(
- @PathVariable String collectionInstrumentId
+ @PathVariable String questionnaireId
) {
- log.info("Try to process raw JSON datas for questionnaire {}",collectionInstrumentId);
+ log.info("Try to process raw JSON datas for questionnaire {}",questionnaireId);
try {
- DataProcessResult result = lunaticJsonRawDataApiPort.processRawData(collectionInstrumentId);
+ DataProcessResult result = lunaticJsonRawDataApiPort.processRawData(questionnaireId);
return result.formattedDataCount() == 0 ?
ResponseEntity.ok("%d document(s) processed".formatted(result.dataCount()))
: ResponseEntity.ok("%d document(s) processed, including %d FORMATTED after data verification"
@@ -270,7 +280,7 @@ public ResponseEntity