pcp: время — сквозной naive LocalDateTime как локальное настенное время (без UTC)

Отказ от остаточной UTC-семантики: naive LocalDateTime трактуется как
локальное время единой зоны всех сервисов.

Backend (границы внешних систем):
- VisibilityPayloadParser, SyncSpacecraftFromNsiUseCase: ZoneOffset.UTC →
  ZoneId.systemDefault() для проекции внешних Instant/ISO-с-Z в naive.
- тесты границ перевёрнуты на systemDefault (под Europe/Moscow ждут +3).
- чистка UTC-формулировок в DTO-комментариях, мёртвых ссылок на
  docs/standards/DATETIME_UTC.md.

Frontend (pcp-tgu-ops-ui):
- utils/utcTime.ts → utils/localTime.ts: parseLocal/formatLocal*/toLocalIso/
  toLocalInputValue с локальной семантикой (без дописывания Z и timeZone:UTC).
- замена getUTC*/Date.UTC/toISOString-сериализации на локальные аналоги.
- убраны пользовательские подписи «UTC» в редакторе/таймлайне.
- удалён utcTime.guard.test.ts (форсил обратный UTC-инвариант); тест-фикстуры
  сделаны зоно-независимыми. tsc + vitest зелёные под TZ=UTC и TZ=Europe/Moscow.

Включает также прочие незакоммиченные правки рабочего дерева.
This commit is contained in:
Дмитрий Соловьев
2026-06-04 09:50:39 +03:00
parent 5049395911
commit 294b17757d
123 changed files with 556 additions and 535 deletions
@@ -2,7 +2,6 @@ package space.nstart.pcp.tle_monitoring_service.entity
import jakarta.persistence.*
import java.time.LocalDateTime
import java.time.ZoneOffset
@Entity
@@ -23,5 +22,5 @@ class TLEEntity (
val tle : String = "",
var timeTle : LocalDateTime? = null,
@Column(name = "time_rec", nullable = false)
val timeRec : LocalDateTime = LocalDateTime.now(ZoneOffset.UTC)
val timeRec : LocalDateTime = LocalDateTime.now()
)
@@ -24,7 +24,6 @@ import space.nstart.pcp.tle_monitoring_service.message.KafkaProducer
import space.nstart.pcp.tle_monitoring_service.repository.TLERepository
import java.time.Duration
import java.time.LocalDateTime
import java.time.ZoneOffset
import java.util.UUID
import kotlin.math.PI
import kotlin.math.abs
@@ -304,7 +303,7 @@ class CelesTrakService(
.sortedBy { tle -> tle.timeTle }
var first = true
var vit = 0
var tVuz = LocalDateTime.now(ZoneOffset.UTC)
var tVuz = LocalDateTime.now()
var lVuz = 0.0
for(t in tles){
var s = t.tle.split("\r\n")