Статус реализации¶
Срез по коду на момент описания. «Сделано» значит, что сценарий есть в маршрутах и моделях. «Частично» — есть соседнее поведение, но не правило 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 в найденных маршрутах нет |
Где написано «не сверялось» или «не найдено», это граница этого среза, а не доказательство, что поведения нет в каждом файле фронтенда.