Files
dc-observatio/services/pcp-tgu-service
Дмитрий Соловьев 58d067c36f Merge branch 'dev' into route-processing
Conflict resolution:
- build.gradle.kts: dev version (keep nstart.cloud repo + jacoco/asm mavenCentral)
- settings.gradle.kts: project name from route-processing (observatio-terrae), rest from dev
- config addresses (application-local, pcp-mission-planing-service, pcp-dynamic-plan application.yaml): dev versions
- menu.html: merged both branches (TGU planning + bookings items)
- CatalogControllerTest.kt: merged both mocks (TguPlanningService + BallisticsService)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 09:19:29 +03:00
..
2026-05-30 21:04:57 +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. Для текущего старта ищется следующий старт: