routes: объём маршрута (volumeMb) — расчёт, хранение в БД и отображение
Объём режима = скорость × длительность, Мбайт: съёмка 120 Мбайт/с (12 ГБ / 100 с), сброс — канал 1200 Мбит/с ÷ 8. Единый источник — ModeDataRates в pcp-types-lib. Хранится колонкой volume_mb (Flyway V10 mission-planing, V9 complex-mission, бэкфилл из duration), заполняется на всех путях построения через @PrePersist/@PreUpdate. DTO отдают вычисляемое read-only поле (та же формула). Фронт pcp-tgu-ops-ui показывает объём в редакторе (инспектор, построенный маршрут) и в сводке комплексного плана.
This commit is contained in:
+14
-1
@@ -12,8 +12,11 @@ import jakarta.persistence.Id
|
||||
import jakarta.persistence.OneToMany
|
||||
import jakarta.persistence.JoinColumn
|
||||
import jakarta.persistence.ManyToOne
|
||||
import jakarta.persistence.PrePersist
|
||||
import jakarta.persistence.PreUpdate
|
||||
import jakarta.persistence.Table
|
||||
import jakarta.persistence.Index
|
||||
import space.nstart.pcp.pcp_types_lib.dto.satellite.mission.ModeDataRates
|
||||
import java.time.LocalDateTime
|
||||
|
||||
@Entity
|
||||
@@ -92,4 +95,14 @@ class SatelliteModeEntity(
|
||||
fetch = FetchType.LAZY
|
||||
)
|
||||
var cells: MutableList<SatelliteModeCellEntity> = mutableListOf()
|
||||
)
|
||||
) {
|
||||
/** Объём маршрута, Мбайт. Денормализация: считается из duration при построении (satellite_modes — только SURVEY). */
|
||||
@Column(name = "volume_mb", nullable = false)
|
||||
var volumeMb: Double = ModeDataRates.surveyVolumeMb(duration)
|
||||
|
||||
@PrePersist
|
||||
@PreUpdate
|
||||
fun computeVolumeMb() {
|
||||
volumeMb = ModeDataRates.surveyVolumeMb(duration)
|
||||
}
|
||||
}
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
-- Объём маршрута съёмки как атрибут, Мбайт. Считается при построении из длительности
|
||||
-- (см. ModeDataRates в pcp-types-lib): накопление 120 Мбайт/с. satellite_modes — только SURVEY.
|
||||
ALTER TABLE satellite_modes ADD COLUMN volume_mb DOUBLE PRECISION NOT NULL DEFAULT 0;
|
||||
|
||||
-- Бэкфилл существующих маршрутов из длительности.
|
||||
UPDATE satellite_modes SET volume_mb = duration * 120;
|
||||
Reference in New Issue
Block a user