ЮЛ: алиасы и ГСК/ГСЗ в POST/PATCH /directories/legal-entities (#84) #85
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/84-le-form-fields"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #84
Формы «Добавить юридическое лицо» (51-02) и «Изменить юридическое лицо» (79) отправляют всё одной кнопкой. Теперь
POST/PATCH /directories/legal-entitiesпринимают алиасы и ГСК/ГСЗ и применяют их в той же транзакции, что и поля ЮЛ.Что изменилось в API
LegalEntityCreate/LegalEntityUpdate:aliases: string[](1–500 символов, ≤ 100 элементов),gsk_id,gsz_id.aliases— итоговый набор, сверка поnormalized_alias: совпавшие не трогаются (написание прежнее), недостающие добавляются, лишние удаляются; удаление требуетDIRECTORY_DELETE, иначе 403 «недостаточно прав: требуется DIRECTORY_DELETE» и откат;aliases: null— 422;gsk_id/gsz_id— итоговая группа вида:null— выйти, та же — no-op, другая — закрыть текущее членство и открыть новое.EMPTY_ALIAS,ALIAS_TAKEN,DIFFERENT_COMPANY_GROUP, 404 невидимой группы); дубль внутри списка — 409ALIAS_EXISTS; новая 422WRONG_GROUP_KIND(вgsk_idпередана ГСЗ и наоборот).LegalEntityDetail(надмножествоLegalEntityOut: +memberships,aliases).LEGAL_ENTITY_CHANGEпо каждому алиасу,MEMBERSHIP_CHANGEпо каждому членству; снимокlegal_entity_history(UPDATE)— только при изменении полей ЮЛ.Внутри
aliases.add_alias/remove_alias/normalize_or_reject,related_groups.add_membership/close_membership/member_payload); форма —services/legal_entity_form.pyповерх них, поэтому форма и ручки ведут себя одинаково.PermissionDeniedErrorвcommon/exceptions.py— единый 403 «недостаточно прав: требуется <КОД>»;requireиспользует его.openspec/specs/directories-api/spec.md— новое требование «Форма ЮЛ одним запросом» (bounded, правка без change), README — таблица маршрутов иWRONG_GROUP_KIND.Rulings I made
require(PermissionDeniedError), а не доменным объектом: так все 403 в API одного вида (гайд фронта §3.2).aliases≤ 100 элементов (422 массивом до БД) — по образцу границ входов #26.Наблюдения
DIRECTORY_DELETEв seed есть только уADMIN, поэтому ан��литик в модалке 79 может добавлять алиасы, но удаление получит 403. Если аналитик должен удалять алиасы — это правка матрицы прав (данные), не кода; решение владельца.moveсeffective_dateи закрытием всех членств.Находки
Проверка
make check-full— exit 0: ruff/mypy чисто; unit 1279 passed; integration 883 passed (новых 18 вtests/test_api_legal_entity_form.py); e2e 1 passed; dbml-check, check-infra, docker-build, web-check — без ошибок.🤖 Generated with Claude Code