Основной РФ объектом: regional_office / base_regional_office {id, name, is_head_office} в ответах ЮЛ и ГК #47

Closed
opened 2026-10-07 17:20:33 +03:00 by aep · 0 comments
Owner

Решение владельца (07.10.2026)

Фронтенд не должен собирать «Основной РФ» из двух мест (regional_office_id + справочник GET /directories/regional-offices). В ответах ЮЛ и ГК филиал приходит объектом с именем.

Как (по прецеденту в коде)

Уже так сделано: UserOut.regional_office: RegionalOfficeOut (schemas/admin.py), профиль GET /me — RegionalOfficeBrief {id, name, is_head_office} (schemas/directories.py). Используем RegionalOfficeBrief.

Схема Добавить *_id
LegalEntityOut (и LegalEntityDetail) regional_office: RegionalOfficeBrief | None оставить (аддитивно, фронт не ломается)
LegalEntityHistoryOut regional_office: RegionalOfficeBrief | None — РФ снимка оставить
CompanyGroupOut (список, карточка) base_regional_office: RegionalOfficeBrief | None оставить
CompanyGroupHistoryOut base_regional_office: RegionalOfficeBrief | None оставить

Входные схемы (Create/Update) не меняются — по-прежнему принимают *_id.

Что сделать

  1. Схемы по таблице; в репозитории/сервисе — загрузка филиала без N+1 (selectinload/join в списках ЮЛ и ГК, включая список с поиском и пагинацией; в history — по regional_office_id снимка, FK в history нет — батч-запрос по набору id).
  2. Ответы PATCH/move/withdraw ЮЛ и операций ГК — тот же объект (один LegalEntityOut).
  3. Удалённый/неактивный филиал (is_active=false) — объект всё равно отдаётся (имя нужно для истории).
  4. Тесты API: объект присутствует и совпадает с *_id; null при отсутствии филиала; число SQL-запросов списка не растёт с числом строк.
  5. OpenAPI обновлён; в контракт для фронта (arm-ka-docs) — строка в PR по docs#52 или отдельно.

Где проявляется

Макет: 03 (Группы компаний: колонка «Основной РФ»), 50 (карточка ГК «Основной РФ · N организаций», таблица ЮЛ), 61 (ЮЛ вне ГК).

Когда

После завершения агента arm-core#42 (он трогает соседние схемы). Bounded-задача. Удобно делать вместе с arm-core#45 (КПП) — те же схемы ЮЛ.

## Решение владельца (07.10.2026) Фронтенд не должен собирать «Основной РФ» из двух мест (`regional_office_id` + справочник `GET /directories/regional-offices`). В ответах ЮЛ и ГК филиал приходит **объектом с именем**. ## Как (по прецеденту в коде) Уже так сделано: `UserOut.regional_office: RegionalOfficeOut` (`schemas/admin.py`), профиль `GET /me` — `RegionalOfficeBrief {id, name, is_head_office}` (`schemas/directories.py`). Используем `RegionalOfficeBrief`. | Схема | Добавить | `*_id` | |---|---|---| | `LegalEntityOut` (и `LegalEntityDetail`) | `regional_office: RegionalOfficeBrief \| None` | оставить (аддитивно, фронт не ломается) | | `LegalEntityHistoryOut` | `regional_office: RegionalOfficeBrief \| None` — РФ снимка | оставить | | `CompanyGroupOut` (список, карточка) | `base_regional_office: RegionalOfficeBrief \| None` | оставить | | `CompanyGroupHistoryOut` | `base_regional_office: RegionalOfficeBrief \| None` | оставить | Входные схемы (`Create`/`Update`) не меняются — по-прежнему принимают `*_id`. ## Что сделать 1. Схемы по таблице; в репозитории/сервисе — загрузка филиала без N+1 (`selectinload`/join в списках ЮЛ и ГК, включая список с поиском и пагинацией; в history — по `regional_office_id` снимка, FK в history нет — батч-запрос по набору id). 2. Ответы `PATCH`/`move`/`withdraw` ЮЛ и операций ГК — тот же объект (один `LegalEntityOut`). 3. Удалённый/неактивный филиал (`is_active=false`) — объект всё равно отдаётся (имя нужно для истории). 4. Тесты API: объект присутствует и совпадает с `*_id`; `null` при отсутствии филиала; число SQL-запросов списка не растёт с числом строк. 5. OpenAPI обновлён; в контракт для фронта (arm-ka-docs) — строка в PR по docs#52 или отдельно. ## Где проявляется Макет: `03` (Группы компаний: колонка «Основной РФ»), `50` (карточка ГК «Основной РФ · N организаций», таблица ЮЛ), `61` (ЮЛ вне ГК). ## Когда После завершения агента arm-core#42 (он трогает соседние схемы). Bounded-задача. Удобно делать вместе с arm-core#45 (КПП) — те же схемы ЮЛ.
aep closed this issue 2026-10-07 18:01:47 +03:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#47
No description provided.