# Spacecraft Planning Service

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

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

---

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

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

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

---

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

## Plan

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

Содержит:

- spacecraftId
- startTime
- endTime
- insertionPointId

---

## SpacecraftPoints

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

Содержит:

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

---

## InsertionPoint

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

Содержит:

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

---

## ObservationWindow

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

Содержит:

- startTime
- endTime
- elevationAngle

---

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

Алгоритм MVP:

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