P1: При регистрации создавать пользователю дефолтный приватный календарь #49
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?
Проблема
После успешной регистрации у нового пользователя нет календаря: его нужно создавать вручную через API. Для клиентского сценария ожидается, что у пользователя сразу есть личное рабочее пространство.
Влияние
Новый пользователь после регистрации/активации не может сразу создавать события и пользоваться календарём без дополнительного шага. Ухудшается onboarding и усложняется клиентская логика.
Ожидаемый результат
При регистрации (или сразу после успешной верификации email — выбрать точку в коде с учётом того, что
logic_calendar:create_calendar/3требует статусactive) система автоматически создаёт пользователю один дефолтный приватный календарь типаpersonal, владельцем которого является этот пользователь.Рекомендуемая точка: после активации в
handler_verify/core_user:update(..., [{status, active}]), либо создание черезcore_calendar:create/4в обход проверкиactiveна этапеPOST /v1/register— зафиксировать выбранный вариант в реализации и тестах.Критерии приёмки
personal,short_nameпустой (без публичной ссылки), владелец — новый пользовательФайлы (подсказка)
src/handlers/handler_register.erl— регистрация (core_user:create, статусpending)src/handlers/handler_verify.erl— активация аккаунтаsrc/logic/logic_calendar.erl—create_calendar(сейчас требуетactive)src/core/core_calendar.erl—create/4,create/5,list_by_owner/1test/api/users/user_register_tests.erltest/api/users/user_calendars_tests.erlПриоритет
P1
Готово. Коммит
7c1fe19: послеPOST /v1/verifyвызываетсяlogic_calendar:ensure_default_calendar/1— идемпотентно создаётся personal-календарь (название из nickname или «Мой календарь»).Тесты: API
user_verification_tests, unitlogic_calendar_tests. CI run 366 — зелёный (IFT e2e).Спека обновлена:
EventHubBackSpec.md,EventHubFrontSpec.md.