Owner commercial — неудаляемый specialist + toggle active #66

Closed
opened 2026-08-01 10:11:07 +03:00 by cursor-ai · 5 comments
Owner

Проблема

Владелец commercial не попадает в calendar_specialist, поэтому specialist_id=owner даёт 400. Ломается сценарий одиночки (picker, guest roster).

Ожидаемый результат

  • При create commercial создаётся строка calendar_specialist на owner (active, имя из nickname).
  • DELETE …/specialists/:owner_id → 403 (owner_specialist_protected).
  • Owner может менять name, specialization, status (галочка «я специалист» = active/inactive).
  • Миграций/backfill нет — wipe БД перед деплоем.

Критерии приёмки

  • create commercial → owner в specialists, status=active
  • event с specialist_id=owner при active → OK; при inactive → 400
  • DELETE owner specialist → 403
  • PUT name/specialization/status для owner → OK
  • eunit зелёный

Связано

Front: галочка в Команде (отдельный issue).

## Проблема Владелец commercial не попадает в `calendar_specialist`, поэтому `specialist_id=owner` даёт 400. Ломается сценарий одиночки (picker, guest roster). ## Ожидаемый результат - При create commercial создаётся строка `calendar_specialist` на owner (`active`, имя из nickname). - `DELETE …/specialists/:owner_id` → 403 (`owner_specialist_protected`). - Owner может менять `name`, `specialization`, `status` (галочка «я специалист» = active/inactive). - Миграций/backfill нет — wipe БД перед деплоем. ## Критерии приёмки - [ ] create commercial → owner в specialists, status=active - [ ] event с specialist_id=owner при active → OK; при inactive → 400 - [ ] DELETE owner specialist → 403 - [ ] PUT name/specialization/status для owner → OK - [ ] eunit зелёный ## Связано Front: галочка в Команде (отдельный issue).
cursor-ai added the Story label 2026-08-01 10:11:07 +03:00
cursor-ai self-assigned this 2026-08-01 10:11:47 +03:00
Author
Owner

Беру в работу.

Беру в работу.
Author
Owner

Реализация (локально)

  • logic_calendar_specialist:ensure_owner_specialist/1 при create commercial (+ convert extras→commercial)
  • DELETE owner → 403 owner_specialist_protected
  • PUT name/specialization/status для owner (галочка = active/inactive)
  • eunit: logic_owner_specialist_tests (5/5)

Миграций нет. Полный make test-all — в прогоне. Коммит/push и wipe — после OK.

Связано: Front#48 (UI галочка + бейдж Владелец первым).

## Реализация (локально) - `logic_calendar_specialist:ensure_owner_specialist/1` при create commercial (+ convert extras→commercial) - `DELETE` owner → `403` `owner_specialist_protected` - `PUT` name/specialization/status для owner (галочка = active/inactive) - eunit: `logic_owner_specialist_tests` (5/5) Миграций нет. Полный `make test-all` — в прогоне. Коммит/push и wipe — после OK. Связано: Front#48 (UI галочка + бейдж Владелец первым).
Author
Owner

Статус

Локально make test-all: eunit 1041 + API CT 41 — зелёные (TEST_ALL_EXIT=0).

Реализовано:

  • ensure owner-specialist при create commercial
  • DELETE owner → 403
  • PUT name/specialization/status

Коммит/push/wipe — ждут явного OK.
Связано: EventHubFront#48, Spec уже обновлён (owner specialist + UI галочка/бейдж).

## Статус Локально `make test-all`: **eunit 1041 + API CT 41 — зелёные** (`TEST_ALL_EXIT=0`). Реализовано: - ensure owner-specialist при create commercial - DELETE owner → 403 - PUT name/specialization/status Коммит/push/wipe — ждут явного OK. Связано: EventHubFront#48, Spec уже обновлён (owner specialist + UI галочка/бейдж).
Author
Owner

Запушено

0e4e886 на master — owner non-deletable specialist.

  • Stage: full mnesia wipe + smoke OK
  • IFT wipe: недоступен (LAN 192.168.1.132 — No route to host после ребута)

Жду деплой/указания. Front#48 и Spec ещё не пушились.

## Запушено `0e4e886` на `master` — owner non-deletable specialist. - Stage: full mnesia wipe + smoke OK - IFT wipe: недоступен (LAN `192.168.1.132` — No route to host после ребута) Жду деплой/указания. Front#48 и Spec ещё не пушились.
Author
Owner

Проверено на stage (Аврора): владелец в roster специалистов (13 строк); DELETE specialists/:owner_id → 403 «Owner specialist cannot be removed». Закрываю.

Проверено на stage (Аврора): владелец в roster специалистов (13 строк); DELETE specialists/:owner_id → 403 «Owner specialist cannot be removed». Закрываю.
Sign in to join this conversation.