93 lines
3.9 KiB
Markdown
93 lines
3.9 KiB
Markdown
# Alabuga Gamification Platform
|
||
|
||
Проект реализует прототип геймифицированного модуля для кадровой системы «Алабуги». Мы создаём космический лор, ранги, миссии, журнал событий и магазин артефактов. Репозиторий содержит backend на FastAPI (Python 3.13) и фронтенд на Next.js (TypeScript).
|
||
|
||
## Содержимое репозитория
|
||
|
||
- `backend/` — FastAPI, SQLAlchemy, Alembic, бизнес-логика геймификации.
|
||
- `frontend/` — Next.js с SSR, дизайн в космической стилистике.
|
||
- `scripts/` — служебные скрипты (сидирование демо-данных).
|
||
- `docs/` — документация, дополнительный лор.
|
||
- `docker-compose.yaml` — инфраструктура проекта.
|
||
|
||
## Быстрый старт в Docker
|
||
|
||
1. Установите Docker и Docker Compose.
|
||
2. Скопируйте пример конфигурации и при необходимости измените значения:
|
||
```bash
|
||
cp backend/.env.example backend/.env
|
||
cp frontend/.env.example frontend/.env
|
||
```
|
||
3. Запустите окружение:
|
||
```bash
|
||
docker compose up --build
|
||
```
|
||
4. После запуска будут доступны сервисы:
|
||
- API: http://localhost:8000 (документация Swagger — `/docs`).
|
||
- Фронтенд: http://localhost:3000.
|
||
|
||
Docker Compose автоматически переопределяет `ALABUGA_SQLITE_PATH=/data/app.db`, чтобы база сохранялась во внешнем volume. Для локального запуска вне Docker оставьте путь `./data/app.db` из примера.
|
||
|
||
## Локальная разработка backend
|
||
|
||
```bash
|
||
cd backend
|
||
python -m venv .venv
|
||
source .venv/bin/activate
|
||
pip install -r requirements-dev.txt
|
||
|
||
# подготовьте переменные окружения (однократно)
|
||
cp .env.example .env
|
||
|
||
# применяем миграции
|
||
alembic upgrade head
|
||
|
||
# создаём демо-данные (команда выполняется из корня репозитория)
|
||
cd ..
|
||
python -m scripts.seed_data
|
||
cd backend
|
||
|
||
# Запуск API
|
||
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
||
```
|
||
|
||
## Локальная разработка фронтенда
|
||
|
||
```bash
|
||
cd frontend
|
||
npm install
|
||
cp .env.example .env
|
||
npm run dev
|
||
```
|
||
|
||
## Пользовательские учётные записи (сидированные)
|
||
|
||
| Роль | Email | Пароль |
|
||
| --- | --- | --- |
|
||
| Пилот | `candidate@alabuga.space` | `orbita123` |
|
||
| HR | `hr@alabuga.space` | `orbita123` |
|
||
|
||
## Тестирование
|
||
|
||
```bash
|
||
cd backend
|
||
pytest
|
||
```
|
||
|
||
## Основные сценарии, реализованные в бэкенде
|
||
|
||
- Авторизация по email/паролю с JWT.
|
||
- Получение профиля пилота со списком компетенций и артефактов.
|
||
- Получение миссий, отправка отчётов, модерация HR.
|
||
- Начисление опыта, маны и повышение ранга по трём условиям из ТЗ.
|
||
- Журнал событий, экспортируемый через API.
|
||
- Магазин артефактов с оформлением заказа.
|
||
- Админ-панель для HR: создание миссий, очередь модерации, список рангов.
|
||
|
||
## План развития
|
||
|
||
- Реализовать фронтенд-интерфейс всех экранов.
|
||
- Добавить экспорт CSV и агрегаты аналитики в API.
|
||
- Настроить CI/CD и автотесты во фреймворках фронтенда.
|
||
- Расширить документацию в `docs/` (описание лора, сценарии e2e).
|