Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
f340760e84
commit
f0af8d59f5
@ -1198,7 +1198,7 @@ OQ — менять по ответу.
|
|||||||
| VERIFICATION_RF | CONSOLIDATION_RF | РКА РФ | вернул (комментарий обязателен) |
|
| VERIFICATION_RF | CONSOLIDATION_RF | РКА РФ | вернул (комментарий обязателен) |
|
||||||
| CONSOLIDATION_GO | CONSOLIDATION_RF | КА ГО | вернул на доработку (комментарий) |
|
| CONSOLIDATION_GO | CONSOLIDATION_RF | КА ГО | вернул на доработку (комментарий) |
|
||||||
| CONSOLIDATION_GO | VERIFICATION_GO | КА ГО | если инициатор — КА ГО, верифицирует РКА ГО [открыто] |
|
| CONSOLIDATION_GO | VERIFICATION_GO | КА ГО | если инициатор — КА ГО, верифицирует РКА ГО [открыто] |
|
||||||
| CONSOLIDATION_GO / VERIFICATION_GO | VERIFIED | КА ГО / РКА ГО | внесены № и дата решения УОБ; версия read-only; пишется `ex_snapshot` (§14) |
|
| CONSOLIDATION_GO / VERIFICATION_GO | VERIFIED | КА ГО / РКА ГО | внесены № и дата решения УОБ; версия read-only; пишется `ex_snapshot` (§15) |
|
||||||
| любой нефинальный | INITIATED | КА | нужен другой периметр/сценарий/комплект |
|
| любой нефинальный | INITIATED | КА | нужен другой периметр/сценарий/комплект |
|
||||||
| любой нефинальный | CANCELLED | КА | аннулировано |
|
| любой нефинальный | CANCELLED | КА | аннулировано |
|
||||||
| VERIFIED | — | — | только «новая версия» (`previous_version_id`) |
|
| VERIFIED | — | — | только «новая версия» (`previous_version_id`) |
|
||||||
@ -1698,7 +1698,7 @@ OQ-92 (пустые «Организация»/«Группа компаний»
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## §14. Срез ЕХ при верификации (DOC-274687, DOC-274686, DOC-274685; ЕХ ТЗ 5.2, 6.2–6.4; AURORA-1560 — запись, AURORA-2001 — чтение и архив, AURORA-2002 — переход; ещё не реализовано)
|
## §15. Срез ЕХ при верификации (DOC-274687, DOC-274686, DOC-274685; ЕХ ТЗ 5.2, 6.2–6.4; AURORA-1560 — запись, AURORA-2001 — чтение и архив, AURORA-2002 — переход; ещё не реализовано)
|
||||||
|
|
||||||
Срез — неизменяемая самодостаточная заморозка верифицированной версии: его читают и выгружают, когда рабочих таблиц
|
Срез — неизменяемая самодостаточная заморозка верифицированной версии: его читают и выгружают, когда рабочих таблиц
|
||||||
консолидации уже нет (решение команды 28–29.09.2026). Схема данных — `contracts/ex-payload-v1.schema.json` (генерируется
|
консолидации уже нет (решение команды 28–29.09.2026). Схема данных — `contracts/ex-payload-v1.schema.json` (генерируется
|
||||||
|
|||||||
@ -198,7 +198,7 @@
|
|||||||
| OQ-192 | Пересчёт КФО: автоматически после каждого изменения (Excel Р-11, Р-23), по кнопке «Рассчитать КФО» с пометкой «устарела» (FNR03) или только при открытии? | DOC-274636 «Расчёт КФО» (черновик), «Что решить», вопрос 16; AURORA-1417 | §8 «КФО» п. 12 | открыт, вопрос заказчику; допущение принято (docs #206): автоматически: чтение пересчитывает устаревший результат, кнопки нет |
|
| OQ-192 | Пересчёт КФО: автоматически после каждого изменения (Excel Р-11, Р-23), по кнопке «Рассчитать КФО» с пометкой «устарела» (FNR03) или только при открытии? | DOC-274636 «Расчёт КФО» (черновик), «Что решить», вопрос 16; AURORA-1417 | §8 «КФО» п. 12 | открыт, вопрос заказчику; допущение принято (docs #206): автоматически: чтение пересчитывает устаревший результат, кнопки нет |
|
||||||
| OQ-193 | Правило ББ 1 (76.7.1 / 76.7.9) автоматически по DOC-274230: обе суммы — у компании 2 (Кт 76.7.1 − Дт 76.7.9, каскад 1150 → 1450 → 1550), а сторона агрегата §5 устроена «компания 1 — сторона 1». Как переложить правило в seed (стороны, режим)? | DOC-274230 правило 1; `arm-core/api/seed/core/elimination_rules_v1.yaml` | §5 п. 1, §8 «КФО» п. 4 | открыт, задача команды (follow-up AURORA-1546); до решения правило 1 — `manual`, только корректировкой |
|
| OQ-193 | Правило ББ 1 (76.7.1 / 76.7.9) автоматически по DOC-274230: обе суммы — у компании 2 (Кт 76.7.1 − Дт 76.7.9, каскад 1150 → 1450 → 1550), а сторона агрегата §5 устроена «компания 1 — сторона 1». Как переложить правило в seed (стороны, режим)? | DOC-274230 правило 1; `arm-core/api/seed/core/elimination_rules_v1.yaml` | §5 п. 1, §8 «КФО» п. 4 | открыт, задача команды (follow-up AURORA-1546); до решения правило 1 — `manual`, только корректировкой |
|
||||||
| OQ-194 | КФО при неполном комплекте документов (обязательный комплект и проверки перед расчётом отложены, Excel В-01, В-08): считать по тому, что подтверждено и привязано, с предупреждением, или не считать, пока комплект не полон? | DOC-274636 «Расчёт КФО» (черновик), «Что решить», допущение 17 | §8 «КФО» п. 2 | открыт, вопрос заказчику; допущение принято (docs #206): считать, у компании без формы — нули и `FORM_MISSING` |
|
| OQ-194 | КФО при неполном комплекте документов (обязательный комплект и проверки перед расчётом отложены, Excel В-01, В-08): считать по тому, что подтверждено и привязано, с предупреждением, или не считать, пока комплект не полон? | DOC-274636 «Расчёт КФО» (черновик), «Что решить», допущение 17 | §8 «КФО» п. 2 | открыт, вопрос заказчику; допущение принято (docs #206): считать, у компании без формы — нули и `FORM_MISSING` |
|
||||||
| OQ-195 | Кто переводит прежний срез ЕХ в архив: вручную до верификации новой версии (Excel статусно-ролевой модели, Р-35) или автоматически при записи нового среза (ЕХ ТЗ 6.4)? | DOC-274686 «Версии и прошлые периоды», вопрос 1; AURORA-1397 | §14 п. 2 | открыт, вопрос заказчику (аналитик — AURORA-1397); допущение принято (docs #208): вручную, запись нового среза прежний не архивирует |
|
| OQ-195 | Кто переводит прежний срез ЕХ в архив: вручную до верификации новой версии (Excel статусно-ролевой модели, Р-35) или автоматически при записи нового среза (ЕХ ТЗ 6.4)? | DOC-274686 «Версии и прошлые периоды», вопрос 1; AURORA-1397 | §15 п. 2 | открыт, вопрос заказчику (аналитик — AURORA-1397); допущение принято (docs #208): вручную, запись нового среза прежний не архивирует |
|
||||||
| OQ-196 | Ключ «того же периода» для одного актуального среза и блокировки верификации: ГК × дата (решения Excel Р-35/Р-36) или ГСК × дата (ЕХ ТЗ 6.2, 6.4)? | DOC-274686, вопрос 2; AURORA-1397 | §14 п. 2; AURORA-2002 | открыт, вопрос заказчику; допущение: ГК × дата для «один актуальный» и `superseded_by_snapshot_id`, нумерация — по ГСК (индекс модели) |
|
| OQ-196 | Ключ «того же периода» для одного актуального среза и блокировки верификации: ГК × дата (решения Excel Р-35/Р-36) или ГСК × дата (ЕХ ТЗ 6.2, 6.4)? | DOC-274686, вопрос 2; AURORA-1397 | §15 п. 2; AURORA-2002 | открыт, вопрос заказчику; допущение: ГК × дата для «один актуальный» и `superseded_by_snapshot_id`, нумерация — по ГСК (индекс модели) |
|
||||||
| OQ-197 | Срез при верификации не записался: повторять запись с признаком «не передана в ЕХ», делать верификацию и запись одной операцией или не повторять? | DOC-274687, вопрос 6; Excel 13.10.2026 («механизм повторной передачи не определён») | §14 п. 9 | открыт, вопрос заказчику; допущение: верификация остаётся, признак вычисляется (VERIFIED без среза), такая версия блокирует финал следующей |
|
| OQ-197 | Срез при верификации не записался: повторять запись с признаком «не передана в ЕХ», делать верификацию и запись одной операцией или не повторять? | DOC-274687, вопрос 6; Excel 13.10.2026 («механизм повторной передачи не определён») | §15 п. 9 | открыт, вопрос заказчику; допущение: верификация остаётся, признак вычисляется (VERIFIED без среза), такая версия блокирует финал следующей |
|
||||||
| OQ-198 | Нужен ли PDF «Консолидированная отчётность» в ЕХ (макет [83-01]) и что в нём? | DOC-274687, вопрос 2; макет [83-01]; ЕХ ТЗ 6.7.3 | §14 п. 10 | открыт, вопрос заказчику (продолжение OQ-39); допущение: не формируется и не хранится, xlsx — из payload на лету |
|
| OQ-198 | Нужен ли PDF «Консолидированная отчётность» в ЕХ (макет [83-01]) и что в нём? | DOC-274687, вопрос 2; макет [83-01]; ЕХ ТЗ 6.7.3 | §15 п. 10 | открыт, вопрос заказчику (продолжение OQ-39); допущение: не формируется и не хранится, xlsx — из payload на лету |
|
||||||
|
|||||||
@ -284,7 +284,7 @@ DATA_CORRECTION, истечение блокировки, `period_check`, пор
|
|||||||
## Срез 7 — Маршрут согласования, ЕХ, журнал, выгрузки
|
## Срез 7 — Маршрут согласования, ЕХ, журнал, выгрузки
|
||||||
|
|
||||||
- Полная машина статусов §9.1 с `consolidation_status_history`, policy по ролям/филиалам; № и дата УОБ; новая версия.
|
- Полная машина статусов §9.1 с `consolidation_status_history`, policy по ролям/филиалам; № и дата УОБ; новая версия.
|
||||||
- `VERIFIED` → `ex_snapshot/_member/_item` (payload по схеме `docs/contracts/ex-payload-v1.schema.json`, правила — `05-domain-rules.md` §14); read-only.
|
- `VERIFIED` → `ex_snapshot/_member/_item` (payload по схеме `docs/contracts/ex-payload-v1.schema.json`, правила — `05-domain-rules.md` §15); read-only.
|
||||||
- ЛК ЕХ: дерево ГК → ГСК → организации, просмотр payload, скачивание первички, выгрузка xlsx на лету.
|
- ЛК ЕХ: дерево ГК → ГСК → организации, просмотр payload, скачивание первички, выгрузка xlsx на лету.
|
||||||
- Журнал действий: экран с фильтрами по разделам/объектам/полям.
|
- Журнал действий: экран с фильтрами по разделам/объектам/полям.
|
||||||
- Экспорт: настраиваемые колонки, `audit_event(EXPORT)`, S3 `exports/` 7 дней.
|
- Экспорт: настраиваемые колонки, `audit_event(EXPORT)`, S3 `exports/` 7 дней.
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
"$id": "ex-payload-v1.schema.json",
|
"$id": "ex-payload-v1.schema.json",
|
||||||
"title": "Элемент среза ЕХ: ex_snapshot_item.payload, версия 1.0",
|
"title": "Элемент среза ЕХ: ex_snapshot_item.payload, версия 1.0",
|
||||||
"description": "Конверт замороженных данных элемента среза ЕХ (context/05-domain-rules.md §14). data — ответ API экрана рабочей версии на момент верификации без полей редактирования; у primary_document payload нет. Сгенерировано scripts/kfo_contract/gen_ex_payload.py — руками не править.",
|
"description": "Конверт замороженных данных элемента среза ЕХ (context/05-domain-rules.md §15). data — ответ API экрана рабочей версии на момент верификации без полей редактирования; у primary_document payload нет. Сгенерировано scripts/kfo_contract/gen_ex_payload.py — руками не править.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"required": [
|
"required": [
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
// consolidated_amount = sum − vgo + goodwill_adjust). Структура не меняется.
|
// consolidated_amount = sum − vgo + goodwill_adjust). Структура не меняется.
|
||||||
// 6. ex_snapshot_item.item_type: + version_card — карточка версии на дату верификации (участники маршрута с ФИО, решение
|
// 6. ex_snapshot_item.item_type: + version_card — карточка версии на дату верификации (участники маршрута с ФИО, решение
|
||||||
// УОБ, обоснования, состав); payload — конверт contracts/ex-payload-v1.schema.json (у primary_document — null),
|
// УОБ, обоснования, состав); payload — конверт contracts/ex-payload-v1.schema.json (у primary_document — null),
|
||||||
// payload_schema_version = "1.0" (RSHB/arm-ka-docs#208, AURORA-1560; context/05-domain-rules.md §14).
|
// payload_schema_version = "1.0" (RSHB/arm-ka-docs#208, AURORA-1560; context/05-domain-rules.md §15).
|
||||||
// 7. audit_action: + EX_SNAPSHOT_WRITE — запись среза ЕХ при «Верифицирован», раздел KFO.
|
// 7. audit_action: + EX_SNAPSHOT_WRITE — запись среза ЕХ при «Верифицирован», раздел KFO.
|
||||||
// 8. ex_snapshot.status: пояснение под ручной архив (решение 27.10.2026) — ACTUAL «не архивирован», а не «последняя
|
// 8. ex_snapshot.status: пояснение под ручной архив (решение 27.10.2026) — ACTUAL «не архивирован», а не «последняя
|
||||||
// верифицированная»; запись среза прежний в архив не переводит. Структура не меняется.
|
// верифицированная»; запись среза прежний в архив не переводит. Структура не меняется.
|
||||||
@ -543,7 +543,7 @@ Enum audit_action {
|
|||||||
CORRECTION_EDIT
|
CORRECTION_EDIT
|
||||||
CORRECTION_REVOKE
|
CORRECTION_REVOKE
|
||||||
GOODWILL_EDIT
|
GOODWILL_EDIT
|
||||||
EX_SNAPSHOT_WRITE [note: 'v5.26: запись среза ЕХ при «Верифицирован» (§14); раздел KFO, object_type = ex_snapshot']
|
EX_SNAPSHOT_WRITE [note: 'v5.26: запись среза ЕХ при «Верифицирован» (§15); раздел KFO, object_type = ex_snapshot']
|
||||||
KFO_EDIT [note: 'v5.26: ручные поля КФО — комментарии строк, обоснование порога, причины отклонений от Методики; раздел KFO']
|
KFO_EDIT [note: 'v5.26: ручные поля КФО — комментарии строк, обоснование порога, причины отклонений от Методики; раздел KFO']
|
||||||
EXPORT
|
EXPORT
|
||||||
DIRECTORY_IMPORT
|
DIRECTORY_IMPORT
|
||||||
@ -1553,13 +1553,13 @@ Table ex_snapshot {
|
|||||||
year smallint [not null]
|
year smallint [not null]
|
||||||
quarter period_quarter [not null]
|
quarter period_quarter [not null]
|
||||||
version_no int [not null]
|
version_no int [not null]
|
||||||
status ex_snapshot_status [not null, note: 'v5.26: ACTUAL — не архивирован; ARCHIVE — архивирован пользователем в ЕХ (ручной архив, решение 27.10.2026); запись нового среза прежний не архивирует (§14)']
|
status ex_snapshot_status [not null, note: 'v5.26: ACTUAL — не архивирован; ARCHIVE — архивирован пользователем в ЕХ (ручной архив, решение 27.10.2026); запись нового среза прежний не архивирует (§15)']
|
||||||
source_version_id uuid [not null, unique, note: 'v5.12: id consolidation_version-источника БЕЗ FK — источник удаляется по сроку, срез нет']
|
source_version_id uuid [not null, unique, note: 'v5.12: id consolidation_version-источника БЕЗ FK — источник удаляется по сроку, срез нет']
|
||||||
source_version_no int [not null]
|
source_version_no int [not null]
|
||||||
superseded_by_snapshot_id uuid [ref: > ex_snapshot.id, note: 'v5.12: для ARCHIVE — ссылка на актуальный срез, который его заместил']
|
superseded_by_snapshot_id uuid [ref: > ex_snapshot.id, note: 'v5.12: для ARCHIVE — ссылка на актуальный срез, который его заместил']
|
||||||
verified_at timestamptz [not null]
|
verified_at timestamptz [not null]
|
||||||
written_at timestamptz [not null]
|
written_at timestamptz [not null]
|
||||||
written_by uuid [ref: > app_user.id, note: 'инициатор записи = пользователь, выполнивший переход «Верифицирован» (v5.26, §14)']
|
written_by uuid [ref: > app_user.id, note: 'инициатор записи = пользователь, выполнивший переход «Верифицирован» (v5.26, §15)']
|
||||||
archived_at timestamptz
|
archived_at timestamptz
|
||||||
data_lake_ref varchar [note: 'ссылка на архив в data lake']
|
data_lake_ref varchar [note: 'ссылка на архив в data lake']
|
||||||
Indexes {
|
Indexes {
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
| 3 | `audit_action` + `KFO_EDIT` | Сохранение ручных полей КФО (комментарии строк, обоснование порога, причины отклонений от Методики) — раздел `KFO`; подходящего действия не было |
|
| 3 | `audit_action` + `KFO_EDIT` | Сохранение ручных полей КФО (комментарии строк, обоснование порога, причины отклонений от Методики) — раздел `KFO`; подходящего действия не было |
|
||||||
| 4 | `elimination_rule.elimination_mode` — значение `min_or_full` | Правило ББ 2 по DOC-274230: `min` при обеих сторонах, сторона 1 при пустой стороне 2, без порога 5 %; строки ДО — каскадом 1310 → 1350 → 1370. Поле varchar — схема не меняется; seed v1 правится на месте в AURORA-1546 |
|
| 4 | `elimination_rule.elimination_mode` — значение `min_or_full` | Правило ББ 2 по DOC-274230: `min` при обеих сторонах, сторона 1 при пустой стороне 2, без порога 5 %; строки ДО — каскадом 1310 → 1350 → 1370. Поле varchar — схема не меняется; seed v1 правится на месте в AURORA-1546 |
|
||||||
| 5 | Пояснения `kfo_result_line`, `kfo_result` | Приведены к §8 «КФО»: всё в тыс. руб.; корректировка агрегата заменяет его автосумму (`eliminated_auto` и `eliminated_manual` по одному агрегату не складываются); `GOODWILL` — служебная строка раздела I, входит в 1100/1600 |
|
| 5 | Пояснения `kfo_result_line`, `kfo_result` | Приведены к §8 «КФО»: всё в тыс. руб.; корректировка агрегата заменяет его автосумму (`eliminated_auto` и `eliminated_manual` по одному агрегату не складываются); `GOODWILL` — служебная строка раздела I, входит в 1100/1600 |
|
||||||
| 6 | `ex_snapshot_item.item_type` + `version_card`; payload — по `contracts/ex-payload-v1.schema.json` | Карточка версии (участники маршрута с ФИО, решение УОБ, обоснования, состав) — элементом среза, а не колонками `ex_snapshot`: версия КФО удаляется раньше среза, а схему таблицы не трогаем. Схема payload — конверт и данные по каждому типу (`context/05-domain-rules.md` §14; docs #208) |
|
| 6 | `ex_snapshot_item.item_type` + `version_card`; payload — по `contracts/ex-payload-v1.schema.json` | Карточка версии (участники маршрута с ФИО, решение УОБ, обоснования, состав) — элементом среза, а не колонками `ex_snapshot`: версия КФО удаляется раньше среза, а схему таблицы не трогаем. Схема payload — конверт и данные по каждому типу (`context/05-domain-rules.md` §15; docs #208) |
|
||||||
| 7 | `audit_action` + `EX_SNAPSHOT_WRITE` | Запись среза при «Верифицирован» — раздел `KFO` (раздела `EX` нет) |
|
| 7 | `audit_action` + `EX_SNAPSHOT_WRITE` | Запись среза при «Верифицирован» — раздел `KFO` (раздела `EX` нет) |
|
||||||
| 8 | Пояснение `ex_snapshot.status` | Архив прежнего среза ручной (решение 27.10.2026): `ACTUAL` — «не архивирован», а не «последняя верифицированная» |
|
| 8 | Пояснение `ex_snapshot.status` | Архив прежнего среза ручной (решение 27.10.2026): `ACTUAL` — «не архивирован», а не «последняя верифицированная» |
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ Change `ex-payload-schema`, issue RSHB/arm-ka-docs#208, ветка `feat/208-ex-
|
|||||||
|
|
||||||
## 2. Цели, не цели, анти-цели
|
## 2. Цели, не цели, анти-цели
|
||||||
|
|
||||||
**Цели** — схема конверта и данных по каждому `item_type`, примеры, проверка в `make check`; правила среза в §14; правки
|
**Цели** — схема конверта и данных по каждому `item_type`, примеры, проверка в `make check`; правила среза в §15; правки
|
||||||
DBML, без которых схему не записать (`version_card`, действие журнала).
|
DBML, без которых схему не записать (`version_card`, действие журнала).
|
||||||
|
|
||||||
**Не цели** — `proposal.md`.
|
**Не цели** — `proposal.md`.
|
||||||
@ -73,7 +73,7 @@ proposal, AURORA-1562). Обязательные поля задаёт схем
|
|||||||
|
|
||||||
`UserRef {user_id, full_name}` — ФИО на дату верификации (пользователь может быть отключён, но не удаляется).
|
`UserRef {user_id, full_name}` — ФИО на дату верификации (пользователь может быть отключён, но не удаляется).
|
||||||
|
|
||||||
### 4.3 Правила среза — §14 `05-domain-rules.md`
|
### 4.3 Правила среза — §15 `05-domain-rules.md`
|
||||||
|
|
||||||
Выжимка DOC-274687 под нашу модель: срез пишется один раз при «Верифицирован» (после фиксации ГСК, AURORA-2002), один на
|
Выжимка DOC-274687 под нашу модель: срез пишется один раз при «Верифицирован» (после фиксации ГСК, AURORA-2002), один на
|
||||||
версию (`source_version_id` уникален); состав — таблица 4.2 + `primary_document` по каждому документу
|
версию (`source_version_id` уникален); состав — таблица 4.2 + `primary_document` по каждому документу
|
||||||
@ -100,12 +100,12 @@ proposal, AURORA-1562). Обязательные поля задаёт схем
|
|||||||
|
|
||||||
### 4.5 Вложения в Jira
|
### 4.5 Вложения в Jira
|
||||||
|
|
||||||
После открытия PR: AURORA-1560 — схема, §14 (`05-domain-rules.md`), DBML; комментарий со ссылкой на PR. AURORA-2001 —
|
После открытия PR: AURORA-1560 — схема, §15 (`05-domain-rules.md`), DBML; комментарий со ссылкой на PR. AURORA-2001 —
|
||||||
ссылка в комментарии (чтение — по той же схеме).
|
ссылка в комментарии (чтение — по той же схеме).
|
||||||
|
|
||||||
## 5. Что остаётся исполнителю плана
|
## 5. Что остаётся исполнителю плана
|
||||||
|
|
||||||
Точная разметка схемы (`$defs`, имена), тексты §14, числа примеров (из `scripts/kfo_contract/kfo_example.py`), какие
|
Точная разметка схемы (`$defs`, имена), тексты §15, числа примеров (из `scripts/kfo_contract/kfo_example.py`), какие
|
||||||
элементы показать примерами (минимум: `kfo_balance`, `version_card`, `corrections`, `summary_osv`).
|
элементы показать примерами (минимум: `kfo_balance`, `version_card`, `corrections`, `summary_osv`).
|
||||||
|
|
||||||
## 6. Decisions made without discussion
|
## 6. Decisions made without discussion
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||||||
|
|
||||||
**Goal:** схема `contracts/ex-payload-v1.schema.json` с примерами и проверкой, §14 правил и правки DBML v5.26 — к старту
|
**Goal:** схема `contracts/ex-payload-v1.schema.json` с примерами и проверкой, §15 правил и правки DBML v5.26 — к старту
|
||||||
AURORA-1560 (12.11.2026).
|
AURORA-1560 (12.11.2026).
|
||||||
|
|
||||||
**Architecture:** JSON Schema 2020-12: конверт + `data` по `item_type` через `$defs`; DTO-определения повторяют
|
**Architecture:** JSON Schema 2020-12: конверт + `data` по `item_type` через `$defs`; DTO-определения повторяют
|
||||||
@ -28,7 +28,7 @@ AURORA-1560 (12.11.2026).
|
|||||||
|
|
||||||
1. Конверт с `item_type`, не совпадающим с `data` (например, `kfo_balance` с данными гудвилла) — схема отклоняет.
|
1. Конверт с `item_type`, не совпадающим с `data` (например, `kfo_balance` с данными гудвилла) — схема отклоняет.
|
||||||
2. `kfo_balance` без `requisites.corrections_balance` — отклоняется (нужно форме 2.03.01.01с).
|
2. `kfo_balance` без `requisites.corrections_balance` — отклоняется (нужно форме 2.03.01.01с).
|
||||||
3. `goodwill` при выключенном гудвилле не пишется — правило в §14, не в схеме; пример — только включённый.
|
3. `goodwill` при выключенном гудвилле не пишется — правило в §15, не в схеме; пример — только включённый.
|
||||||
4. Деньги числом (`1000.5`) вместо строки — отклоняется.
|
4. Деньги числом (`1000.5`) вместо строки — отклоняется.
|
||||||
5. Пример `kfo_balance` совпадает с примером `goodwill_exceeded` контракта КФО по строкам и сводке.
|
5. Пример `kfo_balance` совпадает с примером `goodwill_exceeded` контракта КФО по строкам и сводке.
|
||||||
|
|
||||||
@ -49,13 +49,13 @@ Modify `scripts/validate_contracts.py` (+ схема `ex-payload`, шаблон
|
|||||||
- [ ] Step 3: Run тест и `make validate-contracts` — Expected: PASS, все `ex-payload-*` OK.
|
- [ ] Step 3: Run тест и `make validate-contracts` — Expected: PASS, все `ex-payload-*` OK.
|
||||||
- [ ] Step 4: commit.
|
- [ ] Step 4: commit.
|
||||||
|
|
||||||
### Task 2: §14, DBML, OQ
|
### Task 2: §15, DBML, OQ
|
||||||
|
|
||||||
**Files:** Modify `context/05-domain-rules.md` (+ §14 после §13), `model/data-model-v5.26.dbml`, `model/entities-v5.26.md`,
|
**Files:** Modify `context/05-domain-rules.md` (+ §15 после §13), `model/data-model-v5.26.dbml`, `model/entities-v5.26.md`,
|
||||||
`context/07-open-questions.md` (OQ-195…), `context/09-delivery-plan.md:287` (ссылка на §14).
|
`context/07-open-questions.md` (OQ-195…), `context/09-delivery-plan.md:287` (ссылка на §15).
|
||||||
|
|
||||||
- [ ] Step 1: Run `grep -c "EX_SNAPSHOT_WRITE\|version_card" model/data-model-v5.26.dbml` — Expected: 0 (RED).
|
- [ ] Step 1: Run `grep -c "EX_SNAPSHOT_WRITE\|version_card" model/data-model-v5.26.dbml` — Expected: 0 (RED).
|
||||||
- [ ] Step 2: §14 по design §4.3; DBML и entities по §4.4 (пункты changelog 6–8 v5.26); OQ: кто архивирует (ссылка
|
- [ ] Step 2: §15 по design §4.3; DBML и entities по §4.4 (пункты changelog 6–8 v5.26); OQ: кто архивирует (ссылка
|
||||||
на 1397), ключ ГК/ГСК, повтор при сбое, PDF.
|
на 1397), ключ ГК/ГСК, повтор при сбое, PDF.
|
||||||
- [ ] Step 3: Run тот же grep — Expected: ≥ 2; `make check` — зелёный.
|
- [ ] Step 3: Run тот же grep — Expected: ≥ 2; `make check` — зелёный.
|
||||||
- [ ] Step 4: commit.
|
- [ ] Step 4: commit.
|
||||||
|
|||||||
@ -17,7 +17,7 @@ AURORA-1560 (запись среза ЕХ при «Верифицирован»,
|
|||||||
(`summary_osv`, `vgo_pairs`, `chess`, `kfo_balance`, `kfo_income`, `goodwill`, `corrections`, `other_report`,
|
(`summary_osv`, `vgo_pairs`, `chess`, `kfo_balance`, `kfo_income`, `goodwill`, `corrections`, `other_report`,
|
||||||
`version_card`); примеры `contracts/examples/ex-payload-*.json` на числах сквозного примера §8 «КФО»; проверка в
|
`version_card`); примеры `contracts/examples/ex-payload-*.json` на числах сквозного примера §8 «КФО»; проверка в
|
||||||
`scripts/validate_contracts.py`.
|
`scripts/validate_contracts.py`.
|
||||||
- `context/05-domain-rules.md` — новый §14 «Срез ЕХ при верификации»: когда пишется, что входит, самодостаточность,
|
- `context/05-domain-rules.md` — новый §15 «Срез ЕХ при верификации»: когда пишется, что входит, самодостаточность,
|
||||||
суммы и единицы, сбой записи, корректировки только `APPLIED`, карточка версии.
|
суммы и единицы, сбой записи, корректировки только `APPLIED`, карточка версии.
|
||||||
- DBML v5.26 (та же неслитая версия, что в #207) — `ex_snapshot_item.item_type` + `version_card`, версия схемы
|
- DBML v5.26 (та же неслитая версия, что в #207) — `ex_snapshot_item.item_type` + `version_card`, версия схемы
|
||||||
`"1.0"`; `audit_action` + `EX_SNAPSHOT_WRITE`; пояснение `ex_snapshot.status` под ручной архив.
|
`"1.0"`; `audit_action` + `EX_SNAPSHOT_WRITE`; пояснение `ex_snapshot.status` под ручной архив.
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
### Requirement: Срез ЕХ при верификации
|
### Requirement: Срез ЕХ при верификации
|
||||||
При переходе версии консолидации в «Верифицирован» ядро SHALL один раз записать срез по `context/05-domain-rules.md`
|
При переходе версии консолидации в «Верифицирован» ядро SHALL один раз записать срез по `context/05-domain-rules.md`
|
||||||
§14: `ex_snapshot` со `status = ACTUAL` и номером, следующим по (ГСК, год, квартал); `ex_snapshot_member` по каждому ЮЛ
|
§15: `ex_snapshot` со `status = ACTUAL` и номером, следующим по (ГСК, год, квартал); `ex_snapshot_member` по каждому ЮЛ
|
||||||
версии; `ex_snapshot_item` — `primary_document` по каждому привязанному документу и по одному элементу `summary_osv`,
|
версии; `ex_snapshot_item` — `primary_document` по каждому привязанному документу и по одному элементу `summary_osv`,
|
||||||
`vgo_pairs`, `chess`, `kfo_balance`, `kfo_income`, `corrections`, `version_card`, плюс `goodwill` при `goodwill_enabled`
|
`vgo_pairs`, `chess`, `kfo_balance`, `kfo_income`, `corrections`, `version_card`, плюс `goodwill` при `goodwill_enabled`
|
||||||
и `other_report` при `scenario = CONFIRM`. Запись SHALL не переводить прежний срез в архив и SHALL ставить
|
и `other_report` при `scenario = CONFIRM`. Запись SHALL не переводить прежний срез в архив и SHALL ставить
|
||||||
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
#### Scenario: Первая верификация
|
#### Scenario: Первая верификация
|
||||||
- **WHEN** версия № 1 ГСК за 01.10.2025 переходит в «Верифицирован», срезов этой ГСК и даты нет
|
- **WHEN** версия № 1 ГСК за 01.10.2025 переходит в «Верифицирован», срезов этой ГСК и даты нет
|
||||||
- **THEN** записан срез № 1 `ACTUAL` с элементами по §14 п. 3, `kfo_result.is_frozen = true`, событие `EX_SNAPSHOT_WRITE`
|
- **THEN** записан срез № 1 `ACTUAL` с элементами по §15 п. 3, `kfo_result.is_frozen = true`, событие `EX_SNAPSHOT_WRITE`
|
||||||
|
|
||||||
#### Scenario: Новая версия после ручного архива
|
#### Scenario: Новая версия после ручного архива
|
||||||
- **WHEN** срез № 1 той же ГК и даты заархивирован вручную, и версия № 3 переходит в «Верифицирован»
|
- **WHEN** срез № 1 той же ГК и даты заархивирован вручную, и версия № 3 переходит в «Верифицирован»
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
План — `plans/2026-11-06-ex-payload.md`.
|
План — `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] 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`
|
- [x] 2. `05-domain-rules.md` §15, DBML v5.26 (пункты 6–8), `entities-v5.26.md`, OQ-195…198, `09-delivery-plan.md`
|
||||||
- [x] 3. Spec delta, финальное ревью, PR (после #207), вложения в AURORA-1560
|
- [x] 3. Spec delta, финальное ревью, PR (после #207), вложения в AURORA-1560
|
||||||
- [ ] 4. Документы контекста после merge кода 1560/2001: `09-delivery-plan` (Срез 7)
|
- [ ] 4. Документы контекста после merge кода 1560/2001: `09-delivery-plan` (Срез 7)
|
||||||
|
|
||||||
|
|||||||
@ -209,7 +209,7 @@ def schema():
|
|||||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
"$id": "ex-payload-v1.schema.json",
|
"$id": "ex-payload-v1.schema.json",
|
||||||
"title": "Элемент среза ЕХ: ex_snapshot_item.payload, версия 1.0",
|
"title": "Элемент среза ЕХ: ex_snapshot_item.payload, версия 1.0",
|
||||||
"description": "Конверт замороженных данных элемента среза ЕХ (context/05-domain-rules.md §14). data — ответ API "
|
"description": "Конверт замороженных данных элемента среза ЕХ (context/05-domain-rules.md §15). data — ответ API "
|
||||||
"экрана рабочей версии на момент верификации без полей редактирования; у primary_document "
|
"экрана рабочей версии на момент верификации без полей редактирования; у primary_document "
|
||||||
"payload нет. Сгенерировано scripts/kfo_contract/gen_ex_payload.py — руками не править.",
|
"payload нет. Сгенерировано scripts/kfo_contract/gen_ex_payload.py — руками не править.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user