Жизненный цикл связанных сущностей (Edge Cases)¶
Раздел описывает что происходит при удалении, отключении и изменении конфигурационных сущностей, связанных с активными данными.
Закрытие сделки как «Проигрыш»¶
Сделка закрыта как Lost (проигрыш):
├── Незавершённые продажаы:
│ ├── Система показывает предупреждение:
│ │ «У сделки есть N незавершённых продаж. Что сделать?»
│ ├── Вариант 1: Отменить продажаы → статус «Отменён»
│ ├── Вариант 2: Оставить как есть → продажаы продолжают жить
│ └── Вариант 3: Не закрывать сделку (отмена действия)
├── Активности: остаются как есть (исторические данные)
└── Сделка переходит в финальную стадию, обратное перемещение возможно
Переоткрытие сделки¶
Закрытая сделка (Won или Lost) может быть переоткрыта:
├── Кто: Manager+ (Owner/Admin/Manager)
├── Куда: на любую активную стадию воронки
├── Stage log: добавляется новая запись (как возврат)
├── В аудите: событие «переоткрытие сделки» + причина
└── Продажи: не затрагиваются (если были отменены — остаются отменёнными)
Удаление стадии воронки¶
Стадия «Квалификация» удаляется, на ней стоят 15 сделок:
├── Система НЕ позволяет удалить стадию с активными сделками
├── Сообщение: «На стадии "Квалификация" 15 сделок.
│ Переместите их на другую стадию перед удалением.»
├── Быстрое действие: «Переместить все на [стадия]» (dropdown)
├── После перемещения → удаление разрешено
└── Исторические записи в stage_log сохраняются (название стадии как текст)
Удаление воронки¶
Воронка удаляется, в ней есть сделки:
├── Если это единственная воронка → удаление запрещено
│ «Невозможно удалить единственную воронку проекта.»
├── Если есть другие воронки → перенос:
│ «В воронке 42 сделки. Переместить в воронку [dropdown]?»
│ Сделки попадают на первую стадию целевой воронки
└── Архивация воронки (альтернатива): read-only, новые сделки не создаются
Удаление типа продажаа¶
Тип продажаа «Зарплатный проект» удаляется:
├── Активные продажаы этого типа ЕСТЬ?
│ ├── Да → удаление запрещено
│ │ «Есть N активных продаж типа "Зарплатный проект".
│ │ Завершите или отмените их перед удалением.»
│ └── Нет → soft delete (корзина 7 дней)
├── Завершённые продажаы этого типа: сохраняются, тип хранится как snapshot
├── Продукты, ссылающиеся на этот тип: ссылка обнуляется (order_type = null)
│ Предупреждение: «N продуктов потеряют привязку к типу продажаа.»
└── Версионирование: существующие продажаы хранят order_type_version
Удаление продукта¶
Продукт «ЗП Премиум» удаляется:
├── Продукт привязан к активным сделкам?
│ ├── Нет → soft delete
│ └── Да → предупреждение:
│ «Продукт используется в N активных сделках.
│ Удалить продукт? Сделки сохранят название продукта как текст.»
├── Продажи: уже созданные продажаы не затрагиваются
│ (продажа хранит order_type_version, не ссылку на продукт)
└── В карточке сделки: «Продукт удалён» (серый текст)
Отключение модуля с активными данными¶
Модуль «Продажи» отключается, есть активные продажаы:
├── Предупреждение:
│ «В модуле "Продажи" есть N незавершённых продаж.
│ При отключении они станут недоступны (данные не удаляются).»
├── Подтверждение → модуль отключается
├── Данные НЕ удаляются, НЕ переходят в read-only
├── Просто становятся невидимы в UI
├── Webhook / финальные действия ПРИОСТАНАВЛИВАЮТСЯ
├── DLQ retry ПРИОСТАНАВЛИВАЕТСЯ
├── При включении обратно: всё доступно как было
│ Приостановленные webhook НЕ возобновляются автоматически
│ (менеджер решает сам: «Повторить отправку»)
└── В карточке сделки: раздел «Продажи» скрыт (Contextual UI)
но при включении модуля обратно — продажаы появятся
Аналогично для других модулей:
├── Отключение «Активности» → задачи/звонки/встречи невидимы,
│ напоминания приостанавливаются
├── Отключение «Документы» → документы и шаблоны невидимы
└── Отключение «Контакты» → контакты невидимы,
но привязки сделок к контактам сохраняются
Удаление контакта/компании с привязками¶
Контакт «Иванов И.И.» удаляется (soft delete):
├── Привязанные сделки: ссылка сохраняется, но контакт помечен «Удалён»
│ Лёгкие поля сделки НЕ затрагиваются (это текст, не ссылка)
├── Привязанные продажаы: аналогично
├── Привязанные активности: аналогично
├── При восстановлении: все привязки восстанавливаются
└── При hard delete: привязки обнуляются, лёгкие поля остаются
Компания «Альфа» удаляется (soft delete):
├── Many-to-many с контактами: связи помечены «компания удалена»
│ Контакты НЕ удаляются
├── Привязанные сделки: аналогично контакту
└── Восстановление: все связи восстанавливаются