ГСК/ГСЗ: POST/PATCH принимают crm_id без сохранения (#111) #113

Merged
aep merged 1 commits from feat/111-rg-crm-id into main 2026-10-14 12:04:53 +03:00
Owner

Closes #111.

Что

Формы макета 51-03 / 51-04 / 77-02 шлют «ID ГСК/ГСЗ в CRM». Раньше RelatedGroupCreate/RelatedGroupUpdate (extra=forbid) отвечали на crm_id 422.

  • crm_id: str | None в RelatedGroupCreate и RelatedGroupUpdate: trim, пустая строка → null (как у ГК); значение отбрасывается — колонки в DBML нет.
  • RelatedGroupOut/RelatedGroupDetail: поле crm_id, всегда null.
  • Сервис не менялся: TRACKED_FIELDS уже отсекает лишнее — PATCH только с crm_id = no-op без аудита.
  • Спека directories-api («ГСК и ГСЗ — группы и состав») дополнена сценарием.

Колонка related_group.crm_id и её сохранение — #112 (DBML v5.19). Гайд фронта и OQ-33 — RSHB/arm-ka-docs, ветка feat/111-rg-crm-id.

Rulings I made

  • R-1: crm_id добавлен и в ответы (null), чтобы фронт не ветвился по наличию поля после #112.
  • R-2: нормализация как у crm_id ГК (_blank_to_none); не-строка → 422.
  • R-3: bounded — спека directories-api поправлена напрямую, без OpenSpec change.

Проверка

make check-full — exit 0: ruff + mypy чисто; unit 1335 passed; dbml-check, check-infra ок; integration 911 passed; e2e 1 passed; docker build ок; biome + tsc + build ок.

🤖 Generated with Claude Code

Closes #111. ## Что Формы макета 51-03 / 51-04 / 77-02 шлют «ID ГСК/ГСЗ в CRM». Раньше `RelatedGroupCreate`/`RelatedGroupUpdate` (`extra=forbid`) отвечали на `crm_id` 422. - `crm_id: str | None` в `RelatedGroupCreate` и `RelatedGroupUpdate`: trim, пустая строка → `null` (как у ГК); значение отбрасывается — колонки в DBML нет. - `RelatedGroupOut`/`RelatedGroupDetail`: поле `crm_id`, всегда `null`. - Сервис не менялся: `TRACKED_FIELDS` уже отсекает лишнее — `PATCH` только с `crm_id` = no-op без аудита. - Спека `directories-api` («ГСК и ГСЗ — группы и состав») дополнена сценарием. Колонка `related_group.crm_id` и её сохранение — #112 (DBML v5.19). Гайд фронта и OQ-33 — RSHB/arm-ka-docs, ветка `feat/111-rg-crm-id`. ## Rulings I made - R-1: `crm_id` добавлен и в ответы (`null`), чтобы фронт не ветвился по наличию поля после #112. - R-2: нормализация как у `crm_id` ГК (`_blank_to_none`); не-строка → 422. - R-3: bounded — спека `directories-api` поправлена напрямую, без OpenSpec change. ## Проверка `make check-full` — exit 0: ruff + mypy чисто; unit 1335 passed; dbml-check, check-infra ок; integration 911 passed; e2e 1 passed; docker build ок; biome + tsc + build ок. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-14 11:41:22 +03:00
Формы 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>
aep merged commit 8b86735828 into main 2026-10-14 12:04:53 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

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