backend: правки complex-mission/mission-planing/request + тестовые паспорта
ComplexPlanRunOrchestrationService, MissionController, MissionPlaningService, KafkaProducerConfig; обновлены тестовые JSON-паспорта route-processing.
This commit is contained in:
+22
@@ -10,6 +10,7 @@ import space.nstart.pcp.pcp_satellites_service.entity.ComplexPlanRunEntity
|
||||
import space.nstart.pcp.pcp_types_lib.dto.requests.ComplexPlanProcessRequestDTO
|
||||
import space.nstart.pcp.pcp_types_lib.dto.requests.CoverageCalculationSource
|
||||
import tools.jackson.databind.json.JsonMapper
|
||||
import java.time.Duration
|
||||
import kotlin.system.measureTimeMillis
|
||||
|
||||
@Service
|
||||
@@ -25,6 +26,8 @@ class ComplexPlanRunOrchestrationService(
|
||||
private val objectMapper = JsonMapper.builder().findAndAddModules().build()
|
||||
|
||||
fun process(request: ComplexPlanProcessRequestDTO, requestedBy: String?): ComplexPlanRunResponseDTO {
|
||||
validateInterval(request)
|
||||
|
||||
lateinit var selectedSatelliteIds: List<Long>
|
||||
val resolveSatelliteIdsMs = measureTimeMillis {
|
||||
selectedSatelliteIds = resolveSatelliteIds(request)
|
||||
@@ -161,6 +164,25 @@ class ComplexPlanRunOrchestrationService(
|
||||
request.satelliteId?.let { add(it) }
|
||||
addAll(request.satelliteIds)
|
||||
}.distinct().ifEmpty { satelliteService.satellites.map { it.satelliteId }.distinct() }
|
||||
|
||||
/**
|
||||
* Интервал расчёта обязан быть корректным и не длиннее [MAX_INTERVAL_DAYS] суток: считать
|
||||
* комплексный план по всем КА на больший горизонт слишком тяжело и бессмысленно для оперативного
|
||||
* плана. Проверка до создания run, чтобы не плодить заведомо отклонённые записи.
|
||||
*/
|
||||
private fun validateInterval(request: ComplexPlanProcessRequestDTO) {
|
||||
if (!request.intervalEnd.isAfter(request.intervalStart)) {
|
||||
throw CustomValidationException("Interval end must be after interval start")
|
||||
}
|
||||
if (Duration.between(request.intervalStart, request.intervalEnd) > Duration.ofDays(MAX_INTERVAL_DAYS)) {
|
||||
throw CustomValidationException("Complex plan interval cannot exceed $MAX_INTERVAL_DAYS days")
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
/** Максимальная длина интервала расчёта комплексного плана, суток. */
|
||||
const val MAX_INTERVAL_DAYS = 10L
|
||||
}
|
||||
}
|
||||
|
||||
data class ComplexPlanCalculationResult(
|
||||
|
||||
+10
-6
@@ -253,10 +253,12 @@ class MissionController(
|
||||
}
|
||||
|
||||
@Operation(
|
||||
summary = "Полностью очистить план",
|
||||
description = "Удаляет ВСЕ включения плана миссии: съёмки (включая построенные вручную, source=MANUAL) " +
|
||||
"и сбросы, вместе с бронями слотов и связями съёмка↔сброс. В отличие от пересчёта плана, " +
|
||||
"ручные маршруты тоже удаляются. Используется кнопкой «Очистить план» в редакторе."
|
||||
summary = "Очистить включения плана",
|
||||
description = "Удаляет включения плана миссии вместе с бронями слотов и связями съёмка↔сброс. " +
|
||||
"Сбросы удаляются всегда. Для съёмок поведение выбирает оператор флагом keepManual: " +
|
||||
"keepManual=true — ручные маршруты съёмки (source=MANUAL) сохраняются, удаляются только " +
|
||||
"рассчитанные (как при пересчёте плана); keepManual=false (по умолчанию) — удаляются ВСЕ " +
|
||||
"съёмки, включая ручные. Используется кнопкой «Очистить план» в редакторе."
|
||||
)
|
||||
@ApiResponses(
|
||||
value = [
|
||||
@@ -267,9 +269,11 @@ class MissionController(
|
||||
@DeleteMapping("/{mission_id}/modes")
|
||||
fun clearPlan(
|
||||
@Parameter(description = "Идентификатор миссии")
|
||||
@PathVariable("mission_id") id: UUID
|
||||
@PathVariable("mission_id") id: UUID,
|
||||
@Parameter(description = "Сохранить ручные маршруты съёмки (source=MANUAL)")
|
||||
@RequestParam(name = "keepManual", required = false, defaultValue = "false") keepManual: Boolean
|
||||
): ResponseEntity<Void> {
|
||||
missionPlaningService.clearPlan(id)
|
||||
missionPlaningService.clearPlan(id, keepManual)
|
||||
return ResponseEntity.noContent().build()
|
||||
}
|
||||
|
||||
|
||||
+19
-8
@@ -937,18 +937,29 @@ class MissionPlaningService(
|
||||
}
|
||||
|
||||
/**
|
||||
* Полная очистка плана: удаляет ВСЕ включения миссии — съёмки (включая ручные, source=MANUAL)
|
||||
* и сбросы — вместе с бронями слотов и связями съёмка↔сброс. В отличие от пересчёта плана
|
||||
* ([loadSlots]/[calculateDrops]), ручные маршруты тоже удаляются. Сбросы удаляются первыми,
|
||||
* чтобы снять связи до удаления съёмок и не плодить проверку осиротевших сбросов.
|
||||
* Очистка плана. Всегда удаляет все сбросы и брони слотов; для съёмок поведение выбирает
|
||||
* оператор флагом [keepManual]:
|
||||
* - `keepManual=true` — сохраняются ручные маршруты съёмки (source=MANUAL), удаляются только
|
||||
* рассчитанные (как и при пересчёте плана [loadSlots]/[calculateDrops]);
|
||||
* - `keepManual=false` — удаляются ВСЕ съёмки, включая ручные (полная очистка).
|
||||
* Сбросы удаляются первыми, чтобы снять связи до удаления съёмок и не плодить проверку
|
||||
* осиротевших сбросов.
|
||||
*/
|
||||
@Transactional
|
||||
fun clearPlan(missionId: UUID) {
|
||||
fun clearPlan(missionId: UUID, keepManual: Boolean) {
|
||||
missionRepository.findById(missionId).orElseThrow { notFound(missionId) }
|
||||
val modes = modeRepository.findAllByPlan_Mission_MissionIdOrderByTimeStartAsc(missionId)
|
||||
modes.filterIsInstance<DropModeEntity>().forEach { deleteDropMode(it) }
|
||||
modes.filterIsInstance<SurveyModeEntity>().forEach { deleteSurveyMode(it) }
|
||||
logger.info("План миссии {} полностью очищен: удалено включений={}", missionId, modes.size)
|
||||
val drops = modes.filterIsInstance<DropModeEntity>()
|
||||
val surveys = modes.filterIsInstance<SurveyModeEntity>()
|
||||
val (keptSurveys, deletedSurveys) =
|
||||
if (keepManual) surveys.partition { it.source == SurveyModeSource.MANUAL }
|
||||
else emptyList<SurveyModeEntity>() to surveys
|
||||
drops.forEach { deleteDropMode(it) }
|
||||
deletedSurveys.forEach { deleteSurveyMode(it) }
|
||||
logger.info(
|
||||
"План миссии {} очищен (keepManual={}): удалено сбросов={}, съёмок={}, сохранено ручных съёмок (MANUAL)={}",
|
||||
missionId, keepManual, drops.size, deletedSurveys.size, keptSurveys.size
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ class KafkaProducerConfig {
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
fun requestProducerFactory(
|
||||
@Value("\${spring.kafka.bootstrap-servers:192.168.100.160:19092}") bootstrapServers: String,
|
||||
@Value("\${spring.kafka.bootstrap-servers:localhost:29092}") bootstrapServers: String,
|
||||
): ProducerFactory<String, String> {
|
||||
return DefaultKafkaProducerFactory(
|
||||
mapOf(
|
||||
|
||||
+11
-11
@@ -98,7 +98,7 @@
|
||||
],
|
||||
"assets": {
|
||||
"schema-calibration-vh": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/calibration-s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=26988c6a3490f71382ae9e61ff0d7b59aca32ec652993a785d24e8dd81e70939",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/calibration-s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=26988c6a3490f71382ae9e61ff0d7b59aca32ec652993a785d24e8dd81e70939",
|
||||
"title": "xml",
|
||||
"description": null,
|
||||
"type": "application/xml",
|
||||
@@ -107,7 +107,7 @@
|
||||
]
|
||||
},
|
||||
"schema-calibration-vv": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/calibration-s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=edd6957a0404ead07e7a31d0759db26b3a6ad33394247c177dc41a7abf5972d0",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/calibration-s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=edd6957a0404ead07e7a31d0759db26b3a6ad33394247c177dc41a7abf5972d0",
|
||||
"title": "xml",
|
||||
"description": null,
|
||||
"type": "application/xml",
|
||||
@@ -116,7 +116,7 @@
|
||||
]
|
||||
},
|
||||
"schema-noise-vh": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/noise-s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=3efe46114ed6dfeac898963510d3ba9c8b537c803b1fa69a5a03d5b462a1665c",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/noise-s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=3efe46114ed6dfeac898963510d3ba9c8b537c803b1fa69a5a03d5b462a1665c",
|
||||
"title": "xml",
|
||||
"description": null,
|
||||
"type": "application/xml",
|
||||
@@ -125,7 +125,7 @@
|
||||
]
|
||||
},
|
||||
"schema-noise-vv": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/noise-s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=0ca91479ba4132dbf13c2637f97567eb29ee9ca818009eaf501072995fe784ca",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/noise-s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120818Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=0ca91479ba4132dbf13c2637f97567eb29ee9ca818009eaf501072995fe784ca",
|
||||
"title": "xml",
|
||||
"description": null,
|
||||
"type": "application/xml",
|
||||
@@ -134,7 +134,7 @@
|
||||
]
|
||||
},
|
||||
"schema-product-vh": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=39817f0b7610c0b20a23d0fae24e7183f0d3719ba6ab2f315c320c9c6530274f",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=39817f0b7610c0b20a23d0fae24e7183f0d3719ba6ab2f315c320c9c6530274f",
|
||||
"title": "xml",
|
||||
"description": null,
|
||||
"type": "application/xml",
|
||||
@@ -143,7 +143,7 @@
|
||||
]
|
||||
},
|
||||
"schema-product-vv": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=85d28bc2bb94724b4db7df84121d4252b423fa429204e4b25e06b9d725f3aeee",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001.xml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=85d28bc2bb94724b4db7df84121d4252b423fa429204e4b25e06b9d725f3aeee",
|
||||
"title": "xml",
|
||||
"description": null,
|
||||
"type": "application/xml",
|
||||
@@ -152,7 +152,7 @@
|
||||
]
|
||||
},
|
||||
"safe-manifest": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/manifest.safe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=dbb22d57d031a412e2b46273edf32cfcb7fbdae1fa1fcc74bdcaa39a5e086f53",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/manifest.safe?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120819Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=dbb22d57d031a412e2b46273edf32cfcb7fbdae1fa1fcc74bdcaa39a5e086f53",
|
||||
"title": "safe",
|
||||
"description": null,
|
||||
"type": "application/xml",
|
||||
@@ -161,7 +161,7 @@
|
||||
]
|
||||
},
|
||||
"vh": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002_cog.tif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120824Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=dbecc9e04e976751e855f53e9a9a8db5d6365a30ac7ec116f31b0936ee375648",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vh-20250625t013854-20250625t013919-059796-076d15-002_cog.tif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120824Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=dbecc9e04e976751e855f53e9a9a8db5d6365a30ac7ec116f31b0936ee375648",
|
||||
"title": "tif",
|
||||
"description": null,
|
||||
"type": "image/tiff; application=geotiff; profile=cloud-optimized",
|
||||
@@ -170,7 +170,7 @@
|
||||
]
|
||||
},
|
||||
"vv": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001_cog.tif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=34cf1e5f5174b7cb5ca5d173ff699923819d5df28486436d972efa59ac9b1ddb",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/s1a-iw-grd-vv-20250625t013854-20250625t013919-059796-076d15-001_cog.tif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=34cf1e5f5174b7cb5ca5d173ff699923819d5df28486436d972efa59ac9b1ddb",
|
||||
"title": "tif",
|
||||
"description": null,
|
||||
"type": "image/tiff; application=geotiff; profile=cloud-optimized",
|
||||
@@ -179,7 +179,7 @@
|
||||
]
|
||||
},
|
||||
"kml": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/map-overlay.kml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=92f63b9f463041c4ed87b3cb508ba8c57fd2db8ea2d22026087ba57d2ef88f54",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/map-overlay.kml?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=92f63b9f463041c4ed87b3cb508ba8c57fd2db8ea2d22026087ba57d2ef88f54",
|
||||
"title": "kml",
|
||||
"description": null,
|
||||
"type": "application/kml",
|
||||
@@ -188,7 +188,7 @@
|
||||
]
|
||||
},
|
||||
"thumbnail": {
|
||||
"href": "http://192.168.60.201:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/quick-look.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=19bebb1e446add1d6e0898b4329d2a3e016f59087719ce2b51dff5c487835cb0",
|
||||
"href": "http://192.168.60.146:9000/stac-data/S1A/S1A_IW_GRDH_1SDV_20250625T013854_20250625T013919_059796_076D15_B5C1.SAFE/quick-look.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=minioadmin%2F20260331%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260331T120829Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=19bebb1e446add1d6e0898b4329d2a3e016f59087719ce2b51dff5c487835cb0",
|
||||
"title": "png",
|
||||
"description": null,
|
||||
"type": "image/png",
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user