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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user