Files
elmer/doc/audit-prompt.md
T

64 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Задание: аудит проекта 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` с отчётом.
Формат:
```
## Найдено
### 🔴 Критичные
- описание бага, файл, строка, как исправить
### 🟡 Средние
...
### 🟢 Косметика
...
```