## MODIFIED Requirements ### Requirement: Статусы Среза 4 Версия SHALL менять статус только через сервис статусов, который пишет `consolidation_status_history(from, to, changed_by, changed_at, comment)` и `audit_event(CONSOLIDATION_STATUS_CHANGE, before = from, after = to, comment)`. Автоматические переходы: загрузка в консолидацию (`POST /consolidations/{id}/legal-entities/{le}/files`, см. `primary-files`) — `INITIATED → DOCUMENTS_PROCESSING` у каждой версии консолидации «в работе» с ЮЛ в периметре; маппинг документа `NEEDS_CHECK`, подходящего версии (см. `osv-result-mapping`) — `DOCUMENTS_PROCESSING → DATA_CORRECTION`; подтверждение документа, привязанного к версии (см. `documents-api`) — `INITIATED` или `DOCUMENTS_PROCESSING → DATA_CORRECTION`. Ручной `POST /consolidations/versions/{id}/status` (`CONSOLIDATION_EDIT`, policy, своя блокировка) с телом `{to_status, comment}` SHALL допускать только: `CANCELLED` из любого статуса «в работе» (`comment` обязателен, иначе 422 `COMMENT_REQUIRED`; `cancelled_reason = comment`, `is_in_work = false`, активная блокировка снимается) и `INITIATED` из `DOCUMENTS_PROCESSING` / `DATA_CORRECTION` (`comment` необязателен; `consolidation_document` сохраняются). Любой другой `to_status` → 409 `TRANSITION_NOT_ALLOWED` с текущим и запрошенным статусами. Повтор того же статуса → 409 `TRANSITION_NOT_ALLOWED`. Статус «в работе» = {`INITIATED`, `DOCUMENTS_PROCESSING`, `DATA_CORRECTION`}. #### Scenario: Аннулирование - **WHEN** владелец блокировки переводит версию `DATA_CORRECTION` в `CANCELLED` с комментарием - **THEN** 200; `status = CANCELLED`, `cancelled_reason` = комментарий, `is_in_work = false`, блокировка снята; запись истории `DATA_CORRECTION → CANCELLED` с комментарием; `audit_event(CONSOLIDATION_STATUS_CHANGE)` #### Scenario: Переход Среза 7 - **WHEN** запрошен `to_status = CONSOLIDATION_RF` - **THEN** 409 `TRANSITION_NOT_ALLOWED`, статус не изменился #### Scenario: Аннулирование без комментария - **WHEN** `to_status = CANCELLED`, `comment` пуст - **THEN** 422 `COMMENT_REQUIRED`