Files
elmer/.github/copilot-instructions.md
T

4.6 KiB

Правила для GitHub Copilot

1. Коммит после каждой правки

После любого изменения кода (исправление бага, рефакторинг, добавление фичи) — сразу делать коммит с осмысленным сообщением:

git add -A && git commit -m "краткое описание" && git push origin master
  • Без накопления изменений
  • Без "потом закоммичу"
  • Один коммит = одна правка

2. При деплое ВСЕГДА повышать версию

Перед каждым деплоем APK на сервер — инкрементировать патч-версию в android/app/build.gradle.kts:

versionName = "0.42.0-dev"  →  versionName = "0.43.0-dev"

Процедура

  1. Открыть android/app/build.gradle.kts
  2. Увеличить номер в versionName (только патч, Z в X.Y.Z-dev)
  3. Закоммитить с сообщением "bump vX.Y.Z-dev"
  4. Затем — сборка и деплой

Пример

Было: versionName = "0.42.0-dev"
Стало: versionName = "0.43.0-dev"

3. Формат коммитов

  • fix: ... — исправление бага
  • feat: ... — новая фича
  • refactor: ... — переработка кода
  • bump: ... — повышение версии
  • docs: ... — документация

4. Контекст проекта (РЕЗЮМЕ для нового чата)

Что это

elmAI — Android-приложение + Python-сервер для диагностики авто через ELM327.

Текущая версия

v0.47.0-dev (APK: https://obdai.ru/elmer.apk)

Репозитории

Деплой

# ВСЕГДА сначала bump версии в android/app/build.gradle.kts!
cd /home/naeel/elmer/android && git add -A && git commit -m "..." && git push origin master
cd /home/naeel/elmer && tar czf /tmp/android-src.tar.gz --exclude='.git' --exclude='build' --exclude='.gradle' android/
scp -i ~/.ssh/naeel_vm_id_ed25519 /tmp/android-src.tar.gz naeel@5.172.178.213:/tmp/
ssh -i ~/.ssh/naeel_vm_id_ed25519 naeel@5.172.178.213 \
  "cd /opt/elmer && rm -rf android && tar xzf /tmp/android-src.tar.gz && \
   cd android && gradle wrapper --gradle-version 8.7 && \
   export ANDROID_SDK_ROOT=\$HOME/android-sdk && \
   ./gradlew clean assembleDebug && \
   cp app/build/outputs/apk/debug/app-debug.apk /opt/elmer/web/static/"

Структура проекта

elmer/
  android/          — Android-приложение (Kotlin)
    app/src/.../elm/  — ElmProtocol.kt, ElmChecker.kt
    app/src/.../ui/   — MainActivity.kt
  api/              — Flask API (Python)
  brain/            — LLM-клиент (Python)
  obd/              — ELM-протокол (Python)
  doc/              — Документация, сессии
  web/              — Flask web, статика

Ключевые файлы

  • android/app/build.gradle.kts — versionName (менять при КАЖДОМ деплое)
  • android/.../elm/ElmProtocol.kt — стейт-машина AndrOBD (init, sendCommand)
  • android/.../elm/ElmChecker.kt — checkDevice, checkEcu, scanDtc
  • android/.../ui/MainActivity.kt — UI (~470 строк, надо разбить)

Что уже исправлено (сессия 2026-06-06)

  • ELM v1.5 совместимость (init без ретраев, skip v2-команд)
  • Статус-строка: append вместо overwrite
  • BT-подключение: connect() идемпотентный
  • Все таймауты сокращены (2000-3000мс вместо 5000-10000мс)

Что НЕ сделано (TODO)

  • Разбить MainActivity.kt (~470 -> <=200 строк)
  • Разбить ElmChecker.kt (~270 -> <=200 строк)
  • Подробные комментарии перед функциями
  • Полевой тест на машине

Важные правила

  • ELM327 v1.5 — фейк (клоны v1.0/v1.4), НЕ слать ATAT1/AT@1/AT@2/ATST
  • Все статусы через appendStatus("\n..."), не tvStatus.text =
  • Таймер инита макс 14 секунд (было 88)
  • Подробности: doc/session-2026-06-06.md