diff --git a/services/pcp-tgu-service/src/main/kotlin/space/nstart/pcp_tgu_service/controller/TestTguController.kt b/services/pcp-tgu-service/src/main/kotlin/space/nstart/pcp_tgu_service/controller/TestTguController.kt index 3d63e56..1999530 100644 --- a/services/pcp-tgu-service/src/main/kotlin/space/nstart/pcp_tgu_service/controller/TestTguController.kt +++ b/services/pcp-tgu-service/src/main/kotlin/space/nstart/pcp_tgu_service/controller/TestTguController.kt @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController import space.nstart.pcp_tgu_service.domain.PlanDecision +import space.nstart.pcp_tgu_service.dto.NsiPlatformDto import space.nstart.pcp_tgu_service.dto.PlanDecisionMessage import space.nstart.pcp_tgu_service.dto.PlanExecutionFeedbackMessage import space.nstart.pcp_tgu_service.dto.PlanResponse @@ -20,8 +21,6 @@ import space.nstart.pcp_tgu_service.service.PlanQueryService import space.nstart.pcp_tgu_service.service.PlatformService import space.nstart.pcp_tgu_service.service.TestPlanDecisionService import space.nstart.pcp_tgu_service.service.VisibilityRefreshJobService -import java.nio.file.Files -import java.nio.file.Path import java.time.LocalDateTime import java.util.UUID @@ -77,14 +76,12 @@ class TestTguController( ): PlanExecutionFeedbackMessage = testPlanDecisionService.generateLayinConfirmed(planId, reason) - /** Загружает cache аппаратов из файла с root-array payload НСИ вместо запроса в НСИ. */ - @PostMapping("/platforms/load-from-file") - fun loadPlatformsFromFile(@RequestParam("path") filePath: String): TestPlatformsLoadResponse { - val path = Path.of(filePath).toAbsolutePath().normalize() - val platforms = platformService.loadPlatformsFromNsiPayload(Files.readString(path)) + /** Загружает cache аппаратов из переданного в теле root-array payload НСИ вместо запроса в НСИ. */ + @PostMapping("/platforms/load-manual") + fun loadPlatformsFromPayload(@RequestBody platforms: List): TestPlatformsLoadResponse { + val loaded = platformService.loadPlatformsFromNsiPayload(platforms) return TestPlatformsLoadResponse( - filePath = path.toString(), - loadedCount = platforms.size, + loadedCount = loaded.size, allowedCount = platformService.loadAllowedPlatforms().size ) } @@ -109,7 +106,6 @@ class TestTguController( } data class TestPlatformsLoadResponse( - val filePath: String, val loadedCount: Int, val allowedCount: Int ) diff --git a/services/pcp-tgu-service/src/main/kotlin/space/nstart/pcp_tgu_service/service/PlatformService.kt b/services/pcp-tgu-service/src/main/kotlin/space/nstart/pcp_tgu_service/service/PlatformService.kt index 96fc185..f2a91dc 100644 --- a/services/pcp-tgu-service/src/main/kotlin/space/nstart/pcp_tgu_service/service/PlatformService.kt +++ b/services/pcp-tgu-service/src/main/kotlin/space/nstart/pcp_tgu_service/service/PlatformService.kt @@ -46,8 +46,11 @@ class PlatformService( /** Replaces the in-memory platform cache from a raw NSI response payload for test-only manual runs. */ fun loadPlatformsFromNsiPayload(payloadJson: String): List = + loadPlatformsFromNsiPayload(objectMapper.readValue(payloadJson, Array::class.java).toList()) + + /** Replaces the in-memory platform cache from an already-parsed NSI payload for test-only manual runs. */ + fun loadPlatformsFromNsiPayload(platforms: List): List = synchronized(cacheLock) { - val platforms = objectMapper.readValue(payloadJson, Array::class.java).toList() cachePlatforms(platforms, Instant.now(clock)) }