Andrey Epifancev 6e5ab834ec spec(slice-4): OpenSpec change консолидации — версии, периметр, блокировка, привязка документов, сводная ОСВ, экспорт
Proposal, design (D-1…D-16, решения без обсуждения), tasks и дельты спек: новые capability consolidations-api и
consolidated-osv; изменения data-model (DBML v5.16, counterparty_match_kind), documents-api (привязка при
подтверждении), primary-files (consolidation_version_id, отвязка при автозамене), osv-result-mapping (match_kind,
NEEDS_CHECK → DATA_CORRECTION), directory-policy (редактируемость версии), audit-trail (события консолидации).
Решения владельца 06.10.2026: OQ-03 пробел, OQ-19 блокировка, статусы по событиям, явная привязка, экспорт одним листом.

Refs RSHB/arm-core#18

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 02:52:23 +04:00

2.7 KiB
Raw Blame History

Spec Delta: audit-trail

ADDED Requirements

Requirement: События консолидации

Действия с консолидацией SHALL писать audit_event через сервис аудита с заполненным consolidation_version_id:

Действие action section object_type before_value / after_value
консолидация создана CONSOLIDATION_CREATE CONSOLIDATION consolidation_version — / {consolidation_id, year, quarter, members}
периметр изменён MEMBERSHIP_CHANGE CONSOLIDATION consolidation_version списки ЮЛ до / после
взята в работу, снята CONSOLIDATION_LOCK CONSOLIDATION consolidation_version — / {locked_by, released}
перехват CONSOLIDATION_LOCK_TAKEOVER CONSOLIDATION consolidation_version {locked_by: прежний} / {locked_by: новый}, comment = причина
смена статуса (ручная и автоматическая) CONSOLIDATION_STATUS_CHANGE CONSOLIDATION consolidation_version {status} / {status}, comment
контрагент сопоставлен вручную OSV_COUNTERPARTY_MAP CONSOLIDATION osv_entry {counterparty_id, match_kind} / {counterparty_id, match_kind, propagated_entry_ids, alias_created, alias_moved_from}
экспорт свода EXPORT EXPORT consolidation_version — / {report: "consolidated_osv", filters, rows}

Автоматические переходы статуса SHALL писаться с user_id инициатора события (загрузивший, подтвердивший, stored_file.uploaded_by). Создание и удаление алиасов при ручном сопоставлении SHALL дополнительно писать LEGAL_ENTITY_CHANGE (раздел DIRECTORIES, как в Срезе 1). FILE_REPLACE SHALL добавлять в after_value unbound_version_ids.

Scenario: Перехват

  • WHEN Б перехватывает блокировку у А с причиной «Отпуск»
  • THEN одно событие CONSOLIDATION_LOCK_TAKEOVER с before_value.locked_by = A, after_value.locked_by = B, comment = "Отпуск", consolidation_version_id версии

Scenario: Автоматический переход

  • WHEN подтверждение документа перевело версию в DATA_CORRECTION
  • THEN событие CONSOLIDATION_STATUS_CHANGE с user_id подтвердившего, before_value.status = INITIATED