Skip to content

Commit 86a04d3

Browse files
Merge branch 'main' into renovate/major-spring-boot
2 parents b182959 + 4289d19 commit 86a04d3

21 files changed

+250
-20
lines changed

.github/workflows/create-release.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
- name: Print source version
4242
run: echo ${{ steps.version-step.outputs.newTag }}
4343

44-
- uses: mukunku/tag-exists-action@v1.6.0
44+
- uses: mukunku/tag-exists-action@v1.7.0
4545
name: Check tag existence
4646
id: check-tag-exists
4747
with:

.github/workflows/scheduled-version-update.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ jobs:
173173
174174
- name: Create Pull Request
175175
id: create_pr
176-
uses: peter-evans/create-pull-request@v7
176+
uses: peter-evans/create-pull-request@v8
177177
with:
178178
path: genesis
179179
token: ${{ secrets.GITHUB_TOKEN }}

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
# Changelog
2+
## 1.13.0 [2025-12-04]
3+
### Changed
4+
- New raw data process endpoint
5+
26
## 1.12.2 [2025-11-06]
37
### Fixed
48
- Scientific notation for Doubles during raw data processing

pom.xml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>fr.insee.genesis</groupId>
66
<artifactId>genesis-api</artifactId>
7-
<version>1.12.4</version>
7+
<version>1.13.1</version>
88
<packaging>jar</packaging>
99
<name>genesis-api</name>
1010

@@ -18,7 +18,8 @@
1818
<java.version>21</java.version>
1919
<springdoc.version>2.8.14</springdoc.version>
2020
<mapstruct.version>1.6.3</mapstruct.version>
21-
<cucumber.version>7.32.0</cucumber.version>
21+
<cucumber.version>7.33.0</cucumber.version>
22+
<junit-jupiter.version>5.13.4</junit-jupiter.version>
2223

2324
<!-- Proprietes sonar -->
2425
<jacoco.version>0.8.14</jacoco.version>
@@ -35,7 +36,7 @@
3536
<pitest.version>1.22.0</pitest.version>
3637
<pitest.junit.version>1.2.3</pitest.junit.version>
3738
<jackson.version>2.19.0</jackson.version>
38-
<bpm.version>1.0.19</bpm.version>
39+
<bpm.version>1.0.20</bpm.version>
3940
</properties>
4041
<dependencies>
4142
<dependency>
@@ -183,7 +184,7 @@
183184
<plugin>
184185
<groupId>org.sonarsource.scanner.maven</groupId>
185186
<artifactId>sonar-maven-plugin</artifactId>
186-
<version>5.3.0.6276</version>
187+
<version>5.5.0.6356</version>
187188
</plugin>
188189
<plugin>
189190
<groupId>org.jacoco</groupId>

src/main/java/fr/insee/genesis/controller/rest/responses/RawResponseController.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ public ResponseEntity<LunaticJsonRawDataModel> getJsonRawData(
161161
@Operation(summary = "Process raw data of a campaign")
162162
@PostMapping(path = "/lunatic-json/process")
163163
@PreAuthorize("hasRole('SCHEDULER')")
164+
@Deprecated(since = "1.13.0")
164165
public ResponseEntity<String> processJsonRawData(
165166
@RequestParam("campaignName") String campaignName,
166167
@RequestParam("questionnaireId") String questionnaireId,
@@ -180,6 +181,24 @@ public ResponseEntity<String> processJsonRawData(
180181
}
181182
}
182183

184+
@Operation(summary = "Process raw data of a questionnaire")
185+
@PostMapping(path = "/{collectionInstrumentId}/process")
186+
@PreAuthorize("hasRole('SCHEDULER')")
187+
public ResponseEntity<String> processJsonRawData(
188+
@PathVariable String collectionInstrumentId
189+
) {
190+
log.info("Try to process raw JSON datas for questionnaire {}",collectionInstrumentId);
191+
try {
192+
DataProcessResult result = lunaticJsonRawDataApiPort.processRawData(collectionInstrumentId);
193+
return result.formattedDataCount() == 0 ?
194+
ResponseEntity.ok("%d document(s) processed".formatted(result.dataCount()))
195+
: ResponseEntity.ok("%d document(s) processed, including %d FORMATTED after data verification"
196+
.formatted(result.dataCount(), result.formattedDataCount()));
197+
} catch (GenesisException e) {
198+
return ResponseEntity.status(e.getStatus()).body(e.getMessage());
199+
}
200+
}
201+
183202
@Operation(summary = "Get processed data ids from last n hours (default 24h)")
184203
@GetMapping(path = "/lunatic-json/processed/ids")
185204
@PreAuthorize("hasRole('ADMIN')")

src/main/java/fr/insee/genesis/controller/rest/responses/ResponseController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ private void processCampaignWithMode(String campaignName, Mode mode, String root
466466
}
467467

468468
//Create context if not exist
469-
if(contextService.getContextByPartitionId(campaignName) == null){
469+
if(contextService.getContextByCollectionInstrumentId(campaignName) == null){
470470
contextService.saveContext(campaignName, false);
471471
}
472472

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
package fr.insee.genesis.domain.model.surveyunit.rawdata;
22

3-
public record DataProcessResult(int dataCount, int formattedDataCount) {
3+
import fr.insee.genesis.exceptions.GenesisError;
4+
5+
import java.util.List;
6+
7+
public record DataProcessResult(int dataCount, int formattedDataCount, List<GenesisError> errors) {
48
}

src/main/java/fr/insee/genesis/domain/ports/api/DataProcessingContextApiPort.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ void saveKraftwerkExecutionSchedule(String partitionId,
3131
long countSchedules();
3232

3333
DataProcessingContextModel getContext(String interrogationId) throws GenesisException;
34-
DataProcessingContextModel getContextByPartitionId(String partitionId) throws GenesisException;
34+
DataProcessingContextModel getContextByCollectionInstrumentId(String partitionId) throws GenesisException;
3535
List<String> getPartitionIds(boolean withReview);
3636

3737
/**

src/main/java/fr/insee/genesis/domain/ports/api/LunaticJsonRawDataApiPort.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@ public interface LunaticJsonRawDataApiPort {
2828
long countResponsesByQuestionnaireId(String campaignId);
2929
Page<LunaticJsonRawDataModel> findRawDataByCampaignIdAndDate(String campaignId, Instant startDt, Instant endDt, Pageable pageable);
3030

31+
@Deprecated(since = "1.13.0")
3132
DataProcessResult processRawData(String campaignName, List<String> interrogationIdList, List<GenesisError> errors) throws GenesisException;
33+
34+
DataProcessResult processRawData(String collectionInstrumentId) throws GenesisException;
35+
3236
Map<String, List<String>> findProcessedIdsgroupedByQuestionnaireSince(LocalDateTime since);
3337
}

src/main/java/fr/insee/genesis/domain/ports/spi/LunaticJsonRawDataPersistencePort.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ public interface LunaticJsonRawDataPersistencePort {
2222
long countResponsesByQuestionnaireId(String questionnaireId);
2323
List<GroupedInterrogation> findProcessedIdsGroupedByQuestionnaireSince(LocalDateTime since);
2424
List<GroupedInterrogation> findUnprocessedIds();
25+
Set<String> findUnprocessedInterrogationIdsByCollectionInstrumentId(String collectionInstrumentId);
2526
}

0 commit comments

Comments
 (0)