pcp-tgu-ops-ui: fork-forward в редакторе — выбор будущей ЗРВ для перевыдачи невозвратного плана
Селектор «Целевая ЗРВ» в EditorToolbar: текущий слот (replace, по умолчанию)
либо будущая ЗРВ из проекции pcp-tgu-service (fetchSpacecraftPlans →
GET /api/plans/{spacecraftId}, фильтр futureZrvWindows: PLANNED строго в
будущем, кроме базы — та же проекция, что валидирует бэк). Выбор окна
переводит обзор редактора и заставляет ensureDraft слать mode=fork-forward
(naive-UTC окно + kpp); селектор блокируется после создания DRAFT.
This commit is contained in:
@@ -33,6 +33,36 @@ export type PromoteDraftResponse = {
|
||||
attemptId: string;
|
||||
};
|
||||
|
||||
/** План КА из проекции pcp-tgu-service (persisted ∪ будущая проекция). Времена — ISO с `Z`. */
|
||||
export type TguPlanResponse = {
|
||||
planId: string;
|
||||
spacecraftId: string;
|
||||
startTime: string;
|
||||
endTime: string;
|
||||
kppId: string;
|
||||
status: string;
|
||||
};
|
||||
|
||||
/**
|
||||
* Цепочка планов одного КА из pcp-tgu-service (GET /api/plans/{spacecraftId}): persisted планы плюс
|
||||
* будущая проекция (PLANNED). Используется fork-forward-пикером для выбора целевой ЗРВ — бэк сверяет
|
||||
* выбранное окно ровно с этой же проекцией (assertWindowMatchesProjection).
|
||||
*/
|
||||
export async function fetchSpacecraftPlans(spacecraftId: string): Promise<TguPlanResponse[]> {
|
||||
const url = `${BASE}/api/plans/${encodeURIComponent(spacecraftId)}`;
|
||||
let response: Response;
|
||||
try {
|
||||
response = await fetch(url, { method: "GET", headers: { Accept: "application/json" } });
|
||||
} catch {
|
||||
throw new TguApiError("Не удалось подключиться к сервису планирования ТГУ.", "network");
|
||||
}
|
||||
const text = await response.text();
|
||||
if (!response.ok) {
|
||||
throw new TguApiError(extractErrorText(text) || "Не удалось получить планы КА.", "http", response.status);
|
||||
}
|
||||
return text.trim() ? (JSON.parse(text) as TguPlanResponse[]) : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Создаёт черновик плана (DRAFT) на основе базового плана
|
||||
* (pcp-tgu-service, POST /api/plans/{basePlanId}/draft). Триггерит клон миссии; возвращает
|
||||
|
||||
Reference in New Issue
Block a user