Andrey Epifancev 92b46c9dbe spec(slice-4): документный OpenSpec change — DBML v5.16, правила §2/§3/§9/§10 по факту, OQ-03/19/110 и новые OQ
Proposal, design и tasks сквозного change'а Среза 4: enum counterparty_match_kind и колонка osv_entry.counterparty_match_kind,
правила приведения периодов (ключ, пробел), явная привязка документов, статусы Среза 4, контракт API для фронта.

Refs RSHB/arm-ka-docs#19

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

5.8 KiB
Raw Blame History

Proposal: Срез 4 (сквозное) — DBML v5.16, правила консолидации и сводной ОСВ по факту, OQ

Срез: 4 (консолидация: версии, периметр, блокировка, привязка документов, сводная ОСВ, экспорт). Репозиторий: arm-ka-docs. Issue: RSHB/arm-ka-docs#19. Дочерний change: arm-core/openspec/changes/slice-4-consolidation (RSHB/arm-core#18). Объём по решению владельца 06.10.2026: бэкенд + API + экспорт xlsx; UI — другой разработчик.

Why

Решения владельца 06.10.2026 закрывают OQ-03 (пропуск квартала → пробел; ключ (счёт, контрагент)), OQ-19 (блокировка закрывает все правки версии, перехват по CONSOLIDATION_EDIT с причиной), фиксируют автоматику статусов Среза 4, явную привязку документов к версии при подтверждении и требование показывать в API способ сопоставления контрагента. Последнее требует новой версии модели: osv_entry хранит только counterparty_id, и после ручного сопоставления появляется алиас, по которому ручное неотличимо от автоматического.

What Changes

  • DBML v5.16 (model/data-model-v5.16.dbml, v5.15 остаётся): enum counterparty_match_kind (INN, NAME, ALIAS, MANUAL, PROPAGATED), колонка osv_entry.counterparty_match_kind (NULL ⇔ counterparty_id NULL); changelog в шапке; уточнение note consolidation_document (точки привязки/отвязки) и consolidation_lock (без истечения). entities-v5.16.md, 04-data-model-guide.md (DECISION-5: «что не хранится» дополнено способом сопоставления и пробелами), ссылки в CLAUDE.md/repo-templates/arm-core/openspec/config.yaml — на v5.16.
  • 05-domain-rules.md: §2 — ключ склейки (счёт, контрагент по сырому имени и ИНН), договоры внутри контрагента, пропуск квартала → пробел по паре (ЮЛ, счёт), правило выбора источников (нарастающий > квартальные), нули для отсутствующего квартала, дубль ключа внутри квартала; §3 — явная привязка consolidation_document (вместо «последние подтверждённые»), дорезолв на чтение не сохраняется, counterparty_match_kind, кандидаты (group/all), перенос алиаса без DIRECTORY_DELETE, автоприменение по всем ОСВ версии; §9.1 — таблица переходов Среза 4 (кто/чем), остальные переходы — Срез 7; §9.3 — period_check остаётся UNKNOWN (OQ-120); §9.5 — отвязка при автозамене, удаление файла с документом в версии (OQ-110 закрыт для Среза 4); §10 — policy «в работе + своя блокировка».
  • 03-architecture.md: пакет консолидаций, чистый домен свода (D-1), порядок блокировок «файл → документ → версия».
  • 07-open-questions.md: закрыты OQ-03, OQ-19, OQ-110 (Срез 4), OQ-40 (допущение принято); новые OQ-118 (запрет загрузки/подтверждения после DATA_CORRECTION, ТЗ 03_9 A1 — Срез 7), OQ-119 (истечение блокировки), OQ-120 (period_check документа по версиям), OQ-121 (порог размера свода для кэша), OQ-122 (ячейка PROCESSING чек-листа до маппинга), OQ-123 (общие строки osv_entry у нескольких версий — ручное сопоставление в одной меняет все).
  • 09-delivery-plan.md: Срез 4 по факту (чек-лист перенесён из Среза 3; UI — отдельно); 10-user-journey.md: шаги 2.1–2.6, 3.1 — ссылки на эндпоинты; dev/qa-guide.md: §7 «Консолидация через API» (создание, блокировка, загрузка с версией, подтверждение, чек-лист, свод, сопоставление, экспорт).
  • dev/api-contract-slice-4.md (новый): перечень эндпоинтов, схем и кодов ошибок для разработчика фронта (экраны 34–37, 42, 30, 32-*, 31-00).

Capabilities

Change документный (skip_specs: true); поведение описывают спеки дочернего change'а.

Impact

  • Таблицы: osv_entry (колонка), consolidation_document/consolidation_lock (семантика). Правила: §2, §3, §9, §10. Потребители: arm-core (миграция 0004, DBML_VERSION), фронт (контракт API); tabular-parser — без изменений.

Non-goals

  • Маршрут согласования, УОБ, ЕХ, «Добавить версию», CONFIRM, EXTENDED (Срезы 6–7); шахматка и ВГО (Срез 5); ББ/ОФР (2b), PDF (3); UI (другой разработчик); CSV чек-листа.