ЕХ: OpenSpec-delta arm-core и tasks.md (#208)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
4a5ecb1d91
commit
3b698e53a2
42
openspec/changes/ex-payload-schema/specs/arm-core/spec.md
Normal file
42
openspec/changes/ex-payload-schema/specs/arm-core/spec.md
Normal file
@ -0,0 +1,42 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Срез ЕХ при верификации
|
||||
При переходе версии консолидации в «Верифицирован» ядро SHALL один раз записать срез по `context/05-domain-rules.md`
|
||||
§14: `ex_snapshot` со `status = ACTUAL` и номером, следующим по (ГСК, год, квартал); `ex_snapshot_member` по каждому ЮЛ
|
||||
версии; `ex_snapshot_item` — `primary_document` по каждому привязанному документу и по одному элементу `summary_osv`,
|
||||
`vgo_pairs`, `chess`, `kfo_balance`, `kfo_income`, `corrections`, `version_card`, плюс `goodwill` при `goodwill_enabled`
|
||||
и `other_report` при `scenario = CONFIRM`. Запись SHALL не переводить прежний срез в архив и SHALL ставить
|
||||
`superseded_by_snapshot_id` архивным срезам той же ГК и даты без ссылки. Повторная попытка по той же версии второй срез
|
||||
не пишет. Запись SHALL писать `audit_event(EX_SNAPSHOT_WRITE)`.
|
||||
|
||||
#### Scenario: Первая верификация
|
||||
- **WHEN** версия № 1 ГСК за 01.10.2025 переходит в «Верифицирован», срезов этой ГСК и даты нет
|
||||
- **THEN** записан срез № 1 `ACTUAL` с элементами по §14 п. 3, `kfo_result.is_frozen = true`, событие `EX_SNAPSHOT_WRITE`
|
||||
|
||||
#### Scenario: Новая версия после ручного архива
|
||||
- **WHEN** срез № 1 той же ГК и даты заархивирован вручную, и версия № 3 переходит в «Верифицирован»
|
||||
- **THEN** записан срез № 2 `ACTUAL`, срез № 1 остаётся `ARCHIVE` и получает `superseded_by_snapshot_id` среза № 2
|
||||
|
||||
#### Scenario: Гудвилл выключен
|
||||
- **WHEN** у версии `goodwill_enabled = false`
|
||||
- **THEN** элемента `goodwill` в срезе нет
|
||||
|
||||
### Requirement: Payload элемента среза
|
||||
`ex_snapshot_item.payload` всех типов, кроме `primary_document`, SHALL проходить `contracts/ex-payload-v1.schema.json`:
|
||||
конверт `{schema_version: "1.0", item_type, units, generated_at, source_version_no, data}`, где `item_type` совпадает с
|
||||
колонкой, `units` — единица типа (`rub` / `thousand_rub` / `none`), `data` — ответ API экрана рабочей версии на момент
|
||||
верификации без полей редактирования; `payload_schema_version = "1.0"`. Чтение и выгрузка среза SHALL опираться только на
|
||||
payload и ссылки на `document`, `legal_entity`, `related_group`, `company_group`, `app_user`.
|
||||
|
||||
#### Scenario: Элемент КФО
|
||||
- **WHEN** пишется элемент `kfo_balance`
|
||||
- **THEN** его payload — `units = "thousand_rub"`, `data` с `balance.lines`, `summary`, `requisites.corrections_balance`
|
||||
и без `income`; схема его принимает
|
||||
|
||||
#### Scenario: Несоответствие типа
|
||||
- **WHEN** у элемента `item_type = kfo_balance`, а `data` — таблица гудвилла
|
||||
- **THEN** схема payload его отклоняет
|
||||
|
||||
#### Scenario: Чтение без таблиц консолидации
|
||||
- **WHEN** рабочие таблицы версии удалены по сроку
|
||||
- **THEN** срез открывается и выгружается: строки КФО, шахматка, агрегаты ВГО — из payload, первичка — по `document_id`
|
||||
10
openspec/changes/ex-payload-schema/tasks.md
Normal file
10
openspec/changes/ex-payload-schema/tasks.md
Normal file
@ -0,0 +1,10 @@
|
||||
# Tasks: ex-payload-schema (docs #208)
|
||||
|
||||
План — `plans/2026-11-06-ex-payload.md`.
|
||||
|
||||
- [x] 1. `contracts/ex-payload-v1.schema.json`, примеры `contracts/examples/ex-payload-*.json`, генератор и тест `scripts/kfo_contract/`, `validate_contracts.py`
|
||||
- [x] 2. `05-domain-rules.md` §14, DBML v5.26 (пункты 6–8), `entities-v5.26.md`, OQ-195…198, `09-delivery-plan.md`
|
||||
- [ ] 3. Spec delta, финальное ревью, PR (после #207), вложения в AURORA-1560
|
||||
- [ ] 4. Документы контекста после merge кода 1560/2001: `09-delivery-plan` (Срез 7)
|
||||
|
||||
Дочерний change — `arm-core` (AURORA-1560); заводит исполнитель.
|
||||
Loading…
x
Reference in New Issue
Block a user