kfo-table-back: убрал поле kfo_result.snapshot
This commit is contained in:
parent
5c8f9a39cc
commit
ba507fa405
@ -4,13 +4,10 @@
|
|||||||
// Над каждой таблицей — блок «ИСТОЧНИК»: пункт ТЗ АРМ КА BIQ-34 / ТЗ ЕХФД (помечено «ЕХ ТЗ») / Методика;
|
// Над каждой таблицей — блок «ИСТОЧНИК»: пункт ТЗ АРМ КА BIQ-34 / ТЗ ЕХФД (помечено «ЕХ ТЗ») / Методика;
|
||||||
// страница аналитики (md); экран макета dkb_24.09.26; версия модели, в которой таблица появилась (v4 = исходная DBML аналитики).
|
// страница аналитики (md); экран макета dkb_24.09.26; версия модели, в которой таблица появилась (v4 = исходная DBML аналитики).
|
||||||
//
|
//
|
||||||
|
// v5.27: kfo_result.snapshot не вводится; до заморозки сохраняются только ручные поля.
|
||||||
// v5.27 (arm-core feat/kfo-table-back, миграция 0014_dbml_v5_27):
|
// v5.27 (arm-core feat/kfo-table-back, миграция 0014_dbml_v5_27):
|
||||||
// 1. vgo_assignment.side: D/K для ОФР, NULL для ББ (DOC-277424 §3.4).
|
// 1. vgo_assignment.side: D/K для ОФР, NULL для ББ (DOC-277424 §3.4).
|
||||||
// Уникальность ББ — версия/тип/строка; ОФР — версия/тип/строка/сторона.
|
// Уникальность ББ — версия/тип/строка; ОФР — версия/тип/строка/сторона.
|
||||||
// 2. kfo_result.snapshot boolean NOT NULL DEFAULT true: true = результат неактуален,
|
|
||||||
// false = пересчёт не требуется. Суммы хранятся в kfo_result_line/_company, не в JSON.
|
|
||||||
// Инвалидация и сброс признака выполняются в транзакциях изменения и расчёта;
|
|
||||||
// замороженные результаты не инвалидируются. Старые незамороженные результаты получают true.
|
|
||||||
// 3. correction.ordinal не вводится: основная строка задаётся parent_correction_id,
|
// 3. correction.ordinal не вводится: основная строка задаётся parent_correction_id,
|
||||||
// дополнительные строки выводятся в стабильном порядке ID, порядок ввода не хранится.
|
// дополнительные строки выводятся в стабильном порядке ID, порядок ввода не хранится.
|
||||||
// Порядок колонок kfo_result_line_company отражает последовательность ALTER TABLE v5.26.
|
// Порядок колонок kfo_result_line_company отражает последовательность ALTER TABLE v5.26.
|
||||||
@ -1465,7 +1462,6 @@ Table kfo_result {
|
|||||||
corrections_count_ofr int
|
corrections_count_ofr int
|
||||||
corrections_amount_bb numeric(18,2) [note: 'v5.26: Σ исключений этих корректировок обеих сторон = Σ eliminated_manual строк бланка ББ без итогов, тыс. руб.']
|
corrections_amount_bb numeric(18,2) [note: 'v5.26: Σ исключений этих корректировок обеих сторон = Σ eliminated_manual строк бланка ББ без итогов, тыс. руб.']
|
||||||
corrections_amount_ofr numeric(18,2)
|
corrections_amount_ofr numeric(18,2)
|
||||||
snapshot boolean [not null, default: true, note: 'v5.27: true — требуется пересчёт, false — результат актуален; не JSON-снимок']
|
|
||||||
Note: 'Шапка результата КФО + контрольные пороги. Все суммы — тыс. руб. (§8 «КФО»); одна запись на версию, пересчитывается при чтении после изменения входов, пока не is_frozen'
|
Note: 'Шапка результата КФО + контрольные пороги. Все суммы — тыс. руб. (§8 «КФО»); одна запись на версию, пересчитывается при чтении после изменения входов, пока не is_frozen'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,46 +1,24 @@
|
|||||||
# Модель данных v5.27 — КФО и позиции ВГО
|
# Модель данных v5.27 — КФО без сохранения промежуточного расчёта
|
||||||
|
|
||||||
Ветка: `feat/kfo-table-back`. Миграция arm-core: `0014_dbml_v5_27`, после `0013_dbml_v5_26`.
|
Миграция arm-core: `0014_dbml_v5_27`, после `0013_dbml_v5_26`.
|
||||||
База: [v5.26](entities-v5.26.md). Полная схема: [data-model-v5.27.dbml](data-model-v5.27.dbml).
|
База: [v5.26](entities-v5.26.md). Схема: [data-model-v5.27.dbml](data-model-v5.27.dbml).
|
||||||
|
|
||||||
## vgo_assignment.side
|
Поле `kfo_result.snapshot` не вводится. Незамороженная таблица рассчитывается при каждом GET без записи в БД.
|
||||||
|
До заморозки в `kfo_result` сохраняется обоснование порогов, в `consolidation_version` — отклонения
|
||||||
|
от методологии, в `kfo_result_line` — только строки с непустыми комментариями. Расчётные ячейки компаний
|
||||||
|
не создаются. Обязательное `consolidated_amount` строки комментария равно 0 и не используется при чтении;
|
||||||
|
`computed_at` шапки при её создании заполняется временем расчёта ответа PUT, а не временем заморозки.
|
||||||
|
|
||||||
Nullable varchar: для ББ NULL, для ОФР только D или K. Это отдельные ручные решения для дебетовой
|
При переходе в VERIFIED таблица рассчитывается по текущим источникам, ручные поля накладываются на неё,
|
||||||
и кредитовой позиции исходной строки ОСВ (DOC-277424 §3.4).
|
полный результат сохраняется и получает `is_frozen = true` в одной транзакции с переходом статуса.
|
||||||
|
После заморозки GET читает сохранённый результат. Повторная заморозка не пересчитывает результат.
|
||||||
|
|
||||||
Прежний уникальный индекс заменяется двумя частичными:
|
Миграция удаляет прежний расчётный кэш незамороженных таблиц, сохраняя комментарии, обоснования
|
||||||
|
и отклонения от методологии. Замороженные суммы не изменяются. Удалённый промежуточный расчёт при downgrade не восстанавливается.
|
||||||
|
|
||||||
- balance: `(consolidation_version_id, statement_type, osv_entry_id)`;
|
`vgo_assignment.side` добавляется по DOC-277424 §3.4: NULL для ББ, D/K для ОФР.
|
||||||
- income: `(consolidation_version_id, statement_type, osv_entry_id, side)`.
|
Уникальность ББ — версия/тип/строка, ОФР — версия/тип/строка/сторона. Старые назначения
|
||||||
|
ASSIGN переносятся по счетам правил, неоднозначные решения блокируют миграцию;
|
||||||
Существующие income ASSIGN переносятся по счетам зафиксированной версии правила с учётом иерархии
|
UNASSIGNED переносится на D и K. Откат запрещён при конфликте старого уникального ключа.
|
||||||
и исключений; при неоднозначности миграция откатывается. UNASSIGNED переносится на обе стороны.
|
`correction.ordinal` не вводится; дополнительные строки упорядочиваются по ID. Поле API `data_changed` сохраняется
|
||||||
ББ остаётся без стороны. Откат запрещён, если две позиции одной строки не помещаются в старый ключ.
|
для совместимости и всегда равно false: отдельного состояния неактуального сохранённого расчёта больше нет.
|
||||||
|
|
||||||
## kfo_result.snapshot
|
|
||||||
|
|
||||||
Boolean NOT NULL DEFAULT true. Несмотря на имя, поле не содержит снимок JSON:
|
|
||||||
|
|
||||||
- true — входные данные изменились, нужен пересчёт;
|
|
||||||
- false — сохранённый расчёт актуален.
|
|
||||||
|
|
||||||
После сохранённого изменения периметра, документов, формы, сопоставления, разнесения, корректировок
|
|
||||||
или гудвилла признак выставляется той же транзакцией. GET пересчитывает помеченный результат и
|
|
||||||
сбрасывает признак только при успешном сохранении. is_frozen защищает от пересчёта и инвалидации;
|
|
||||||
существующие замороженные результаты при миграции получают false.
|
|
||||||
|
|
||||||
Сами суммы, комментарии, доли и предупреждения остаются в предусмотренных таблицах kfo_result,
|
|
||||||
kfo_result_line и kfo_result_line_company. Исторические названия компаний и полный набор реквизитов
|
|
||||||
в отдельном JSON больше не сохраняются.
|
|
||||||
|
|
||||||
## Корректировки
|
|
||||||
|
|
||||||
`correction.ordinal` не добавляется. Основная строка определяется через parent_correction_id;
|
|
||||||
дополнительные строки упорядочиваются по ID. Порядок ввода дополнительных строк не сохраняется.
|
|
||||||
Если исключение ограничено суммой, это порядок применения дополнительных строк.
|
|
||||||
|
|
||||||
## Граница v5.26 / v5.27
|
|
||||||
|
|
||||||
v5.26 содержит только изменения, описанные в data-model-v5.26.dbml: показатели компаний, предупреждения,
|
|
||||||
сводки корректировок и события KFO_EDIT/EX_SNAPSHOT_WRITE. side и булевый snapshot вводятся только в v5.27.
|
|
||||||
Наличие EX_SNAPSHOT_WRITE в enum не означает реализации процесса записи среза ЕХ.
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user