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:
@@ -20,12 +20,17 @@ flowchart LR
|
||||
LLM_BASE_URL=http://localhost:11434/v1
|
||||
LLM_MODEL=qwen2.5:14b
|
||||
LLM_API_KEY=
|
||||
LLM_FALLBACK_MODEL=qwen2.5:7b
|
||||
LLM_TIMEOUT_MS=15000
|
||||
LLM_MAX_RETRIES=1
|
||||
LLM_RETRY_DELAY_MS=2000
|
||||
LLM_TEMPERATURE=0.7
|
||||
LLM_MAX_TOKENS=2048
|
||||
```
|
||||
|
||||
- **LLM_FALLBACK_MODEL** — запасная модель при падении основной.
|
||||
- **LLM_RETRY_DELAY_MS** — задержка между retry при ошибках API (мс).
|
||||
|
||||
Все провайдеры используют OpenAI-совместимый API (`/v1/chat/completions`). Замена провайдера — изменение `.env`, код не меняется.
|
||||
|
||||
### Стратегия провайдеров
|
||||
@@ -466,14 +471,15 @@ Here are the questions:
|
||||
|
||||
Каждый LLM-вызов записывается в `question_cache_meta`:
|
||||
|
||||
| Метрика | Что записываем |
|
||||
| - | - |
|
||||
| model | Модель (`qwen2.5:14b`, `gpt-4o-mini`, ...) |
|
||||
| generation_time_ms | Время генерации |
|
||||
| prompt_hash | SHA-256 промпта (для дедупликации) |
|
||||
| valid | boolean — прошёл ли валидацию с первого раза |
|
||||
| retry_count | Сколько retry потребовалось |
|
||||
| questions_generated | Сколько вопросов вернул |
|
||||
| Поле | Тип | Описание |
|
||||
| - | - | - |
|
||||
| llm_model | varchar | Модель (`qwen2.5:14b`, `gpt-4o-mini`, ...) |
|
||||
| prompt_hash | varchar | SHA-256 промпта (для дедупликации) |
|
||||
| generation_time_ms | integer | Время генерации в мс |
|
||||
| valid | boolean | Прошёл ли валидацию с первого раза |
|
||||
| retry_count | integer | Сколько retry потребовалось |
|
||||
| questions_generated | integer | Сколько вопросов сгенерировано |
|
||||
| raw_response | text, nullable | Сырой ответ LLM (опционально, для отладки) |
|
||||
|
||||
Периодически анализируем: `% валидных ответов по модели`. Если ниже 80% — менять промпт или модель.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user