# Морда 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с → 🔴 (только если Сервер 🟢) - При тапе на иконку проверка запускается немедленно, без задержек. ### Стартовый сценарий 1. Открыли приложение → все индикаторы 🟡 или 🔴 2. ELM 🟡 — пробуем подключиться (8с макс) → 🟢 или 🔴 3. Сервер 🟡 — ping (3с) → 🟢 или 🔴 4. Если Сервер 🟢 → LLM 🟡 — ping-llm (5с) → 🟢 или 🔴 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` ✅