pcp-tgu-ops-ui: тест-кнопка закладки, статус SUPERSEDED, подсветка цепочки

- Тест-кнопка «Подтвердить закладку» в деталях плана для AWAITING_LAYIN
  (под подписью «ТЕСТОВЫЙ ФУНКЦИОНАЛ», с подтверждением). Гасится, если по
  КА уже заложен план со стартом в пределах ±10 мин (дублирует бэкенд-гард).
- Статус SUPERSEDED: стиль/подпись/легенда.
- Поиск уже созданного черновика — по слоту (КА + окно исходного плана),
  т.к. basePlanId черновика теперь = предшественник, а не исходный план.
- Таймлайн: при выборе плана непричастные планы гаснут, а текущий/прошлый/
  следующий обводятся яркими рамками (current #2563EB, prev #94A3B8,
  next #F59E0B). Асимметрия: prev (явная база выбранного) показывается
  всегда, даже REJECTED/SUPERSEDED; next (обратная ссылка) не подсвечивает
  мёртвые статусы — иначе вытесненная коррекция ложно числилась бы
  «следующей» у заложенного плана.
This commit is contained in:
Дмитрий Соловьев
2026-06-04 16:13:13 +03:00
parent 87905311b1
commit faadc63028
6 changed files with 162 additions and 13 deletions
@@ -3,8 +3,8 @@ import type { TimelineStatusStyle } from "../../model/timelineTypes";
// Порядок — по жизненному циклу плана (см. docs/architect/PCP_TGU_PLAN_STATUS_LIFECYCLE.md).
// ACCEPTED из enum бэка здесь намеренно отсутствует: приёмка переводит план сразу в AWAITING_LAYIN.
// LAID_IN показан, хотя пока не возникает — нужен обработчик события подтверждения закладки
// (AWAITING_LAYIN → LAID_IN), см. TODO в HandlePlanDecisionUseCase и док жизненного цикла.
// LAID_IN возникает по событию подтверждения закладки (AWAITING_LAYIN → LAID_IN) и делает план базой
// цепочки; конкуренты на то же окно при этом уходят в SUPERSEDED.
export const STATUS_STYLES: TimelineStatusStyle[] = [
{
status: "DRAFT", label: "ЧЕРНОВИК", color: "#a98bdb", className: "status-draft",
@@ -45,6 +45,10 @@ export const STATUS_STYLES: TimelineStatusStyle[] = [
{
status: "LAYIN_FAILED", label: "LAYIN_FAILED", color: "#a61e4d", className: "status-layin-failed",
description: "План не заложен, идёт срочная перевыдача на ближайшую ЗРВ."
},
{
status: "SUPERSEDED", label: "SUPERSEDED", color: "#6b7280", className: "status-superseded",
description: "Вытеснён: по тому же окну заложен другой план (коррекция). Терминальный."
}
];