pcp-tgu: эндпоинт /test/tgu/platforms/load-manual принимает JSON

Тестовый эндпоинт загрузки платформ принимает root-array НСИ в теле запроса (@RequestBody List<NsiPlatformDto>) вместо пути к файлу; маршрут load-from-file переименован в load-manual.
This commit is contained in:
Дмитрий Соловьев
2026-06-06 18:33:47 +03:00
parent a06dfcac4e
commit 316e0ee552
2 changed files with 10 additions and 11 deletions
@@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RestController
import space.nstart.pcp_tgu_service.domain.PlanDecision 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.PlanDecisionMessage
import space.nstart.pcp_tgu_service.dto.PlanExecutionFeedbackMessage import space.nstart.pcp_tgu_service.dto.PlanExecutionFeedbackMessage
import space.nstart.pcp_tgu_service.dto.PlanResponse 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.PlatformService
import space.nstart.pcp_tgu_service.service.TestPlanDecisionService import space.nstart.pcp_tgu_service.service.TestPlanDecisionService
import space.nstart.pcp_tgu_service.service.VisibilityRefreshJobService import space.nstart.pcp_tgu_service.service.VisibilityRefreshJobService
import java.nio.file.Files
import java.nio.file.Path
import java.time.LocalDateTime import java.time.LocalDateTime
import java.util.UUID import java.util.UUID
@@ -77,14 +76,12 @@ class TestTguController(
): PlanExecutionFeedbackMessage = ): PlanExecutionFeedbackMessage =
testPlanDecisionService.generateLayinConfirmed(planId, reason) testPlanDecisionService.generateLayinConfirmed(planId, reason)
/** Загружает cache аппаратов из файла с root-array payload НСИ вместо запроса в НСИ. */ /** Загружает cache аппаратов из переданного в теле root-array payload НСИ вместо запроса в НСИ. */
@PostMapping("/platforms/load-from-file") @PostMapping("/platforms/load-manual")
fun loadPlatformsFromFile(@RequestParam("path") filePath: String): TestPlatformsLoadResponse { fun loadPlatformsFromPayload(@RequestBody platforms: List<NsiPlatformDto>): TestPlatformsLoadResponse {
val path = Path.of(filePath).toAbsolutePath().normalize() val loaded = platformService.loadPlatformsFromNsiPayload(platforms)
val platforms = platformService.loadPlatformsFromNsiPayload(Files.readString(path))
return TestPlatformsLoadResponse( return TestPlatformsLoadResponse(
filePath = path.toString(), loadedCount = loaded.size,
loadedCount = platforms.size,
allowedCount = platformService.loadAllowedPlatforms().size allowedCount = platformService.loadAllowedPlatforms().size
) )
} }
@@ -109,7 +106,6 @@ class TestTguController(
} }
data class TestPlatformsLoadResponse( data class TestPlatformsLoadResponse(
val filePath: String,
val loadedCount: Int, val loadedCount: Int,
val allowedCount: Int val allowedCount: Int
) )
@@ -46,8 +46,11 @@ class PlatformService(
/** Replaces the in-memory platform cache from a raw NSI response payload for test-only manual runs. */ /** Replaces the in-memory platform cache from a raw NSI response payload for test-only manual runs. */
fun loadPlatformsFromNsiPayload(payloadJson: String): List<PlatformCatalogItem> = fun loadPlatformsFromNsiPayload(payloadJson: String): List<PlatformCatalogItem> =
loadPlatformsFromNsiPayload(objectMapper.readValue(payloadJson, Array<NsiPlatformDto>::class.java).toList())
/** Replaces the in-memory platform cache from an already-parsed NSI payload for test-only manual runs. */
fun loadPlatformsFromNsiPayload(platforms: List<NsiPlatformDto>): List<PlatformCatalogItem> =
synchronized(cacheLock) { synchronized(cacheLock) {
val platforms = objectMapper.readValue(payloadJson, Array<NsiPlatformDto>::class.java).toList()
cachePlatforms(platforms, Instant.now(clock)) cachePlatforms(platforms, Instant.now(clock))
} }