Files
dc-observatio/services/pcp-tgu-service
Дмитрий Соловьев 3638afdb85 pcp: откат UTC-слоя — сквозной naive LocalDateTime без зоны на проводе
Возврат к модели «настенных часов»: одна ISO-строка без зоны
("2026-05-29T01:00:00") от БД до экрана, никто не привязывает её к
часовому поясу, сдвигаться нечему.

Бэкенд — снять зону с границы API:
- DTO OffsetDateTime/Instant -> LocalDateTime и убрана конвертация
  atOffset(ZoneOffset.UTC)/toUtcOffset() в фабриках и мапперах:
  tgu PlanResponse/NewChainDTOs/TguPlanningDTO, request RequestApiDtos,
  complex ComplexPlanRun*DTO, dynamic ObservationParametersDebugDTO.
- Удалён толерантный Jackson-слой: PcpTimeModule(+autoconfig, ServiceLoader,
  imports), PcpTimeModuleV3, LocalDateTimeTimeZoneSerializer; снята их
  регистрация в Camunda/Rest/dynamic JacksonConfig. Штатный JSR-310
  (JavaTimeModule + WRITE_DATES_AS_TIMESTAMPS=false) оставлен.
- Kafka-конверт KafkaMessage.time сериализуется ISO без офсета.
- mission-planing Mode/SurveyMode/DropMode entity и репозитории/сервис
  переведены на LocalDateTime; колонки БД остаются timestamptz (Hibernate
  мапит на naive без миграции — прецедент MissionEntity/PlanEntity).
- RequestServiceClient (dynamic) синхронизирован по типу с request-service.

Анти-регрессия: LocalDateTime.now(ZoneOffset.UTC) для серверных штампов
оставлен (выбор настенных часов UTC, не зона на проводе).

Фронт — снять офсет с egress: toUtcIso/фильтры отдают naive без Z
(после удаления толерантного десериализатора штатный парсер падал бы на Z).
Дисплейные хелперы (показ «как пришло», без сдвига) сохранены.

Тесты: контрактные ждут naive ISO; удалены UTC-артефакты (нормализация
офсетов) и тесты прослоек. Удалён docs/standards/DATETIME_UTC.md.

Операционно перед выкатом: сервисы катить согласованно; Kafka-топики с
ранее опубликованным офсетом +00:00 дренировать/проиграть.
2026-06-04 00:03:52 +03:00
..
2026-05-25 14:23:52 +03:00
2026-05-27 17:09:47 +03:00
2026-05-25 14:23:52 +03:00
2026-05-29 13:35:32 +03:00
2026-05-25 14:23:52 +03:00
2026-05-25 14:23:52 +03:00

Spacecraft Planning Service

Сервис планирования наблюдений космических аппаратов.

Сервис получает данные о доступных пунктах наблюдения и окнах наблюдения, строит непрерывную цепочку планов для каждого космического аппарата и отправляет уведомления перед началом каждого плана.


Основные возможности

Сервис выполняет следующие функции:

  • хранит планы космических аппаратов
  • строит непрерывную цепочку планов
  • принимает обновления пунктов наблюдения
  • пересчитывает планы при обновлении данных
  • отправляет Kafka уведомления перед началом плана
  • предоставляет REST API для чтения планов

Основные сущности

Plan

План космического аппарата.

Содержит:

  • spacecraftId
  • startTime
  • endTime
  • insertionPointId

SpacecraftPoints

Набор входных данных по одному космическому аппарату.

Содержит:

  • spacecraftId
  • список пунктов наблюдения

InsertionPoint

Пункт закладки.

Содержит:

  • pointId
  • список окон наблюдения

ObservationWindow

Окно наблюдения космического аппарата.

Содержит:

  • startTime
  • endTime
  • elevationAngle

Алгоритм построения планов

Алгоритм MVP:

  1. Все observationWindow.startTime считаются кандидатами на старт плана.
  2. Для текущего старта ищется следующий старт: