Прототип страницы расчета ПУУД

This commit is contained in:
emelianov
2026-06-15 12:19:53 +03:00
parent 07ba650e03
commit 7fdac8c71e
9 changed files with 88 additions and 174 deletions
@@ -0,0 +1,27 @@
package space.nstart.pcp.pcp_types_lib.dto.ballistics
import java.time.LocalDateTime
/** Запрос на ручной расчет программы управления угловым движением. */
data class AngularMotionCalculationRequestDTO(
val satelliteId: Long,
val approximateTime: LocalDateTime,
val mode: AngularMotionModeDTO = AngularMotionModeDTO.CONST_ORIENT,
val latitudeDeg: Double,
val longitudeDeg: Double,
val heightM: Double = 0.0,
val durationSec: Double,
val leadAngleDeg: Double = 0.0,
val azimuthDeg: Double = 0.0,
val sdi: Double? = null,
val pointInCenter: Boolean = false,
val focusMm: Double? = null,
val stepPuudSec: Double? = null,
val stepSdiSec: Double? = null,
)
enum class AngularMotionModeDTO {
CONST_ORIENT,
AZIMUTH,
SMOOTH_SDI,
}
@@ -0,0 +1,44 @@
package space.nstart.pcp.pcp_types_lib.dto.ballistics
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
import java.time.LocalDateTime
import kotlin.test.assertFalse
class AngularMotionCalculationRequestDTOJacksonTest {
private val mapper = jacksonObjectMapper().registerModule(JavaTimeModule())
@Test
fun `deserializes calculation request contract`() {
val request = mapper.readValue<AngularMotionCalculationRequestDTO>(
"""
{
"satelliteId": 123,
"approximateTime": "2026-06-15T10:30:00",
"mode": "CONST_ORIENT",
"latitudeDeg": 55.75,
"longitudeDeg": 37.61,
"heightM": 0,
"durationSec": 60,
"leadAngleDeg": 0,
"azimuthDeg": 0,
"pointInCenter": false,
"focusMm": 5500,
"stepPuudSec": 0.125,
"stepSdiSec": 20
}
""".trimIndent(),
)
assertEquals(123L, request.satelliteId)
assertEquals(LocalDateTime.of(2026, 6, 15, 10, 30), request.approximateTime)
assertEquals(AngularMotionModeDTO.CONST_ORIENT, request.mode)
assertEquals(55.75, request.latitudeDeg)
assertEquals(37.61, request.longitudeDeg)
assertFalse(request.pointInCenter)
}
}