# Инструкция для Copilot — проект elmAI > Последнее обновление: 31 мая 2026 · v0.36.0-dev ## Репозитории | Репо | Назначение | Хостинг | |------|-----------|---------| | `elmer/` (этот) | Сервер Python/Flask | gitea.services.ngcloud.ru/Nail/elmer | | `elmer/android/` | Android-приложение Kotlin | github.com/Repinoid/elmer-android | ## Деплой ### Сервер (obdai.ru, 5.172.178.213) - Код: `/opt/elmer` (git clone gitea) - Ветка: `master` (по умолчанию) - Деплой: `ssh obdai.ru "cd /opt/elmer && git pull && sudo systemctl restart elmer"` - Сервис: `gunicorn -w 4 -b 127.0.0.1:8000 web.app:app` - Прокси: nginx :443 → :8000 - **APK отдавать напрямую через nginx, НЕ через Flask/gunicorn:** `location = /elmer.apk { alias /opt/elmer/web/static/app-debug.apk; }` ### APK - Сборка: **автоматически GitHub Actions** при пуше в master - Деплой: CI сам заливает APK на сервер (`appleboy/scp-action`) - Ссылка: `https://obdai.ru/elmer.apk` → nginx отдаёт напрямую `web/static/app-debug.apk` ### Версионирование - APK: `android/app/build.gradle.kts` → `versionName` - Сайт: `web/templates/index.html` (синхронизировать вручную) - Документация: в заголовках `.md` файлов ## Правила работы 1. **ЕСЛИ в диалоге содержится ВОПРОС в любой форме — только ответить. НИЧЕГО НЕ ПРЕДПРИНИМАТЬ.** Не писать код, не редактировать файлы, не коммитить, не деплоить. Только прямые императивы («сделай», «исправь», «напиши», «внеси», «задеплой») — команда к действию. 2. **Не выдумывать инфраструктуру.** Никаких Docker, Kubernetes. Всё на голом железе. 3. **Читать документацию перед действиями.** `doc/architecture.md` — канонический источник. 3. **Не редактировать отчёты Опуса.** `doc/opus-review*.md` — только для чтения. 4. **Ключи и токены:** LLM-ключ только на сервере (`config.yaml`), НЕ в APK. `X-Api-Key` приложения — через `BuildConfig.API_KEY` из `local.properties`. 5. **Git:** `elmer/` и `elmer/android/` — отдельные репо, отдельные коммиты. 6. **Ветки:** `master` — продакшен, `opus-fixes` и др. — для правок. Вливать в master когда готово. 7. **После правок:** коммит + пуш + (если сервер) деплой через SSH. 8. **Версия:** менять в трёх местах — `build.gradle.kts`, `index.html`, доки. 9. **Документировать изменения** в `doc/history/YYYY-MM-DD.md` после каждого сеанса работы. Формат: 🔴/🟡/🟢 для приоритета, по файлам. ## Структура сервера ``` elmer/ ├── api/ # REST, БД, скрипты, парсер ├── brain/ # LLM-клиент, промпты ├── obd/ # ELM327 стейт-машина ├── web/ # Flask, шаблоны, статика (APK) ├── android/ # Android-приложение (отдельный репо) ├── doc/ # Документация ├── config.yaml # LLM API key, порты └── run.py # Локальный запуск ```