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
3.2 KiB
Spec Delta: osv-result-mapping
MODIFIED Requirements
Requirement: Резолв контрагента
Для строк group_type = COUNTERPARTY с data_type ∈ {BU, SUM} ядро SHALL искать counterparty_id по §3 п. 4: по
counterparty_inn в legal_entity.inn; иначе по точному counterparty_name в legal_entity.name; иначе по
normalize_alias(counterparty_name) среди нормализованных имён ЮЛ и legal_entity_alias.normalized_alias; больше
одного кандидата на шаге → NULL. Резолв SHALL выполняться по всему справочнику без фильтра видимости. Вместе с
counterparty_id SHALL записываться counterparty_match_kind: INN, NAME или ALIAS по шагу, на котором нашёлся
единственный кандидат (нормализованное имя ЮЛ и алиас — оба ALIAS); при NULL — NULL.
Scenario: По ИНН, по алиасу, неоднозначно
- WHEN в справочнике есть ЮЛ с ИНН
3528052718, ЮЛ с алиасомрусский бисквит, и два ЮЛ с одинаковым нормализованным именемальфа - THEN строка с ИНН
3528052718→ это ЮЛ,counterparty_match_kind = INN; строка «Русский бисквит» без ИНН → ЮЛ по алиасу,ALIAS; строка «ООО Альфа» →counterparty_id = NULL,counterparty_match_kind = NULL
ADDED Requirements
Requirement: Документ NEEDS_CHECK переводит версию в корректировку
После фиксации документов файла цикл маппинга SHALL для каждой версии в DOCUMENTS_PROCESSING, в периметр которой
входит ЮЛ файла, проверить документы файла: если среди них есть документ NEEDS_CHECK, подходящий версии по периоду
(правила привязки documents-api), версия SHALL перейти в DATA_CORRECTION с changed_by = stored_file.uploaded_by
в той же транзакции маппинга (версии блокируются FOR UPDATE по id после файла). Если uploaded_by NULL, переход
SHALL пропускаться с записью в лог. Привязка consolidation_document при маппинге MUST NOT создаваться.
Scenario: Предупреждение маппинга двигает статус
- WHEN версия 2024 Q3 в
DOCUMENTS_PROCESSING; смапплен файл ЮЛ периметра с ОСВ 62 за 2024 Q3 вNEEDS_CHECK - THEN версия в
DATA_CORRECTION, запись истории сchanged_by= загрузивший;consolidation_documentнет
Scenario: Документ RECOGNIZED
- WHEN смапплен файл с единственным документом
RECOGNIZED - THEN статус версии не изменился