This commit is contained in:
2026-10-09 19:48:52 +07:00
parent 9d259e2151
commit 9a5fcce8cc
11 changed files with 522 additions and 14 deletions
+84 -1
View File
@@ -61,6 +61,75 @@ make dev-user
По умолчанию создаётся пользователь `dev@example.com` с паролем `dev123456`.
Для изменения используйте `DEV_USER_EMAIL` и `DEV_USER_PASSWORD`.
## Автономная площадка (ED-029, этапы 1–2)
`venue/` — окружение для проведения игры на площадке без интернета.
Локальная разработка описана выше и запускается отдельно.
Из корня workspace запустите:
```sh
make venue
```
Первый запуск с интернетом сам создаёт настройки и случайные секреты в
`venue/.env`, готовит образы, запускает миграции и создаёт организатора.
Повторные запуски используют готовое окружение без интернета.
Email и пароль для входа указаны в `VENUE_USER_EMAIL` и `VENUE_USER_PASSWORD`
в `venue/.env`; существующий файл настроек не перезаписывается.
Аккаунт организатора при запуске синхронизируется с этими значениями.
После изменения кода обновите площадку, пока интернет доступен:
```sh
make venue-update
```
Сайт доступен по `http://localhost:8088`; API и материалы обслуживаются тем же
прокси. Для подключения по LAN задайте `VENUE_BIND_IP=0.0.0.0` и
`APP_BASE_URL=http://<постоянный-IP-ноутбука>:8088` в `venue/.env`, затем
повторите `make venue`. Прежние домены и доверенный HTTPS
требуют отдельной настройки DNS и сертификатов на этапе 3.
Образы приложения, мигратора и прокси готовятся заранее. Runtime запускается
без сборки и скачивания; приложение, база и RustFS подключены только к
внутренней Docker-сети. Прокси дополнительно подключён к сети публикации порта.
База и RustFS сохраняются в именованных томах.
Миграции Goose выполняются до старта приложения. Для остановки без потери данных:
```sh
docker compose -f venue/docker-compose.yml --env-file venue/.env down
```
Не используйте `down -v`: это удаляет данные. После изменений кода или миграций
выполните `make venue-update`, пока интернет доступен. Секреты, сборка,
сертификаты и пакеты игры игнорируются Git в `venue/`.
`APP_MODE=venue` отключает SMTP, фоновые письма участия/отзывов и внешний webhook
регистрации. Аккаунты готовятся через bootstrap; почтовая регистрация аккаунта
и сброс пароля возвращают явную ошибку без изменения данных. Команды создаёт
организатор на странице игры; участие подтверждается по существующим правилам:
при создании в последние 24 часа до игры или при первом игровом действии.
Для дополнительных операторов используйте отдельные локальные email
и пароли в `.env` и снова выполните `make venue` (старые аккаунты сохраняются).
Используйте только тестовые игры до реализации возврата результатов онлайн.
Проверки для разработчика находятся в `tests/venue/` и не нужны для запуска
площадки. `deploy.py` проверяет сценарии запуска без Docker; `smoke.py` проверяет
работающее окружение и создаёт тестовый сценарий, игру, команду и материал через API:
```sh
python3 tests/venue/deploy.py
python3 tests/venue/smoke.py
docker compose -f venue/docker-compose.yml --env-file venue/.env down
docker compose -f venue/docker-compose.yml --env-file venue/.env up -d --no-build --pull never
python3 tests/venue/smoke.py --verify
```
Последняя команда проверяет ранее созданные записи и файл после перезапуска.
Тестовые данные остаются в локальной базе; повторное создание запускайте только
когда нужен новый набор. Дождитесь ответа `/api/test/ping` перед проверкой.
## Проверки перед изменениями
Сервер:
@@ -93,12 +162,26 @@ make publish MSG="Исправить подсчёт ходов в игре"
```
Команда вызывает локальные build-команды репозиториев, создаёт коммит с
указанным сообщением и выполняет `git push`. Для одной только сборки используйте:
указанным сообщением и выполняет `git push`.
Общая команда собирает бэкенд один раз и сохраняет артефакты в обе папки:
`prod/` и `venue/`. Обе используют `backend/evening_detective_server`,
`frontend/dist/` и `migrations/`; Compose называется `docker-compose.yml`,
образ бэкенда описан в `Dockerfile.backend`. Фронтенд собирается отдельно для
каждого окружения: production сохраняет текущие Vite-настройки, venue использует
API через свой прокси (`VITE_API_URL=/.`). Локальные Goose и SQL подготовки
аккаунта лежат в `venue/backend/`.
Для сборки артефактов обоих окружений используйте:
```sh
make build
```
`make prod-build` выполняет ту же общую сборку. `make venue-update` вызывает её
и дополнительно подготавливает Docker-образы для автономного запуска. Команды
обновляют только генерируемые артефакты в `prod`; конфигурация `prod` не меняется.
## Окружение и секреты
Файлы `.env` предназначены только для локальных значений и не коммитятся.