docs: приведение документации в соответствие с backend

- Auth: register без токенов до верификации (userId, message, verificationCode)
- Auth: login — 429 RATE_LIMIT_EXCEEDED при lockout, user с avatarUrl
- Auth: verify-email — { userId, code }, без Bearer
- Auth: reset-password — поле newPassword
- Profile: stats — byStack, totalTestsTaken, totalQuestions, correctAnswers, accuracy
- Tests: POST /tests возвращает полный список questions
- Tests: answer — полный snapshot отвеченного вопроса
- Tests: history — offset-пагинация (limit/offset), формат { tests, total }
- Admin: GET /admin/questions/pending, POST approve/reject, PATCH для редактирования
- DB: email_verification_codes, password_reset_tokens; обновлена question_cache_meta
- Security: CORS_ORIGINS из env, CSP/COEP отключены
- LLM: LLM_FALLBACK_MODEL, LLM_RETRY_DELAY_MS
- Onboarding: правило .env.example, JWT_SECRET >= 32 символов
This commit is contained in:
Anton
2026-03-06 13:52:24 +03:00
parent 99cd8ae727
commit 2f45a0b851
6 changed files with 318 additions and 136 deletions

View File

@@ -8,6 +8,8 @@
erDiagram
users ||--o{ subscriptions : has
users ||--o{ sessions : has
users ||--o{ email_verification_codes : has
users ||--o{ password_reset_tokens : has
users ||--o{ oauth_accounts : has
users ||--o| totp_secrets : has
users ||--o{ tests : takes
@@ -74,6 +76,30 @@ erDiagram
| expires_at | timestamptz | |
| created_at | timestamptz | |
### email_verification_codes
Коды подтверждения email (для регистрации).
| Колонка | Тип | Описание |
|---------|-----|----------|
| id | uuid, PK | |
| user_id | uuid, FK → users | |
| code | varchar | Код из письма (обычно 6 цифр) |
| expires_at | timestamptz | Срок действия кода |
| created_at | timestamptz | |
### password_reset_tokens
Токены для сброса пароля.
| Колонка | Тип | Описание |
|---------|-----|----------|
| id | uuid, PK | |
| user_id | uuid, FK → users | |
| token_hash | varchar | Хеш токена из письма |
| expires_at | timestamptz | Срок действия |
| created_at | timestamptz | |
### oauth_accounts
Привязанные OAuth-провайдеры (Phase 2).
@@ -165,7 +191,11 @@ erDiagram
| question_bank_id | uuid, FK → question_bank | |
| llm_model | varchar | Модель, сгенерировавшая вопрос |
| prompt_hash | varchar | Хеш промпта |
| generation_time_ms | integer | Время генерации |
| generation_time_ms | integer | Время генерации в мс |
| valid | boolean | Прошёл ли валидацию с первого раза |
| retry_count | integer | Количество retry при ошибках |
| questions_generated | integer | Сколько вопросов сгенерировано |
| raw_response | text, nullable | Сырой ответ LLM (опционально, для отладки) |
| created_at | timestamptz | |
### question_reports