# EngLab — как пользоваться

Актуально для 0.4.14-alpha · 5 ноября 2026. Сервис находится в разработке; доступ тестовый. Правообладатель — Фиалковский Максим Евгеньевич. Статус и версия показаны на страницах приложения.

## Вход и начало практики

В серверной версии нужен аккаунт. Регистрация обычно доступна по приглашению администратора. Самостоятельное обучение и сопровождение преподавателя — разные режимы: преподаватель назначается специальным приглашением, существующий ученик может активировать его в «Прогрессе».

На главной показан персональный следующий шаг и причина выбора. Он учитывает действующий фокус преподавателя, повторения и учебный прогресс. Основные разделы находятся в шапке, остальные — в меню «Все модули».

- Курс: 57 уроков A1–C1. Мини-тест от 80% позволяет подтвердить прохождение. Попытка, объяснения и черновик ввода восстанавливаются после перезагрузки. Новые ошибки могут пометить тему на повторение; первое прохождение остаётся в истории.
- Словарь: поиск EN/RU, наборы/статусы и страницы по 25/50/100 слов. Можно потренировать до 50 показанных слов. Оценки «Забыл / С трудом / Вспомнил» — самооценки; они не входят в точность упражнений. Повторный клик не выдаёт ту же награду заново.
- Тесты: короткая практика с мгновенной проверкой. Экзамен: до 100 заданий выбранного уровня, одна минута общего времени на задание, проходной балл 60%. Определение уровня — 40 заданий с ориентиром сложности; результат не подтверждает квалификацию и не меняет настройки без твоего действия.
- Экзамен сохраняет ответы и открывается на текущем задании после перезагрузки. Можно возвращаться к предыдущим вопросам, пропускать и продолжать с главной; таймер идёт даже вне страницы. Разбор и история доступны после завершения. Пропуски снижают балл, но не записываются в дневник как ошибки. За сдачу уровня начисляется 20 базовых XP один раз в день по UTC.
- Говорение: фонетика, повтор за озвучкой, ролевые упражнения и голосовой чат. Распознавание и ИИ могут ошибаться.
- Истории RPG: короткий эпизод из трёх успешных ходов с финалом или свободное приключение. Полный журнал сохраняется; у сюжетных цитат и игровых изменений есть источники. При отказе обработки действия можно исправить черновик или повторить запрос явно.
- Дневник: локальный черновик и незавершённая правка, поиск по всей истории, страницы и восстанавливаемый архив. Предложения ИИ требуют проверки. Повтор с подсказкой, с неизвестным источником или по предложению ИИ не выдаётся за самостоятельный ответ учебного банка.

## Настройки

Кнопка в шапке открывает единый диалог на любой странице. Вкладки переключаются мышью, стрелками, Home/End; Escape закрывает окно. Изменения сохраняются отдельной кнопкой своего раздела. Успешное сохранение оставляет сообщение в окне; его закрытие — отдельное действие.

**Озвучка.** Примеры и ответы ИИ синтезирует Kokoro. Выбери голос Kokoro и скорость. Кнопка «Проверить выбранный голос» использует текущие поля. Ошибка подключения отображается на экране. Распознавание микрофона настраивается отдельно.

Распознавание браузера может использовать сервис его производителя. Режим платформы отправляет аудио серверному сервису распознавания. Микрофон запрашивается в учебном модуле при записи; изменение настройки само по себе запись не запускает. Состав голосовых сервисов и размещение определяет оператор — приложение не гарантирует полную приватность произвольного развёртывания.

**ИИ.** Общую конфигурацию задаёт администратор. Персональные поля доступны только с его разрешения. Поддерживаются OpenAI Chat Completions, OpenAI Responses, Anthropic Messages, Gemini generateContent и Ollama native. Адрес должен быть разрешён администратором. Название стандарта не гарантирует доступность конкретной модели.

Сохранённый API-ключ не возвращается в форму. Пустое поле сохраняет ключ только для прежнего origin и стандарта; при смене провайдера введи новый. Возврат к ИИ платформы удаляет персональный ключ. Введённый ключ очищается при закрытии/уходе со страницы, не сохраняется в браузерный прогресс. «Сохранить подключение ИИ» не вызывает модель; реальные обращения могут расходовать токены и средства провайдера. Если подтверждение действия не пришло, обнови сведения перед повтором. Подробности: `README_ИИ.md`.

**Обучение.** Целевая удерживаемость FSRS определяет частоту повторений. Исходное значение — 90%. Сохраняется отдельно от голоса и ИИ, не является обещанием результата.

**Аккаунт.** Показаны логин и серверный остаток токенов, есть обновление и выход. При ошибке выхода приложение сообщает, что он не подтверждён. До выхода можно скачать резерв в дневнике.

## Преподаватель-аналитик

Преподаватель видит агрегаты практики, без личных текстов дневника, аудио и журнала RPG. Он выбирает фокус, уроки, слова и виды практики. Черновики изолированы по ученику. При конфликте с другой сессией нужно обновить данные, сравнить действующий фокус и явно применить черновик. История доступна целиком по страницам; ИИ-сводка ничего не публикует автоматически. Инструкция: `README_ПРЕПОДАВАТЕЛЬ.md`.

## Прогресс и резерв

После входа рабочая копия в браузере синхронизируется с сервером. Конфликт версии не перезаписывается молча: появится сообщение и возможность скачать несохранённые изменения. Перед импортом скачай текущую копию.

В дневнике доступны JSON-резерв прогресса (включая архив) и Markdown активных записей. Локальные черновики дневника/преподавателя не входят в резерв. API-ключи и серверные назначения не выдаются через обычный экспорт. Для восстановления серверных ключей нужны отдельные защищённые резервные копии БД и ключа шифрования; см. `README_ИИ.md`. Не удаляй каталог данных при обновлении.

## Запуск и обновление

Настрой `.env`, администратора и публичный адрес по `README_ПИЛОТ.md`, затем из папки проекта:

```
docker compose up -d --build
```

Текущий Compose публикует Caddy на 80/443; приложение, Kokoro и Whisper находятся во внутренней сети. Открой адрес DOMAIN из `.env`. Рабочая SQLite в Compose — `./data/englab.db`. Не публикуй файл БД, `.env` и файл ключа шифрования.

HTML/CSS/JS монтируются из проекта только для чтения; после их правки обнови страницу. Изменение Python-кода или зависимостей применяй пересборкой:

```
docker compose up -d --build englab
```

Проверить состояние: `docker compose ps`. Логи: `docker compose logs -f englab`. Остановить стек: `docker compose down`; данные в каталоге `data` остаются. Одна сборка образа рабочий сервис не перезапускает.

При открытии `index.html` через file:// часть упражнений работает на localStorage, без серверных аккаунтов, синхронизации и сопровождения преподавателя. Серверные голосовые прокси требуют бэкенда. Простой статический HTTP-сервер не заменяет API EngLab.

Проверка версий, состояния и обработки данных: `about.html`, `privacy.html`. Оставшаяся работа и пределы проверок — `PROJECT_STATUS.md`.
