Перейти к содержанию

Статус реализации

Срез по коду на момент описания. «Сделано» значит, что сценарий есть в маршрутах и моделях. «Частично» — есть соседнее поведение, но не правило BRD. «Нет» — в маршрутах заглушка 501 или сущности не найдено. Непроверенное так и помечено.

BRD от этого не меняется.

Домен BRD Факт в коде
Регистрация по почте, FR-О-01 Частично. Есть регистрация, вход, 6-значный код (не ссылка на 24 часа), refresh и logout. Восстановления пароля в auth.py нет
Минимум полей, FR-О-02 Частично. Роли разведены на /auth/candidate и /auth/employer. Пароль задаётся при регистрации, не после письма
Яндекс ID и Госуслуги, FR-О-03 Нет. FSP ID только привязывает профиль
2FA, FR-О-04 Нет. Таблицы и маршрутов второго фактора не найдено
Роли и 403, FR-О-05 Сделано на уровне require_roles и проверок владельца. Автопрогон «0 чужих успехов» в этом срезе не запускался
Блокировка аккаунта, FR-О-13 Частично. Админский банлист описан в docs/ADMIN.md (компании, ИНН, email, домены). Экран кандидата с причиной и сроком не сверялся построчно
Резюме и PDF, FR-К-01, FR-К-02 Сделано: своё резюме, второе резюме, загрузка PDF через RouterAI, если ключ задан
11 грейдов и категория, FR-К-09, FR-К-18 Частично. В Grade пять значений: intern, junior, middle, senior, lead. CandidateCategory и попытки есть
Опрос, FR-К-08 Нет. POST /assessments/survey отвечает 501
Тест, код, интервью, FR-К-10, FR-К-14 Частично. Попытки, запуск кода, завершение и статус interview есть. Прокторинга камеры и экрана в моделях не найдено
Кулдаун и история, FR-К-19, FR-К-20 Частично. GET /assessments/me отдаёт категории, паузы и историю попыток. Набор из 11 грейдов не совпадает с BRD
Приватность и пауза, FR-К-33, FR-К-34 Частично. Статус поиска not_looking есть. Полный набор переключателей видимости построчно не сверялся
ФСП, FR-К-36, FR-К-38 Сделано в режиме mock: authorize, callback, sync, unlink, пустой реестр не ошибка
Удаление аккаунта, FR-К-39 Не найдено в маршрутах auth и candidates
Статусы и вилка, FR-О-06, FR-О-07 Частично. У вакансии вилка проверяется. У приглашения нет статусов «Отозвано» и «Истекло». Сами приглашения — 501
Раскрытие контактов, FR-О-08 Частично. Карточка кандидата режет поля по правилам бэкенда. Журнал каждого просмотра контактов в этом срезе не подтверждался
Чат, FR-О-09 Сделано: conversations и вложения. Правило «один чат на потребность» не подтверждено: потребности как сущности нет
Встречи, FR-О-10 Сделано: календарь, назначение, перенос, подтверждение. Это Доп в BRD
Уведомления, FR-О-11 Частично. Маршрут /notifications есть. Письма по каждому типу события не сверялись
Потребность и подборка, FR-Р-02 … FR-Р-09 Нет. matching create need и recommendations — 501. Версий подборки в моделях нет
Банк и свайпы работодателя, FR-Р-10, FR-Р-12 Частично. Поиск кандидатов и реакции есть. Это не подборка по потребности
Приглашение, FR-Р-14, FR-Р-15 Нет. Все методы /invitations — 501. Разового предложения нет
Вакансии и отклики, FR-Р-19, FR-К-31 Частично. Лента и реакции есть. Создание и правка вакансии — 501. Отклики /applications — 501. Взаимный интерес идёт через /responses
Тестовые, FR-Р-21 Сделано как задания компании и прохождение кандидатом. Сборка из паттернов с несущими элементами — нет
Админка паттернов и валидации, FR-А-02 … FR-А-22 Частично. Пакет app/admin: банк заданий, аналитика по кнопке, параметры, справочники, журнал, банлист, верификация компаний. Калибровки на LLM-персонах, one-shot, очереди прокторинга и эталонных прогонов К1/К2 в найденных маршрутах нет

Где написано «не сверялось» или «не найдено», это граница этого среза, а не доказательство, что поведения нет в каждом файле фронтенда.