Как реализовать отвязку профиля пользователя от камеры и подключение другой камеры
Что проверяют
Видите ли вы за задачей процесс с состояниями и последствиями, а не замену одного поля в профиле. Следом почти всегда спрашивают, что происходит с архивом записей и с доступом людей, которым владелец открыл камеру.
Как отвечать
Сначала уточните модель: сколько камер у пользователя, делится ли камера с семьёй, есть ли облачный архив. Привязку лучше хранить отдельной сущностью, а не полем camera_id в профиле: таблица user_camera с ролью (владелец, гость), датой привязки и датой отвязки. Так сохраняется история и появляется аудит.
Сценарий отвязки распишите по шагам:
- инициатор и подтверждение: владелец в приложении или поддержка по заявке, с повторным вводом пароля или кодом;
- доступы: отзываются права гостей, закрываются активные сеансы просмотра, аннулируются токены камеры в облаке;
- архив: удаляется сразу, хранится до конца оплаченного срока или остаётся у пользователя. Это решение бизнеса, и его нужно получить явно;
- подписка: переносится на новую камеру или привязана к устройству;
- сама камера: переходит в статус «свободна» и получает новые ключи, чтобы следующий владелец не видел чужой архив, а прежний не видел новый.
Подключение новой камеры: код с наклейки или QR, камера регистрируется на сервере, система проверяет, что она не привязана к другому аккаунту. Если привязана, сначала нужна отвязка прежним владельцем, это защита от кражи. Замену камеры стоит выделить в отдельный сценарий с переносом настроек: зон детекции, расписания записи.
Артефакты: диаграмма состояний камеры, диаграмма последовательности и контракт вроде DELETE /users/{id}/cameras/{cameraId}.
Где спотыкаются
Хранят камеру полем в профиле и перезаписывают его. Теряется история, нельзя завести вторую камеру, нечем ответить на вопрос «кто смотрел запись».
Забывают про камеру, которая сейчас не в сети. Команда отвязки до неё не доходит, и камера продолжает слать видео в старый аккаунт. Нужна очередь команд и применение при следующем подключении.
Обходят вопрос архива и гостевого доступа, хотя это самая чувствительная часть: бывший владелец смотрит чужую квартиру или пользователь теряет нужные ему записи.