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
5.4 KiB
Spec Delta: documents-api
MODIFIED Requirements
Requirement: Подтверждение документа
POST /api/v1/documents/{document_id}/confirm (DOCUMENT_EDIT, policy) SHALL переводить документ из RECOGNIZED
или NEEDS_CHECK в CONFIRMED (confirmed_by, confirmed_at) с audit_event(DOCUMENT_CONFIRM, PRIMARY_DOCUMENTS);
из CONFIRMED повторно — 409 ALREADY_CONFIRMED; документ файла SUPERSEDED — 409 FILE_SUPERSEDED; документ в любом
другом статусе (например, ERROR) — 409 DOCUMENT_NOT_CONFIRMABLE. Если совпали несколько условий, приоритет у
FILE_SUPERSEDED. Подтверждение берёт блокировки в порядке «файл → документ → версии консолидации (по возрастанию
id)» и перечитывает их под FOR UPDATE; документ или файл, исчезнувшие за время ожидания блокировки, — 404 NOT_FOUND.
В той же транзакции документ SHALL привязываться (consolidation_document) ко всем версиям «в работе» (INITIATED,
DOCUMENTS_PROCESSING, DATA_CORRECTION), которым он подходит: ЮЛ документа ∈ consolidation_member версии,
period_year = год версии, period_quarter не NULL и (is_cumulative true или NULL → period_quarter = квартал
версии; false → period_quarter ≤ квартала версии). Привязанный ранее документ того же ЮЛ с той же тройкой
(document_type, osv_account_code, period_quarter) в той же версии SHALL отвязываться. Каждая версия, получившая
привязку, из INITIATED или DOCUMENTS_PROCESSING SHALL переходить в DATA_CORRECTION (changed_by =
подтвердивший). Блокировка версии (consolidation_lock) для подтверждения MUST NOT требоваться.
Scenario: Причина ошибки маппинга в карточке файла
- WHEN файл в
ERRORпосле неудачного маппинга (заданиеdone,error_codeпуст) - THEN
job.mapping_errorсодержит причину,job.error_codeпуст
Scenario: Документ не подтверждается
- WHEN подтверждается документ в статусе
ERROR - THEN 409
DOCUMENT_NOT_CONFIRMABLE, статус не изменился
Scenario: Подтверждение
- WHEN
ka_rfподтверждает документNEEDS_CHECKсвоего филиала - THEN
status = CONFIRMED,confirmed_by= пользователь,audit_event(DOCUMENT_CONFIRM)сbefore_value.status = NEEDS_CHECK
Scenario: Привязка к версии и переход статуса
- WHEN версия ГК 2024 Q3 в
INITIATEDс ЮЛ в периметре; подтверждается квартальная ОСВ 60 этого ЮЛ за 2024 Q2 - THEN
consolidation_document(version, document)создан; версия вDATA_CORRECTION; запись историиINITIATED → DATA_CORRECTIONсchanged_by= пользователь
Scenario: Не подходит по периоду
- WHEN подтверждается нарастающая ОСВ 60 за 2024 Q2 при версии за 2024 Q3
- THEN привязки нет, статус версии не изменился
Scenario: Версия в CANCELLED
- WHEN подходящий документ подтверждается при версии
CANCELLED - THEN привязки нет
ADDED Requirements
Requirement: Подхват документов при создании версии и расширении периметра
При создании версии и при добавлении ЮЛ в периметр ядро SHALL привязать уже подтверждённые документы этого ЮЛ из
незаменённых файлов, подходящие версии (условия — как при подтверждении); на одну тройку (document_type,
osv_account_code, period_quarter) — документ с самым поздним confirmed_at. Удаление ЮЛ из периметра SHALL
снимать привязку всех его документов в этой версии. Подхват и отвязка статус версии MUST NOT менять.
Scenario: Фикстуры, подтверждённые до консолидации
- WHEN ОСВ 60 РБ за Q1, Q2, Q3 2024 подтверждены, затем создана консолидация ГК за 2024 Q3
- THEN три
consolidation_documentна эти документы; в чек-листе ячейка ОСВ 60 РБ —CONFIRMED; версия вINITIATED
Scenario: Две подтверждённые версии одного документа
- WHEN у ЮЛ два незаменённых файла с
CONFIRMEDОСВ 62 за 2024 Q3 (разныеlocator), создана версия 2024 Q3 - THEN привязан документ с более поздним
confirmed_at