8 Commits

Author SHA1 Message Date
Andrey Epifancev
244d97b1df ГСК/ГСЗ: POST/PATCH принимают crm_id без сохранения (#111)
Формы 51-03/51-04/77-02 шлют «ID ГСК/ГСЗ в CRM», а extra=forbid отвечал 422.
crm_id принимается (trim, пустая строка → null), отбрасывается; в ответах
RelatedGroupOut/RelatedGroupDetail — всегда null, в аудит не попадает.
Колонка related_group.crm_id — отдельная задача #112 (DBML v5.19).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:40:59 +04:00
Andrey Epifancev
4973e47290 feat(directories): текущие членства ГСК/ГСЗ в списке ЮЛ (#109)
`memberships` перенесено из `LegalEntityDetail` в `LegalEntityOut`: поле приходит в списке
`GET /directories/legal-entities`, в ответах `move`/`withdraw` (после них — `[]`) и, как раньше,
в карточке. Членства набора ЮЛ читаются одним запросом
(`current_memberships_by_entities`), без N+1. Нужно карточке ГК для фильтра ЮЛ по ГСК/ГСЗ.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:06:02 +04:00
Andrey Epifancev
fd9efb354e openspec: архив console-files, спеки data-model/directories-api — текущая DBML v5.18 (M-5, #96)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 10:04:07 +04:00
Andrey Epifancev
a93ab10523 feat(directories): алиасы и ГСК/ГСЗ в POST/PATCH ЮЛ (#84)
Формы «Добавить/Изменить юридическое лицо» (макет 51-02, 79) отправляют всё
одним запросом. POST/PATCH /directories/legal-entities принимают `aliases`,
`gsk_id`, `gsz_id` и применяют их в той же транзакции, что и поля ЮЛ.

- POST: алиасы и членства создаются вместе с ЮЛ; ошибка откатывает всё.
- PATCH: `aliases` — итоговый набор (сверка по normalized_alias; удаление —
  с правом DIRECTORY_DELETE, иначе 403), `gsk_id`/`gsz_id` — итоговые группы
  (`null` — выйти, другая — сменить); не переданное поле не меняется.
- Новая ошибка 422 WRONG_GROUP_KIND; дубль в списке — 409 ALIAS_EXISTS.
- Ответ POST и PATCH — LegalEntityDetail (надмножество LegalEntityOut).
- Логика ручек алиасов и состава ГСК/ГСЗ вынесена в функции модулей
  (add_alias/remove_alias, add_membership/close_membership) — форма и ручки
  ведут себя одинаково; PermissionDeniedError — единый 403 «недостаточно прав».
- Спека directories-api и README обновлены.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 13:48:14 +04:00
Andrey Epifancev
64be2f2b5c feat: имя ГК (company_group_name) в ответах ЮЛ (#67)
В LegalEntityOut (а значит и LegalEntityDetail) добавлено company_group_name: текущее имя ГК company_group_id,
архивной тоже; у монозаёмщика null. Есть во всех ответах /directories/legal-entities: список, карточка, POST,
PATCH, move, withdraw; в снимках истории нет. Имена набора ЮЛ подгружаются одним батч-запросом
(repositories.directories.company_group_names_by_ids), число запросов списка от числа строк не зависит.
Спека directories-api и README дополнены.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-08 17:01:25 +04:00
Andrey Epifancev
10d9193ef9 OpenSpec-спеки по коду: DBML v5.17 (КПП), схема из DB_SCHEMA (#55)
- data-model: v5.16 → v5.17 (legal_entity(_history).kpp, миграция 0005), схема — настройка DB_SCHEMA
  (по умолчанию dkb), цепочка миграций до 0005, DBML_VERSION = "5.17", 28 enum-типов; сценарии «КПП добавляется
  и откатывается», «Нестандартная схема».
- directories-api: v5.14 → v5.17; kpp в создании/PATCH (null очищает), поиск q по КПП, INVALID_KPP, ИП без КПП.
- directory-import: необязательная колонка «КПП», код INVALID_KPP, пустая ячейка не стирает КПП при update.

Код не менялся: спеки догоняют слитые PR #52 и #53.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-07 23:40:42 +04:00
Andrey Epifancev
89abf0a8ec openspec: архив change slice-3b-statements-api (2026-10-07) — спеки documents-api, osv-result-mapping, statement-checks и др.
Ссылки README и CLAUDE.md переведены на архив.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-07 15:23:35 +04:00
Andrey Epifancev
38bb7f7f7d openspec: архив change slice-1-directories (2026-10-05), спеки directories-api, directory-import, directory-policy, users-admin, дельты data-model/audit-trail
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:04:36 +04:00