docs: parent_code у строк statement, показ подстрок ББ/ОФР (#114, AURORA-1527)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
0fc940d072
commit
633bd4fca1
@ -523,6 +523,11 @@ variance = |amount_a − amount_b|; variance_pct = variance / min(amount_a, amou
|
|||||||
известный риск (`03-architecture.md`). Соотношение считается по каждой колонке и только если строка-цель (левая часть) есть в форме;
|
известный риск (`03-architecture.md`). Соотношение считается по каждой колонке и только если строка-цель (левая часть) есть в форме;
|
||||||
отсутствующий код и пустая сумма — 0 (ненулевые слагаемые при пустой цели дают жёсткое нарушение). Результат в ответе API: `failed` (жёсткие), `soft_failed` (мягкие, в
|
отсутствующий код и пустая сумма — 0 (ненулевые слагаемые при пустой цели дают жёсткое нарушение). Результат в ответе API: `failed` (жёсткие), `soft_failed` (мягкие, в
|
||||||
том числе «в пределах округления»), `cross_form`, `accepted`.
|
том числе «в пределах округления»), `cross_form`, `accepted`.
|
||||||
|
Показ пятизначных подстрок (AURORA-1527, решение владельца 16.10.2026): ядро отдаёт у каждой строки формы вычисляемое
|
||||||
|
`parent_code` — код четырёхзначного родителя подстроки по тому же правилу, что и проверка «сумма подстрок = родитель»
|
||||||
|
(п. 7 §12; одна функция в ядре, порядок кодов тот же); у остальных строк `null`. Экран показывает подстроки сразу под
|
||||||
|
родителем, пустые подстроки (нет значения ни в одной колонке) свёрнуты за переключателем; правила родителя на фронте нет.
|
||||||
|
Только показ: парсеры и данные не меняются.
|
||||||
Межформенная `1370(отчётная дата) − 1370(начало года) = 2400` — **мягкая** и не блокирует подтверждение: пара — другой
|
Межформенная `1370(отчётная дата) − 1370(начало года) = 2400` — **мягкая** и не блокирует подтверждение: пара — другой
|
||||||
документ формы того же ЮЛ с тем же годом и кварталом периода (файл не `SUPERSEDED`; подтверждённый предпочтительнее, далее
|
документ формы того же ЮЛ с тем же годом и кварталом периода (файл не `SUPERSEDED`; подтверждённый предпочтительнее, далее
|
||||||
самый поздний `created_at`); считается, только если найдены пара и обе колонки (ОФР часто приходит отдельным файлом позже).
|
самый поздний `created_at`); считается, только если найдены пара и обе колонки (ОФР часто приходит отдельным файлом позже).
|
||||||
@ -1146,7 +1151,7 @@ PDF-пути, решение №1 спеки 3a; `pages:…` — только е
|
|||||||
Расхождение жёсткого соотношения больше ±1, но не больше 0,001 % от наибольшего по модулю числа соотношения — **округление итогов** (OQ-138, решение владельца 06.10.2026: единицам шапки верим): уходит в `soft_relations_failed` с предупреждением «сошлось в пределах округления», статус не меняется (`rounding_tolerance_percent` в словаре). Пример: книга НПЗ (`npz/2025-Q3`) — `1600 = 1700` расходится на 1.94 / 9.02 / 2.48 при итогах ~17 млрд,
|
Расхождение жёсткого соотношения больше ±1, но не больше 0,001 % от наибольшего по модулю числа соотношения — **округление итогов** (OQ-138, решение владельца 06.10.2026: единицам шапки верим): уходит в `soft_relations_failed` с предупреждением «сошлось в пределах округления», статус не меняется (`rounding_tolerance_percent` в словаре). Пример: книга НПЗ (`npz/2025-Q3`) — `1600 = 1700` расходится на 1.94 / 9.02 / 2.48 при итогах ~17 млрд,
|
||||||
ОФР Унагранде Компани (стр. 1) — итог 2100 округлён до тысяч, ОФР Унагранде Групп 3 кв. 2025 — 2200 = −1 365 000 как
|
ОФР Унагранде Компани (стр. 1) — итог 2100 округлён до тысяч, ОФР Унагранде Групп 3 кв. 2025 — 2200 = −1 365 000 как
|
||||||
малая разность слагаемых ~393 млн; все `done`. Пятизначная подстрока относится к ближайшей четырёхзначной строке выше с
|
малая разность слагаемых ~393 млн; все `done`. Пятизначная подстрока относится к ближайшей четырёхзначной строке выше с
|
||||||
теми же тремя первыми цифрами (12310 под 1230). ББ Унагранде (стр. 1) — только актив, `1600 = 1700` не сходится,
|
теми же тремя первыми цифрами (12310 под 1230); то же правило ядро отдаёт экрану как `parent_code` (§7). ББ Унагранде (стр. 1) — только актив, `1600 = 1700` не сходится,
|
||||||
`needs_check`.
|
`needs_check`.
|
||||||
8. **Расшифровки** (0710003/0710004, пояснения, лист «Примечания» шаблона) — `DISCLOSURE` с `locator` и шапкой, если
|
8. **Расшифровки** (0710003/0710004, пояснения, лист «Примечания» шаблона) — `DISCLOSURE` с `locator` и шапкой, если
|
||||||
нашлась, без `columns`/`lines`; на статус не влияет (OQ-23). Книга только из таких листов — `done`.
|
нашлась, без `columns`/`lines`; на статус не влияет (OQ-23). Книга только из таких листов — `done`.
|
||||||
|
|||||||
@ -29,6 +29,7 @@
|
|||||||
|
|
||||||
| Когда, PR | Что изменилось в API | Что сделать в клиенте |
|
| Когда, PR | Что изменилось в API | Что сделать в клиенте |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
|
| 16.10, arm-core #118 (AURORA-1527) | `GET/PATCH …/statement`, `POST …/statement/checks/accept`: у каждой строки `lines[]` новое поле `parent_code` — у пятизначной подстроки (11101…) код её четырёхзначного родителя, иначе `null`; вычисляется ядром по правилу проверки «сумма подстрок = родитель», в БД не хранится | выводить подстроки под родителем по `parent_code`, не вычисляя родителя на клиенте; пустые подстроки (нет значения ни в одной колонке) можно сворачивать |
|
||||||
| 14.10, arm-core #111 | **`crm_id` у ГСК/ГСЗ — принимается, но не сохраняется.** `POST …/company-groups/{id}/related-groups` и `PATCH /directories/related-groups/{id}` принимают необязательный `crm_id` (раньше — 422 `extra_forbidden`); значение отбрасывается — колонки в модели пока нет (arm-core #112). В `RelatedGroupOut`/`RelatedGroupDetail` появилось поле `crm_id`, сейчас всегда `null` | формы [51-03]/[51-04]/[77-02]: поле «ID ГСК/ГСЗ в CRM» можно отправлять; после сохранения не ждать его в ответе — показывать то, что пришло (`null`), пока не закрыта #112 |
|
| 14.10, arm-core #111 | **`crm_id` у ГСК/ГСЗ — принимается, но не сохраняется.** `POST …/company-groups/{id}/related-groups` и `PATCH /directories/related-groups/{id}` принимают необязательный `crm_id` (раньше — 422 `extra_forbidden`); значение отбрасывается — колонки в модели пока нет (arm-core #112). В `RelatedGroupOut`/`RelatedGroupDetail` появилось поле `crm_id`, сейчас всегда `null` | формы [51-03]/[51-04]/[77-02]: поле «ID ГСК/ГСЗ в CRM» можно отправлять; после сохранения не ждать его в ответе — показывать то, что пришло (`null`), пока не закрыта #112 |
|
||||||
| 13.10, arm-core #110 (#109) | **Членства ГСК/ГСЗ в списке ЮЛ.** `memberships[] {related_group_id, code, kind, name, valid_from}` перенесено из `LegalEntityDetail` в `LegalEntityOut`: приходит в `GET /directories/legal-entities`, в ответах `move`/`withdraw` (после них — `[]`) и, как раньше, в карточке. Только текущие членства; нет — `[]`. Серверного фильтра по ГСК/ГСЗ нет | карточка ГК [36] и модалка [42]: колонка «ГСК»/«ГСЗ» и фильтр по ним — из `memberships` строк списка, без `related-groups/{id}` и без карточки каждого ЮЛ |
|
| 13.10, arm-core #110 (#109) | **Членства ГСК/ГСЗ в списке ЮЛ.** `memberships[] {related_group_id, code, kind, name, valid_from}` перенесено из `LegalEntityDetail` в `LegalEntityOut`: приходит в `GET /directories/legal-entities`, в ответах `move`/`withdraw` (после них — `[]`) и, как раньше, в карточке. Только текущие членства; нет — `[]`. Серверного фильтра по ГСК/ГСЗ нет | карточка ГК [36] и модалка [42]: колонка «ГСК»/«ГСЗ» и фильтр по ним — из `memberships` строк списка, без `related-groups/{id}` и без карточки каждого ЮЛ |
|
||||||
| 09.10, docs #90 (DBML v5.18; arm-core и arm-web — дочерние PR) | **Файлы в контексте консолидации.** Новые маршруты `POST /consolidations/{cid}/legal-entities/{le}/files` (загрузка в консоль: 404; 409 `CONSOLIDATION_NOT_EDITABLE` — нет версии «в работе»; 422 `ENTITY_NOT_IN_PERIMETER`) и `GET /consolidations/{cid}/legal-entities/{le}/files` (рабочий стол консоли для ЮЛ: файлы консоли + файлы с документами, привязанными к её версиям; `include_superseded`). Query `consolidation_version_id` у `POST /legal-entities/{id}/files` **удалён**; `FileOut.consolidation_id: uuid \| null`. Отменяет решение 07.10 «фильтра файлов ЮЛ в контексте версии нет» | панель [39] — стол консоли (`current_consolidation_id` из `ConsolidationPeriodOut.consolidation_id` строки списка / карточки версии `consolidation_id`), переключатель «Все документы организации» → `GET /legal-entities/{id}/files` с подписью консолидации у файла; загрузка [40] — новым маршрутом, кнопка недоступна, если версия не «в работе» |
|
| 09.10, docs #90 (DBML v5.18; arm-core и arm-web — дочерние PR) | **Файлы в контексте консолидации.** Новые маршруты `POST /consolidations/{cid}/legal-entities/{le}/files` (загрузка в консоль: 404; 409 `CONSOLIDATION_NOT_EDITABLE` — нет версии «в работе»; 422 `ENTITY_NOT_IN_PERIMETER`) и `GET /consolidations/{cid}/legal-entities/{le}/files` (рабочий стол консоли для ЮЛ: файлы консоли + файлы с документами, привязанными к её версиям; `include_superseded`). Query `consolidation_version_id` у `POST /legal-entities/{id}/files` **удалён**; `FileOut.consolidation_id: uuid \| null`. Отменяет решение 07.10 «фильтра файлов ЮЛ в контексте версии нет» | панель [39] — стол консоли (`current_consolidation_id` из `ConsolidationPeriodOut.consolidation_id` строки списка / карточки версии `consolidation_id`), переключатель «Все документы организации» → `GET /legal-entities/{id}/files` с подписью консолидации у файла; загрузка [40] — новым маршрутом, кнопка недоступна, если версия не «в работе» |
|
||||||
@ -389,7 +390,7 @@ UI прячет элементы по `GET /me → permissions` (объедин
|
|||||||
|
|
||||||
Главное (подробно — `api-contract-slice-3b.md` §3–§5):
|
Главное (подробно — `api-contract-slice-3b.md` §3–§5):
|
||||||
|
|
||||||
- `StatementOut = {document, edition, header, columns[], lines[], checks}`. У **каждой** пары «строка × колонка» есть `ValueOut`.
|
- `StatementOut = {document, edition, header, columns[], lines[], checks}`. `lines[].parent_code` — код четырёхзначной строки-родителя у пятизначной подстроки (`null` у остальных, в том числе у достроенных строк); считает ядро (то же правило, что у проверки «сумма подстрок = родитель»), родитель берётся только из этого поля. У **каждой** пары «строка × колонка» есть `ValueOut`.
|
||||||
Ядро достраивает полный состав формы редакции (справочник `statement_lines.yaml`, arm-core#80): `lines[].origin` —
|
Ядро достраивает полный состав формы редакции (справочник `statement_lines.yaml`, arm-core#80): `lines[].origin` —
|
||||||
`source` (из источника) или `template` (достроена); у достроенных строк и ячеек `id = null`, в БД их нет. Для правки
|
`source` (из источника) или `template` (достроена); у достроенных строк и ячеек `id = null`, в БД их нет. Для правки
|
||||||
передавайте `{line_id | line_code, column_id, amount}`: у существующей строки — `line_id`; у достроенной (`id = null`) —
|
передавайте `{line_id | line_code, column_id, amount}`: у существующей строки — `line_id`; у достроенной (`id = null`) —
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user