dev: гайд фронта — коды ошибок загрузки в консолидацию (#90)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-09 23:36:06 +04:00
parent 9ba8d29033
commit f126c27ac9

View File

@ -17,8 +17,8 @@
| `context/10-user-journey.md`, `mockup/INDEX.md` | пользовательский путь; номера экранов `[NN]` — снимки макета |
Если этот гайд и OpenAPI расходятся в **схемах и полях** — прав OpenAPI работающего стенда (`/openapi.json`), а расхождение —
повод для issue в `RSHB/arm-ka-docs`. Текстовые описания ошибок в OpenAPI местами неточны (например, «`VERSION_NOT_FOUND`» у
загрузки — на деле код `NOT_FOUND`; у загрузки 422 `ENTITY_NOT_IN_PERIMETER` приходит объектом `detail`, а не `UploadResult`):
повод для issue в `RSHB/arm-ka-docs`. Текстовые описания ошибок в OpenAPI местами неточны (например, до v5.18 «`VERSION_NOT_FOUND`» у
загрузки с query `consolidation_version_id` — на деле код `NOT_FOUND`; у загрузки 422 `ENTITY_NOT_IN_PERIMETER` приходит объектом `detail`, а не `UploadResult`):
коды ошибок сверяйте по §9.
---
@ -437,7 +437,7 @@ UI прячет элементы по `GET /me → permissions` (объедин
3. **Перехват**: `POST …/lock {takeover_reason: "…"}` при чужой блокировке; пустая причина или из пробелов — как отсутствующая.
4. **Ручные переходы** сейчас два: `CANCELLED` из любого «в работе» (с непустым `comment`, иначе 422 `COMMENT_REQUIRED`) и
возврат в `INITIATED` из `DOCUMENTS_PROCESSING`/`DATA_CORRECTION`. Остальное — 409 `TRANSITION_NOT_ALLOWED` (маршрут
согласования — Срез 7). Автоматические переходы: загрузка с версией → `DOCUMENTS_PROCESSING`; документ `NEEDS_CHECK` по
согласования — Срез 7). Автоматические переходы: загрузка в консолидацию → `DOCUMENTS_PROCESSING`; документ `NEEDS_CHECK` по
версии или подтверждение привязанного документа → `DATA_CORRECTION`.
5. **404 в консолидациях — всегда `NOT_FOUND`**; отдельных кодов «версия/строка/ГСК не найдена» нет.
6. **Ячейки чек-листа самоописывающие**: ищите по `document_type`/`account` («Бух. баланс» — `BALANCE`, «ОФР» — `INCOME`,
@ -614,10 +614,11 @@ async function download(path: string, fallbackName: string): Promise<void> {
| `PERIMETER_TOO_SMALL` | 422 | создание, `PUT …/members` | — | «Нужно минимум два ЮЛ» |
| `RELATED_GROUP_MISMATCH` | 422 | создание | — | ошибка поля «ГСК» |
| `ENTITY_NOT_IN_GROUP` | 422 | создание с `legal_entity_ids`, `PUT …/members` | `legal_entity_ids[]` | подсветить ЮЛ |
| `ENTITY_NOT_IN_PERIMETER` | 422 | загрузка с версией | — | «ЮЛ не входит в периметр версии» |
| `ENTITY_NOT_IN_PERIMETER` | 422 | загрузка в консолидацию | — | «ЮЛ не входит в периметр ни одной версии консолидации «в работе»» (`05-domain-rules.md` §9.5 п. 8) |
| `QUERY_TOO_SHORT` | 422 | кандидаты `scope=all` | — | «Введите не менее 3 символов» |
| `COMMENT_REQUIRED` | 422 | отмена версии | — | ошибка поля «Комментарий» |
| `VERSION_NOT_EDITABLE` | 409 | правки версии, загрузка с версией, взятие `CANCELLED` | — | перевести экран в просмотр |
| `VERSION_NOT_EDITABLE` | 409 | правки версии, взятие `CANCELLED` | — | перевести экран в просмотр |
| `CONSOLIDATION_NOT_EDITABLE` | 409 | загрузка в консолидацию, у которой нет версии «в работе» (`POST /consolidations/{cid}/legal-entities/{le}/files`) | — | заблокировать кнопку загрузки |
| `LOCK_REQUIRED` | 409 | правки версии | — | «Возьмите версию в работу» |
| `LOCKED_BY_OTHER` | 409 | взятие и правки версии | `locked_by`, `locked_at`, из `POST …/lock` ещё `locked_by_name` | «Версию держит <имя>», предложить перехват |
| `NOT_LOCK_OWNER` | 409 | снятие блокировки | `locked_by`, `locked_at` | перечитать карточку |