pcp-tgu: связь планов на таймлайне по basePlanId вместо стрелок/нумерации по времени

Стрелки и бейджи-цифры цепочки строились по ВРЕМЕНИ (соседние по времени
планы КА) и ложно сцепляли два черновика с одной предысторией как «один —
предок другого». Убираем эту логику целиком (buildSequentialLinks,
buildPlanChains, CHAIN_COLORS/chainColor, тип TimelineLink) и показываем
связь только по реальному basePlanId:

- В деталях плана — строка basePlanId (рендерится, если задан).
- При выборе плана на таймлайне подсвечиваем гало два соседних звена по
  basePlanId: предыдущий (planId == basePlanId выбранного) — тёплый янтарь,
  следующий (basePlanId == выбранный) — бирюза. Следующих может быть
  несколько (черновики с одной предысторией) — подсвечиваются все.

Бэкенд: basePlanId/projected проброшены через PlanResponse (pcp-tgu-service)
и TguPlanResponse (pcp-ui-service — прокси /api/tgu-planning/plans, иначе
Jackson срезал бы неизвестные поля). Требует рестарт обоих сервисов.

Заодно: очистка нотиса деталей при смене фокуса (план/ЗРВ) и блок
«Включения» (счётчики съёмок/сбросов) в правой панели.
This commit is contained in:
Дмитрий Соловьев
2026-06-04 11:44:28 +03:00
parent 294b17757d
commit a5a1cdfa64
10 changed files with 150 additions and 96 deletions
@@ -16,6 +16,13 @@ export type TguPlan = {
endTime: string;
kppId: string;
status: TguPlanStatus;
/**
* Предшественник плана в цепочке. `null`/отсутствует — у плана нет предыстории (старт новой
* цепочки «без истории» или самый первый план): на таймлайне в него не ведут стрелку.
*/
basePlanId?: string | null;
/** `true` — вычисленная проекция будущего (не persisted); цепочку продолжает, но стартом не является. */
projected?: boolean;
};
export type TguPlatform = {
@@ -54,12 +54,6 @@ export type TimelineRowLayout = {
zrvBandY: number;
};
export type TimelineLink = {
spacecraftId: string;
fromPlanId: string;
toPlanId: string;
};
export type TimelineStatusStyle = {
status: TguPlanStatus;
label: string;