diff --git a/SETUP.md b/SETUP.md new file mode 100644 index 0000000..bbb5ab3 --- /dev/null +++ b/SETUP.md @@ -0,0 +1,79 @@ +# Перенос проекта на другую машину + +Репозиторий содержит **код, конфиг 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 +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 |