# Перенос проекта на другую машину

Репозиторий содержит **код, конфиг Claude и снимок памяти**, но НЕ содержит
**данные и секреты** (база, uploads, `.env`, `node_modules`) — их переносят
отдельно, вне git (см. шаг 4 и переносной пакет).

## 0. Предустановки
- **Node.js ≥ 22** (используется встроенный `node:sqlite`; разрабатывалось на Node 24).
- **Git**.
- *(опционально)* Системный **Chrome** — для генерации учебников через `puppeteer-core`.
- *(опционально)* **MySQL / OpenSSL** — если используются внешние скрипты.
- *(опционально)* Инструменты поиска по коду: **ast-index** и **vex**.

## 1. Код
```bash
git clone <repo-url>
cd BQ-System
```

## 2. Зависимости
```bash
cd backend
npm install
```
(если в корне есть свой `package.json` — `npm install` и там)

## 3. Секреты — `.env`
```bash
cp backend/.env.example backend/.env   # затем заполнить JWT_SECRET и т.п.
```
Готовый `.env` есть в переносном пакете — можно взять его.
**Ключи ассистента (Kilo / Gemini) лежат в БД** (`app_settings`), не в `.env` — приедут вместе с базой.

## 4. Данные (из переносного пакета, вне git)
Скопировать из пакета в проект:
- `learnspace.db`  →  `backend/data/learnspace.db`
- `uploads/`       →  `backend/uploads/`
- `.env`           →  `backend/.env`

Без базы сервер поднимется на **пустой** БД (контент, пользователи и ключи ИИ отсутствуют).

## 5. База с нуля (только если нет готовой learnspace.db)
```bash
cd backend
npm run migrate          # применить миграции (создаёт схему)
npm run seed             # базовые данные
# контент — частично через скрипты:
npm run import:content
npm run import:exam-tasks
npm run index:textbooks  # RAG-индекс для ассистента
```
Полностью контент и пользователей seed-скрипты не восстановят — для «как тут» переноси готовую `learnspace.db`.

## 6. Запуск
```bash
cd backend
npm start                # http://localhost:3000
```

## 7. Память Claude
Скопировать `.claude/memory/*.md` в пользовательскую папку памяти Claude.
Инструкция и команды — в [.claude/memory/README.md](.claude/memory/README.md).

## 8. Поиск по коду (опционально)
Установить `ast-index` и `vex`, затем построить индексы:
```bash
ast-index rebuild
vex index --semantic
```

## Что НЕ переносится репозиторием (резюме)
| Объект | Где взять |
|---|---|
| `backend/data/learnspace.db` | переносной пакет (контент + пользователи + ключи ИИ) |
| `backend/uploads/` | переносной пакет (загруженные файлы) |
| `backend/.env` | переносной пакет или из `.env.example` |
| `node_modules` | `npm install` |
| ast-index / vex индексы | пересобрать на машине |
| Память Claude (юзер-папка) | `.claude/memory/` → см. README |
