P0: specialist_id на create event + 402 gate на commercial create #61
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
Проблема
P0 с stage UX-прогона (FULL-STAGE-UX-JOURNEY):
POST /v1/calendars/:id/eventsигнорировалspecialist_id— в ответе всегда"";PUTсохранял. Ломалоevent-specialist-cardи specialist Confirm (403).can_create_commercial_calendar/1автозапускал trial, а handler создавал personal и ставил type черезcore_calendar:updateв обход gate.Ожидаемый результат
specialist_idтак же, как update (валидация: active specialist на commercial-календаре).POST /v1/subscription(start_trial).Критерии приёмки
POST .../eventsс валиднымspecialist_id→ 201 и поле в ответеPOST /v1/calendarstype=commercial без sub → 402start_trialcommercial create → 201Файлы (подсказка)
src/handlers/handler_events.erlsrc/handlers/handler_calendars.erlsrc/logic/logic_subscription.erlsrc/logic/logic_calendar.erlПриоритет
P0
Готово
SHA:
8172830(master)Что было сломано
POST /v1/calendars/:id/eventsне прокидывалspecialist_idвupdate_event_fields→ в ответе всегда"".can_create_commercial_calendar/1автоматически стартовал trial, поэтому free-пользователь получал 201 на commercial create; плюс handler создавал personal и ставилtypeчерезcore_calendar:updateв обход gate.Как починили
specialist_idв POST-схеме и вupdate_event_fields; приinvalid_specialist— удаляем созданное событие и 400; PUT тоже отдаёт 400.can_createтолько при уже active sub/trial (без auto-start); create идёт черезlogic_calendar:create_calendar/5с Type;{error, subscription_required}→ 402.Тесты
rebar3 eunit --module=logic_subscription_tests,logic_calendar_tests,logic_event_tests— 32 tests, 0 failuresПроверить на stage после деплоя
status=free:POST /v1/calendars{type:commercial}→ 402; personal → 201.POST /v1/subscriptionstart_trial→ commercial create → 201.POST .../eventsсspecialist_id→ 201 и поле в JSON; specialist Confirm без предварительного PUT.CI run 420 / job 885 упал на CT:
admin_test_websocket—POST /v1/calendarscommercial без trial → 402 после гейта из #61.Фикс:
admin_websocket_testsпереведён наcreate_calendar/create_event(как user WS), SHAcd619db. Push в master — новый CI run.CI run 420 / job 885 упал на CT:
admin_test_websocket—POST /v1/calendarscommercial без trial → 402 после гейта из #61.Фикс:
admin_websocket_testsпереведён наcreate_calendar/create_event(как user WS), SHAcd619db. Push в master — новый CI run.