docs: морда v2 — полное описание новой архитектуры UI

This commit is contained in:
Repinoid
2026-06-07 15:54:48 +04:00
parent 9762640abb
commit 4f90e3eadf
2 changed files with 238 additions and 0 deletions
+113
View File
@@ -0,0 +1,113 @@
# Новая морда elmAI — v0.57.0+
> Проект из morda.txt, обсуждение 7 июня 2026
## Макет
```
┌─────────────────────────────────────┐
│ 🔧 elmAI v0.57.0 │
│ [📡●] [🔌●] [🚗●] [🧠●] │ иконки + светофоры (тап = перепроверка)
├─────────────────────────────────────┤
│ [ ОШИБКИ / ДИАГНОСТИКА / СТАРТ / СТОП ] │ одна кнопка-трансформер
├─────────────────────────────────────┤
│ │
│ поле вывода │ ScrollView
│ │
├─────────────────────────────────────┤
│ [📋 История] │ кнопка
├─────────────────────────────────────┤
│ [________________________] [➤] │ поле ввода 2 строки + кнопка
└─────────────────────────────────────┘
```
## Светофоры
| Иконка | Текст | Зелёный | Жёлтый | Красный |
|--------|-------|---------|--------|---------|
| 📡 | Сервер | ping < 3с | проверка... | нет связи |
| 🔌 | ELM | BT + ATI ok | подключение... | нет ELM |
| 🚗 | ЭБУ | 0100 ok | — | нет связи с ЭБУ |
| 🧠 | LLM | ping-llm ok | проверка... | нет доступа |
- Жёлтый только во время проверки
- Тап по иконке → перепроверка конкретного компонента
- LLM проверяется только если Сервер зелёный
### Таймауты
- ELM: 2 попытки connect по 4с = 8с макс → красный
- Сервер: HTTP GET /api/v1/ping, таймаут 3с → красный
- LLM: HTTP GET /api/v1/ping-llm, таймаут 5с → красный
- Перепроверка при тапе: сбрасывает на жёлтый, запускает проверку
## Кнопка-трансформер
Одна кнопка, меняет текст/цвет/действие:
```
[ОШИБКИ] ──→ сканирование DTC ──→ [ДИАГНОСТИКА]
если сервер ✅ → обычный скрипт + LLM
если сервер ❌ → пояснение в выводе
[СТАРТ]
газ 3000 → сброс → [СТОП]
данные в памяти → жми ➤
```
## Поле ввода + кнопка ➤
- Всегда активно, 2 строки
- **Обычный режим**: ввёл текст → ➤ → отправка в чат с LLM
- **После СТОП**: ➤ отправляет накопленные данные теста на сервер + текст (если есть)
- После отправки → результат LLM в выводе
## История
- Кнопка, как сейчас
- Выбор записи → диагноз + 📤 Поделиться
- После Share — возврат в приложение (стандартное поведение Android)
## Flow в деталях
### 1. Запуск приложения
- Светофоры: ELM жёлтый, Сервер жёлтый, ЭБУ красный, LLM красный
- Проверка ELM (8с) → зелёный/красный
- Проверка Сервера (3с) → зелёный/красный
- Если Сервер зелёный → проверка LLM (5с) → зелёный/красный
- Если ELM зелёный → проверка ЭБУ (через 0100)
### 2. Ошибки
- Тап ОШИБКИ → scanDtc() → результат в выводе
- Кнопка → ДИАГНОСТИКА
### 3. Диагностика
- Если сервер зелёный → обычный скрипт L0/L1/L2 → LLM → вывод
- Если сервер красный → «Сервер недоступен. Сделайте тест на месте.»
- Кнопка → СТАРТ
### 4. СТАРТ
- Подсказка в выводе: «Нажмите газ, 3000 об/мин 3-4с, сбросьте. Нажмите СТОП.»
- Запись 12 PID каждые 250мс
- Кнопка → СТОП
### 5. СТОП
- Запись остановлена, данные в памяти
- Вывод: «Записано N отсчётов. Нажмите ➤ для отправки.»
- Если нужно — можно снова СТАРТ (новый тест)
- Кнопка → СТАРТ (снова)
### 6. Отправка (➤)
- Если есть данные теста → POST /api/v1/session/upload с dynamic_samples
- Если есть текст → добавляется как car_info
- LLM-анализ → результат в выводе
## Что удалить из текущего UI
- Кнопки Сервер, ELM, ЭБУ как отдельные кнопки → станут иконками
- dynamicButtons (На месте / В движении) → не нужны, всё через одну кнопку
- btnDynStart → не нужна
- CheckBox «Полная диагностика» → всегда полная
- tvDtcStatus → не нужен, всё в выводе
- tvPrompt → не нужен
+125
View File
@@ -0,0 +1,125 @@
# Морда 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`