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
2.7 KiB
2.7 KiB
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