# Начало работы


## Быстрый старт 🚀

Для работы приложения необходима версия Python не ниже `3.8`

### Запуск

Запустите файл `run.cmd` и интерфейс тестирования будет доступен по адресу `localhost:8000`

Для доступа к тесту с других компьютеров используйте строку `Тест работает по адресу ...` на стартовой странице теста

### Редактирование

Для изменения вопросов редактируйте файл `questions.json`, для изменения списка студентов редактируйте файл `students.json`

После изменений перезапустите файл `run.cmd`


## Ручное управление 🎡

### Установка

Для работы приложения необходима версия Python не ниже `3.8`

Для установки зависимостей в PowerShell из папки с системой выполнить

```PowerShell
pip install -r requirements.txt
```

### Запуск

В PowerShell выполнить скрипт запуска системы

> Необходимо находиться в папке со скриптом, при необходимости перейти туда командой `cd`

```PowerShell
python run.py
```

Должны увидеть в PowerShell текст, заканчивающийся следующим

```PowerShell
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
```

> Из этого текста запоминаем порт — это число после двоеточия, в данном случае `8000`

На головном компьютере интерфейс будет доступен по адресу `localhost:8000`


Для корректного запуска теста на остальных компьютерах локальной сети необходимо узнать IP-адрес головного компьютера в локальной сети с помощью PowerShell

```PowerShell
Get-NetIPAddress
# (Get-NetIPAddress | Where-Object {$_.AddressState -eq "Preferred" -and $_.ValidLifetime -lt "24:00:00"}).IPAddress # не тестировал

IPAddress         : 123.32.43.54
InterfaceIndex    : 27
InterfaceAlias    : Подключение по локальной сети* 1
AddressFamily     : IPv4
Type              : Unicast
PrefixLength      : 16
PrefixOrigin      : WellKnown
SuffixOrigin      : Link
AddressState      : Tentative
ValidLifetime     : Infinite ([TimeSpan]::MaxValue)
PreferredLifetime : Infinite ([TimeSpan]::MaxValue)
SkipAsSource      : False
PolicyStore       : ActiveStore
```


В файле `gui/main.js` заменить все `localhost` на полученный ip-адрес, например, `123.32.43.54`, чтобы все запросы выполнялись к головному компьютеру


### Доступ к тесту

Для доступа к тесту с компьютера в локальной сети перейти по URL такого вида `ip-адрес:порт`, например, `123.32.43.54:8000`


## Возможные проблемы 🔧

### Не открывается страница в браузере

В консоли, которая отвечает за запуск приложения, (окно, которое открылось после запуска файла `run.cmd`) должно быть выведено сообщение об ошибке

В случае, если приложение не запустилось из-за ошибки синтаксиса в JSON-файлах `questions.json` или `students.json`, то в последней строке сообщения об ошибке будет указано, что именно в этих файлах не так, например, `json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 18 column 9 (char 523)`

В случае, если приложение не запустилось из-за отсутсвия обязательных полей в JSON-файлах `questions.json` или `students.json`, то в последней строке сообщения об ошибке будет указано, что именно в этих файлах не так, например, `KeyError: 'answer'`

### Проверка корректности вопросов

Корректность вопросов на предмет 1) уникальности идентификаторов, 2) наличия правильного ответа среди вариантов ответа можно проверить кнопкой `Проверить вопросы 🧐` на стартовой странице теста