From acccb337c0e9ab05c897d2cbdb949f2fe6c3cc18 Mon Sep 17 00:00:00 2001 From: David BRAQUART Date: Fri, 6 Feb 2026 14:57:23 +0100 Subject: [PATCH] support debug mode for estim Signed-off-by: David BRAQUART --- .../study/server/controller/StudyController.java | 3 ++- .../gridsuite/study/server/service/ConsumerService.java | 5 +++++ .../study/server/service/StateEstimationService.java | 5 ++++- .../org/gridsuite/study/server/service/StudyService.java | 8 ++++---- src/main/resources/config/application.yaml | 5 ++++- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/gridsuite/study/server/controller/StudyController.java b/src/main/java/org/gridsuite/study/server/controller/StudyController.java index 3446c90659..82bfa42bb6 100644 --- a/src/main/java/org/gridsuite/study/server/controller/StudyController.java +++ b/src/main/java/org/gridsuite/study/server/controller/StudyController.java @@ -2326,9 +2326,10 @@ public ResponseEntity exportFilters( public ResponseEntity runStateEstimation(@Parameter(description = "studyUuid") @PathVariable("studyUuid") UUID studyUuid, @PathVariable("rootNetworkUuid") UUID rootNetworkUuid, @Parameter(description = "nodeUuid") @PathVariable("nodeUuid") UUID nodeUuid, + @RequestParam(name = "debug", required = false, defaultValue = "false") boolean debug, @RequestHeader(HEADER_USER_ID) String userId) { studyService.assertIsNodeNotReadOnly(nodeUuid); - studyService.runStateEstimation(studyUuid, nodeUuid, rootNetworkUuid, userId); + studyService.runStateEstimation(studyUuid, nodeUuid, rootNetworkUuid, userId, debug); return ResponseEntity.ok().build(); } diff --git a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java index f775df2eef..0bcc9605d1 100644 --- a/src/main/java/org/gridsuite/study/server/service/ConsumerService.java +++ b/src/main/java/org/gridsuite/study/server/service/ConsumerService.java @@ -851,6 +851,11 @@ public Consumer> consumeStateEstimationResult() { return message -> consumeCalculationResult(message, STATE_ESTIMATION); } + @Bean + public Consumer> consumeStateEstimationDebug() { + return message -> consumeCalculationDebug(message, STATE_ESTIMATION); + } + @Bean public Consumer> consumeStateEstimationStopped() { return message -> consumeCalculationStopped(message, STATE_ESTIMATION); diff --git a/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java b/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java index 7fa7804e59..9fe5f5ec86 100644 --- a/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java +++ b/src/main/java/org/gridsuite/study/server/service/StateEstimationService.java @@ -74,7 +74,7 @@ public String getStateEstimationResult(UUID resultUuid) { return restTemplate.getForObject(stateEstimationServerServerBaseUri + path, String.class); } - public UUID runStateEstimation(UUID networkUuid, String variantId, UUID parametersUuid, ReportInfos reportInfos, String receiver, String userId) { + public UUID runStateEstimation(UUID networkUuid, String variantId, UUID parametersUuid, ReportInfos reportInfos, String receiver, String userId, boolean debug) { var uriComponentsBuilder = UriComponentsBuilder .fromPath(DELIMITER + STATE_ESTIMATION_API_VERSION + "/networks/{networkUuid}/run-and-save") .queryParam("reportUuid", reportInfos.reportUuid().toString()) @@ -86,6 +86,9 @@ public UUID runStateEstimation(UUID networkUuid, String variantId, UUID paramete if (!StringUtils.isBlank(variantId)) { uriComponentsBuilder.queryParam(QUERY_PARAM_VARIANT_ID, variantId); } + if (debug) { + uriComponentsBuilder.queryParam(QUERY_PARAM_DEBUG, true); + } var path = uriComponentsBuilder.queryParam(QUERY_PARAM_RECEIVER, receiver).buildAndExpand(networkUuid).toUriString(); HttpHeaders headers = new HttpHeaders(); diff --git a/src/main/java/org/gridsuite/study/server/service/StudyService.java b/src/main/java/org/gridsuite/study/server/service/StudyService.java index f7021968a3..3d8511f804 100644 --- a/src/main/java/org/gridsuite/study/server/service/StudyService.java +++ b/src/main/java/org/gridsuite/study/server/service/StudyService.java @@ -3381,11 +3381,11 @@ public String exportFilters(UUID rootNetworkUuid, List filtersUuid, UUID n } @Transactional - public UUID runStateEstimation(@NonNull UUID studyUuid, @NonNull UUID nodeUuid, @NonNull UUID rootNetworkUuid, String userId) { + public UUID runStateEstimation(@NonNull UUID studyUuid, @NonNull UUID nodeUuid, @NonNull UUID rootNetworkUuid, String userId, boolean debug) { StudyEntity studyEntity = getStudy(studyUuid); networkModificationTreeService.blockNode(rootNetworkUuid, nodeUuid); - return handleStateEstimationRequest(studyEntity, nodeUuid, rootNetworkUuid, userId); + return handleStateEstimationRequest(studyEntity, nodeUuid, rootNetworkUuid, userId, debug); } @Transactional @@ -3396,7 +3396,7 @@ public UUID runPccMin(@NonNull UUID studyUuid, @NonNull UUID nodeUuid, @NonNull return handlePccMinRequest(studyEntity, nodeUuid, rootNetworkUuid, userId); } - private UUID handleStateEstimationRequest(StudyEntity studyEntity, UUID nodeUuid, UUID rootNetworkUuid, String userId) { + private UUID handleStateEstimationRequest(StudyEntity studyEntity, UUID nodeUuid, UUID rootNetworkUuid, String userId, boolean debug) { UUID networkUuid = rootNetworkService.getNetworkUuid(rootNetworkUuid); String variantId = networkModificationTreeService.getVariantId(nodeUuid, rootNetworkUuid); UUID reportUuid = networkModificationTreeService.getComputationReports(nodeUuid, rootNetworkUuid).getOrDefault(STATE_ESTIMATION.name(), UUID.randomUUID()); @@ -3413,7 +3413,7 @@ private UUID handleStateEstimationRequest(StudyEntity studyEntity, UUID nodeUuid stateEstimationService.deleteStateEstimationResults(List.of(prevResultUuid)); } - UUID result = stateEstimationService.runStateEstimation(networkUuid, variantId, studyEntity.getStateEstimationParametersUuid(), new ReportInfos(reportUuid, nodeUuid), receiver, userId); + UUID result = stateEstimationService.runStateEstimation(networkUuid, variantId, studyEntity.getStateEstimationParametersUuid(), new ReportInfos(reportUuid, nodeUuid), receiver, userId, debug); updateComputationResultUuid(nodeUuid, rootNetworkUuid, result, STATE_ESTIMATION); notificationService.emitStudyChanged(studyEntity.getId(), nodeUuid, rootNetworkUuid, NotificationService.UPDATE_TYPE_STATE_ESTIMATION_STATUS); return result; diff --git a/src/main/resources/config/application.yaml b/src/main/resources/config/application.yaml index fd28d3a7bc..3e8b4d50e1 100644 --- a/src/main/resources/config/application.yaml +++ b/src/main/resources/config/application.yaml @@ -14,7 +14,7 @@ spring: consumeShortCircuitAnalysisDebug;consumeShortCircuitAnalysisResult;consumeShortCircuitAnalysisStopped;consumeShortCircuitAnalysisFailed;consumeShortCircuitAnalysisCancelFailed;\ consumeVoltageInitDebug;consumeVoltageInitResult;consumeVoltageInitStopped;consumeVoltageInitFailed;consumeVoltageInitCancelFailed;\ consumeLoadFlowResult;consumeLoadFlowStopped;consumeLoadFlowFailed;consumeLoadFlowCancelFailed;\ - consumeStateEstimationResult;consumeStateEstimationStopped;consumeStateEstimationFailed;\ + consumeStateEstimationResult;consumeStateEstimationDebug;consumeStateEstimationStopped;consumeStateEstimationFailed;\ consumePccMinResult;consumePccMinStopped;consumePccMinFailed;\ consumeNetworkExportFinished" stream: @@ -131,6 +131,9 @@ spring: consumeStateEstimationResult-in-0: destination: ${powsybl-ws.rabbitmq.destination.prefix:}stateestimation.result group: studyStateEstimationResultGroup + consumeStateEstimationDebug-in-0: + destination: ${powsybl-ws.rabbitmq.destination.prefix:}stateestimation.debug + group: studyStateEstimationDebugGroup consumeStateEstimationStopped-in-0: destination: ${powsybl-ws.rabbitmq.destination.prefix:}stateestimation.stopped group: studyStateEstimationStoppedGroup