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

32 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Design: Срез 4 (сквозное) — документы
## Context
Дочерний change в arm-core (`slice-4-consolidation`) держит технические решения D-1…D-16. Здесь — что меняется в
документах контекста и модели и почему.
## Decisions
### D-1. Новая версия DBML ради одной колонки
`osv_entry.counterparty_match_kind` — ручное решение аналитика (DECISION-5 разрешает хранить ручные решения), а
`INN/NAME/ALIAS` — зафиксированный шаг автоматического резолва, нужный для подсветки строк к проверке. Вычислять на
чтение нельзя (алиас после ручного связывания маскирует ручное). Версия 5.16, v5.15 остаётся в репозитории.
### D-2. §2 переписывается из «[открыто]» в правило
Формула остаётся; добавляются ключ, выбор источников, пробел и нули. OQ-03 закрывается решением владельца 06.10.2026.
### D-3. §3 п. 1 меняет «последние подтверждённые» на явную привязку
Подхват при создании версии и расширении периметра заменяет fallback «если версия ещё не зафиксировала документы».
Фраза убирается, чтобы код и правило не расходились.
### D-4. Контракт API для фронта — отдельный документ в `docs/dev/`
Разработчик фронта не читает OpenSpec arm-core. `api-contract-slice-4.md` — выжимка: маршруты, схемы, фильтры, коды
ошибок, соответствие экранам макета. Источник истины — спеки arm-core; документ помечен как производный.
## Decisions made without discussion
| # | Дата | Решение | Обоснование | Цена ошибки |
|---|---|---|---|---|
| 1 | 2026-10-06 | OQ-40 закрывается допущением `reporting_date` по правилу банка, макет помечен неточным | владелец не возражал на двух срезах; правило банка — в DBML note | одно поле, правится миграцией данных |
| 2 | 2026-10-06 | Контракт для фронта выносится в `docs/dev/api-contract-slice-4.md`, а не в `docs/contracts/` | `docs/contracts/` — JSON Schema между сервисами с версией; API фронта описывает OpenAPI | дублирование OpenAPI текстом; помечено «производный» |