Files
dc-observatio/services/pcp-tgu-service
Дмитрий Соловьев e68c17e792 pcp-tgu-service: миграция с WebFlux на servlet/MVC
WebFlux в tgu был фиктивным: блокирующая JPA, контроллеры оборачивали
блокирующие вызовы в Mono.fromCallable{}.subscribeOn(boundedElastic()),
WebClient .block()-ался сразу. Единственный WebFlux-only сервис флота.

- build: подключён pcp-types-lib (тянет starter-web → servlet), springdoc
  webflux-ui → webmvc-ui; starter-webflux оставлен только ради WebClient
- контроллеры возвращают значения напрямую (без Mono-обёрток)
- удалено локальное Jackson-2 зеркало PcpTimeModule.kt → модуль из либы
  в CamundaJacksonConfig; Jackson-3 зеркало остаётся (Boot 4 держит
  Jackson 3 на HTTP-границе и для MVC), WebFluxJacksonConfig → RestJacksonConfig
2026-06-02 23:14:12 +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. Для текущего старта ищется следующий старт: