# LearnSpace Backend — Фаза 1

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

```bash
cd backend
npm install

# 1. Скопировать и заполнить переменные окружения
cp .env.example .env

# 2. Создать базу данных в PostgreSQL
createdb learnspace

# 3. Применить миграции (создать таблицы)
npm run migrate

# 4. Загрузить тестовые вопросы
npm run seed

# 5. Запустить сервер
npm run dev
```

## API

### Auth
| Метод | URL | Тело | Описание |
|-------|-----|------|----------|
| POST | `/api/auth/register` | `{ email, password, name }` | Регистрация |
| POST | `/api/auth/login` | `{ email, password }` | Вход |
| GET  | `/api/auth/me` | — | Текущий пользователь |

### Предметы
| Метод | URL | Описание |
|-------|-----|----------|
| GET | `/api/subjects` | Список предметов |
| GET | `/api/subjects/:slug/topics` | Темы предмета |

### Сессии тестирования
| Метод | URL | Тело | Описание |
|-------|-----|------|----------|
| POST | `/api/sessions` | `{ subject_slug, mode, count, topic_id? }` | Начать тест |
| POST | `/api/sessions/:id/answer` | `{ question_id, option_id, time_spent_sec? }` | Отправить ответ |
| POST | `/api/sessions/:id/finish` | — | Завершить тест + разбор |
| GET  | `/api/sessions/:id/result` | — | Результат завершённого теста |
| GET  | `/api/sessions/history` | — | История тестов |

Все `/api/sessions/*` требуют заголовок:
```
Authorization: Bearer <token>
```

## Добавление вопросов

Создать JSON-файл в `data/` по образцу `questions-bio.json`:
```json
{
  "subject": "chem",
  "topics": [{ "name": "Органическая химия", "order": 1 }],
  "questions": [
    {
      "topic": "Органическая химия",
      "difficulty": 2,
      "text": "Текст вопроса",
      "options": ["А", "Б", "В", "Г"],
      "answer": 0,
      "explanation": "Объяснение правильного ответа"
    }
  ]
}
```
Затем повторно запустить `npm run seed`.

## Структура проекта
```
backend/
├── data/                     ← JSON с вопросами
├── src/
│   ├── server.js             ← точка входа
│   ├── middleware/auth.js    ← JWT верификация
│   ├── db/
│   │   ├── pool.js           ← соединение с PostgreSQL
│   │   ├── migrate.js        ← запуск миграций
│   │   ├── seed.js           ← загрузка вопросов
│   │   └── migrations/       ← SQL-файлы схемы
│   ├── routes/               ← маршруты
│   └── controllers/          ← бизнес-логика
└── .env.example
```
