7.2 KiB
7.2 KiB
Морда elmAI v2
Новая архитектура UI. Обсуждено 7 июня 2026.
Макет
┌──────────────────────────────────────────┐
│ 🔧 elmAI v?.?.? │
│ 📡 Сервер ● 🔌 ELM ● 🚗 ЭБУ ● 🧠 LLM ● │ иконки + светофоры
├──────────────────────────────────────────┤
│ [ ОШИБКИ / ДИАГНОСТИКА / СТАРТ / СТОП ] │ одна кнопка
├──────────────────────────────────────────┤
│ │
│ поле вывода результатов │
│ │
├──────────────────────────────────────────┤
│ [📋 История] │
├──────────────────────────────────────────┤
│ [____________________________] [➤] │ поле ввода + кнопка
└──────────────────────────────────────────┘
Иконки и светофоры
Четыре иконки в строке под версией. Справа от каждой — цветной индикатор.
| Иконка | Текст | 🟢 Зелёный | 🟡 Жёлтый | 🔴 Красный |
|---|---|---|---|---|
| 📡 | Сервер | ping < 3с | проверка... | нет связи |
| 🔌 | ELM | BT + ATI ok | подключение... | нет ELM |
| 🚗 | ЭБУ | 0100 ответил | — | нет связи с ЭБУ |
| 🧠 | LLM | ping-llm ok | проверка... | нет доступа |
- Жёлтый — только на время проверки
- LLM проверяется только если Сервер зелёный
- ЭБУ проверяется только если ELM зелёный
- Тап по иконке — перепроверка. Сбрасывает цвет на жёлтый, запускает проверку заново.
Таймауты
- ELM: 2 попытки BT-подключения по ~4с = макс 8с → 🔴
- Сервер: HTTP GET
/api/v1/ping, таймаут 3с → 🔴 - LLM: HTTP GET
/api/v1/ping-llm, таймаут 5с → 🔴 (только если Сервер 🟢) - При тапе на иконку проверка запускается немедленно, без задержек.
Стартовый сценарий
- Открыли приложение → все индикаторы 🟡 или 🔴
- ELM 🟡 — пробуем подключиться (8с макс) → 🟢 или 🔴
- Сервер 🟡 — ping (3с) → 🟢 или 🔴
- Если Сервер 🟢 → LLM 🟡 — ping-llm (5с) → 🟢 или 🔴
- Если ELM 🟢 → ЭБУ — пробуем
0100→ 🟢 или 🔴
После первого цикла индикаторы не обновляются автоматически — только по тапу.
Кнопка-трансформер
Одна широкая кнопка. Меняет текст, цвет и действие в зависимости от этапа.
🔴 [⚠️ ОШИБКИ] — начальное состояние
↓ тап
сканирование DTC (03 + 07)
↓
🔵 [🔍 ДИАГНОСТИКА] — ошибки считаны
↓ тап
ЕСЛИ сервер 🟢 → запрос параметров ЭБУ → отправка на сервер → LLM-анализ → вывод
ЕСЛИ сервер 🔴 → пояснение в выводе: «Сервер недоступен. Сделайте тест.»
↓
🟢 [▶ СТАРТ] — готов к динамическому тесту
↓ тап
подсказка в выводе: «Газ до 3000, 3-4с, сброс. → СТОП»
запись 12 PID каждые 250мс
↓
🔴 [⏹ СТОП] — запись идёт
↓ тап
запись остановлена, данные в памяти
вывод: «Записано N отсчётов. ➤ для отправки.»
↓
🟢 [▶ СТАРТ] — можно повторить тест
- После СТОП можно снова нажать СТАРТ — новый тест, старые данные сохраняются.
- Отправка данных — не кнопкой, а через ➤ в поле ввода.
Поле вывода
- ScrollView, моноширинный шрифт
- После done — кнопка «✕ Закрыть» (сворачивает вывод, возвращает все кнопки)
- После Share в истории — возврат в приложение (стандартное поведение Android)
Поле ввода + кнопка ➤
2 строки, всегда активно. Плейсхолдер: «Что беспокоит? Чем подробнее — тем лучше».
Кнопка ➤ справа:
- Обычный режим: текст из поля → отправка на сервер (
/api/v1/chat) → сервер спрашивает LLM → ответ в вывод - После СТОП: накопленные данные теста → отправка на сервер (
/api/v1/session/upload) + текст (если есть) → сервер анализирует через LLM → ответ в вывод - Ответ → в поле вывода
История
- Кнопка «📋 История»
- Список последних 20 сессий (дата, заголовок, статус загрузки)
- Выбор → диагноз во всплывающем окне
- Кнопка «📤 Поделиться» → системный Share Sheet (Telegram, WhatsApp, Gmail...)
- После Share — возврат в наше приложение
Что удаляется
- Кнопки «📡 Сервер», «🔌 ELM», «🚗 ЭБУ» как отдельные — заменены на иконки со светофорами
- Кнопки «⏱ На месте», «🚗 В движении» — всё через одну кнопку-трансформер
tvDtcStatus(«Сначала считай ошибки») — не нуженcbFullMode(чекбокс полной диагностики) — всегда полнаяtvPrompt(оверлей) — не нуженbtnDynStart— не нужен
Серверные изменения
Ничего нового — всё уже есть:
/api/v1/ping✅/api/v1/ping-llm✅/api/v1/chat✅/api/v1/session/uploadсdynamic_samples✅