# Задание: аудит проекта elmAI на баги и уязвимости ## Контекст elmAI — Android-приложение + Python-сервер для диагностики авто через ELM327. Текущая версия: v0.70.0-dev, ветка dynamic-tests. Уже было найдено и исправлено ~15 багов, но гарантии что всё чисто — нет. ## Что анализировать Проверь код на: 1. Гонки потоков (Android: несколько потоков работают с UI и BT одновременно) 2. Утечки ресурсов (BluetoothSocket, SQLite-соединения, таймеры) 3. NPE / краши (особенно при отсутствии Bluetooth, ELM, интернета) 4. Логические ошибки (состояния кнопки-трансформера, порядок инициализации) 5. Сервер: SQL-инъекции, валидация входных данных, таймауты, OOM 6. Потерю данных (динамические тесты, история, офлайн-режим) ## Какие файлы читать ### Android (максимально критичные) 1. `android/app/src/main/java/ru/elmer/client/ui/MainActivity.kt` — главный файл, стейт-машина, UI 2. `android/app/src/main/java/ru/elmer/client/elm/ElmChecker.kt` — BT-подключение, DTC, ЭБУ 3. `android/app/src/main/java/ru/elmer/client/script/DynamicCollector.kt` — сбор 12 PID 250мс 4. `android/app/src/main/java/ru/elmer/client/script/ScriptRunnerService.kt` — фоновая диагностика 5. `android/app/src/main/java/ru/elmer/client/server/ServerClient.kt` — HTTP к серверу 6. `android/app/src/main/java/ru/elmer/client/db/SessionDb.kt` — локальная БД ### Сервер 7. `api/routes.py` — эндпоинты (script, upload, chat, ping) 8. `api/db.py` — SQLite-схема и миграции 9. `api/scripts.py` — скрипты L0/L1/L2/dynamic 10. `brain/prompts.py` — SYSTEM_PROMPT, DYNAMIC_PROMPT 11. `brain/client.py` — HTTP-клиент к LLM ## Что УЖЕ исправлено (не трать время) - Двойной вызов checkLlm/checkEcu - setIndicator не в UI-потоке - Кнопка СТОП не работала - ECU не зеленел после сканирования - Дублирование данных при отправке dynamic_samples - elmChecker переиспользуется между операциями - 12 PID захардкожены (не дёргаем сервер) - Диагноз сохраняется в локальную БД - Миграции ALTER TABLE для старых БД - deploy.sh на master вместо fat-client ## Куда сохранить результат Создай файл `doc/audit-2026-06-07.md` с отчётом. Формат: ``` ## Найдено ### 🔴 Критичные - описание бага, файл, строка, как исправить ### 🟡 Средние ... ### 🟢 Косметика ... ```