package space.nstart.pcp_tgu_service.entity

/**
 * Жизненный цикл persisted business-plan в расписании TGU.
 */
enum class PlannedPlanStatus {
    /** Виртуальный статус проекции будущего: НИКОГДА не пишется в БД (см. PlanProjectionService). */
    PLANNED,

    /**
     * Черновик: план в стадии правки оператором. Персистируется, но НЕ является головой цепочки
     * и НЕ попадает в проекцию/read-путь как запланированный слот. Не выдаётся авто-воркером.
     * Становится активным только после promote (Ф5) — смена статуса на PLANNED/ISSUING.
     */
    DRAFT,
    ISSUING,
    WAITING_DECISION,
    ACCEPTED,

    /** Принят и оптимистично считается заложенным; текущий базовый план цепочки. */
    AWAITING_LAYIN,

    /** Подтверждённая закладка (терминальный успех). */
    LAID_IN,

    /** Пришло событие «не заложен» (терминал); запускает срочную перевыдачу на ближайшую ЗРВ. */
    LAYIN_FAILED,

    /** Пришло событие «не принят» (терминал); запускает срочную перевыдачу на ближайшую ЗРВ. */
    NOT_ACCEPTED,

    /**
     * Вытеснён: по тому же окну КА другой план ушёл в LAID_IN (заложен), а этот — конкурирующая
     * выдача/коррекция (ISSUING/WAITING_DECISION/AWAITING_LAYIN) на пересекающееся окно. Терминал,
     * цепочку не двигает. Решение по запоздавшей attempt такого плана записывается, но игнорируется.
     */
    SUPERSEDED,

    REJECTED,
    START_AMBIGUOUS
}
